1. 공공기관 표준화 지침

 

* 행정표준코드가 존재하는 경우 이를 준수해야 하며, 행정표준코드에 존재하지 않는 행정토크에 한하여 별도로 작성해야한다.

* 행정 표준용어사전에 등재된 용어를 우선적으로 사용해야하며, 행정표준 용어사전에서 제공하지 않는 용어에 한하여 별도로 작성하여야한다.

 

2. 표준용어정의서

 

항목 정의 및 작성 지침

표준용어명 영문명 영문약어명 용어 구분 용어 설명 주제 영역
           

 

표준용어명 1.엔터티,속성 등 데이터 요소의 명명에 사용될 표준용어 기재, 돔음이의어를 제외한 표준용어는 유일하도록 작성(동음이의어는 허용하나 사용 또는 작성을 최소화)
2.한글을 원칙으로 하며,언더스코어(_) 이외의 특수 문자와 공백은 사용 불가
3.숫자의 사용은 가능하나,표준용어의 직관적인 의미 파악이 간으하도록 사용 최소화
4.관용적으로 널리 알려진 영문약어에 한하여 표준용어로 사용 가능(예:URL,IP 등)
영문명 1.표준용어의 영문명으로,대문자를 사용하여 full name으로 기재
-예시) 가공식품 > PROCESS FOOD로 기재
영문약어명 1.영문 약어는 최대 6자 이내로 정의,대문자로 작성하고 불가피한 경우를 제외하고는 특수문자는 사용하지 않도록 주의
- (예시) 모음을 제외한 자음의 결합으로 영문 약어 작성 (PRICE → PRC)
- (예시) 같은 자음이 2개 이상 연속되면 1개만 선택하여 작성 (MAPPING → MPNG)
- (예시) 용어 영문명의 앞부분만 사용하여 작성 (ADDRESS → ADDR)
- (예시) 용어 영문명의 첫 글자와 마지막 글자를 조합하여 작성 (예: YARD → YD)
- (예시) 용어 영문명이 긴 경우는 첫 자음과 마지막 자음 사이에 특징 있는 자음들을 조합하여 작성 (NETWORK → NW, SOFTWARE → SW, MESSAGE → MSG)
- (예시) 용어 영문명의 발음에 따른 표기를 사용하여 작성 (예: LIGHT → LITE)
용어구분 이음동의어 관리를 위해 정의된 표준용어릐 구분을 표준어 또는 동의어 중에서 선택
용어 설명 1.표준용어의 의미나 내용을 상세히 기술
2.표준어,동의어 이외에 금칙어를 제공할 경우 금칙어 목록을 포함하여 기재할 수 있으며, 1개 용어에 대하여 다수의 금칙어가 존재할 수 있으므로 별도의 관리항목을 정의하여 사용
-예시)'휴대폰'을 표준어로 정의한 경우 '핸드폰','모바일폰'등을 금칙어로 규정
주제 영역 1.표준용어가 속한 주제영역을 기재(여러 주제 영역에서 사용 시 대표 주제 영역을 기재하거나 '공통영역'으로 기재
2.정부기능분류체계(BRM) 또는 공공기관별 자체 BRM을 참조하여 대분류 수준에 해당하는 코드 문자열을 사용하거나, 자체적인 DB단위의 약어를 정의하여 사용 가능

 

3. 표준도메인정의서

도메인명 도메인 설명 데이터 타입 데이터 길이 데이터 값 측정 단위 도메인 대분류 도메인 중분류
               
도메인명 명명된 데이터 도메인의 이름
데이터 타입 1.문자형(고정길이)는 CHARACTER,CHAR등으로 기재
2.문자형(가변길이)는 VARYING CHARACTER,VARCHAR등으로 기재
3.문자형(대규모객체)는 CLOB,BLOB등으로 기재
4.숫자형(정수)는 NUMBERIC,NUM,DECIMAL,DEC,INTEGER,INT,SMALLINT,SINT등으로 기재
5.숫자형(실수)는 FLOAT,REAL,DOUBLE PRECISION등으로 기재
6.시간형/날짜형은 DATE,TIME,DATETIME,TIMESTAMP등으로 기재
데이터 길이 1.도메인 값을 표현하기 위한 데이터의 최대 길이를 숫자로 표현
2.모든 요구사항을 수용할 수 있도록 충분히 커야하며, 정확성을 보장할 수 있을 만큼 정밀해야함
3.날짜,시작처럼 길이가 정해져 있는 경우,최대 길이를 알 수 없거나,최대 길이가 의미가 없는 경우 생략가능
데이터 값 해당 도메인이 가질 수 있는 허용 가능한 값의 집합이나 범위(최대값,최소값 등)
측정 단위 값을 측정하는 단위의 이름을 기술(예:m,kg,A,K,mol등)
도메인의 명확한 의미 이해를 위해 측정단위를 명시해야하는 경우 반드시 기술도메인 대분류
도메인 대분류 도메인 분류를 참조하여 도메인 대분류를 기재
도메인 중분류 도메인 분류를 참조하여 도메인 중분류를 기재

4. 테이블 정의서

DB명  
테이블명 테이블 유형 관련엔터티명 테이블설명 보존 기간 발생주기 최대 예상저장량 예상 발생량
               
DB명 테이블이 포함되어 있는 데이터 베이스의 이름
테이블명 1.물리적인 DB에 생성할 테이블의 이름을 의미
2.표준용어정의서를 참조하여 테이블 명명규칙을 정의하고, 해당 명명규칙에 따라 테이블명을 정의
3.1개의 엔터티가 다수의 테이블로 분리되어 구축되는 경우,일련번호를 포함 가능
테이블 유형 1.테이블의 논리적,물리적 특성에 따른 테이블 유형을 기재
 -물리적 특성으로 테이블 유형을 정의하여 기재하는 경우 : 일반 테이블, 파티션 테이블, 클러스터 테이블, 뷰 테이블 등으로 구분하여 기재
 -논리적 특성으로 테이블 유형을 정희하여 기재하는 경우 : 코드 테이블,마스터 테이블,임시 테이블,통계 테이블 등으로 구분하여 기재
*테이블명에 테이블 유형이 반영된 경우 생략 가능
관련 엔터티명 1.해당 테이블이 어떤 엔터티로부터 물리적으로 구현된 테이블인지,엔터티정의서에 기록한 엔터티명(한글)을 기재
2.여러 엔터티가 하나의 테이블로 통합되어 구현되는 경우, 관련 엔터티들을 모두 기재
테이블 설명 1.테이블의 물리적 특징에 대해 기술함
 - 파티션 테이블의 경우, 분할 조건이나 관련 특징을 기술
 -뷰 테이블의 경우,뷰를 구성하는 집합 결정 조건을 기술
보존기간 해당 테이블의 데이터를 발생시점 기준으로 얼마나 오랫동안 보존하는지 기록(월 단위 또는 년 단위로 기재)
발생주기 1.해당 테이블의 데이터가 작성되거나 수정되는 주기를 의미함
2.발생주기 종류
 - 실시간:수시로 데이터가 발생하는 온라인성 테이블
 - 일/주/월 : 하루/일주일/한달에 한 번 발생
 - 분기/반기 : 3개월/6개월에 한번 발생
 - 년 : 1년에 한번 발생
 - 기타:그 외의 경우(해당 발생 주기를 직접 기술)
3.뷰 테이블과 같이 실제 값을 가지지 않는 경우 생략
최대예상 저장량 해당 테이블의 보존기간으로 정의한 기간 동안 생성될 것으로 예측되는 최대 저장량을 저장 건수로 기술(예시:1400만건,750만건)
예상 발생량 해당 테이블의 발생 주기별로 예측 되는 신규 데이터의 평균 발생 건수(예:1000건/주,20000건/반기 등)

4. 컬럼 정의서

테이블명  
칼럼명(영문) 컬럼명(한글) 연관 엔터티명 연관 속성명 NOT NULL 데이터 타입 길이 PK정보 FK정보 제약조건 컬럼설명
                     
테이블명 해당 컬럼이 소속된 테이블의 이름
컬럼명(영문) 컬럼의 이름으로 표준용어정의서에 등록된 용어를 사용
컬럼명(한글) 해당 컬럼과 연관되는 속성의 이름과 동일하게 부여하는 것을 원칙으로 함
연관 엔터티명 1.해당컬럼이 표현하는 논리적 데이터요소인 엔터티명을 기술
2.엔터티정의서에 기록한 엔터티명으로 기술
연관 속성명 1.해당 컬럼이 표현하는 논리적 데이터요소인 속성명을 기술
2.속성정의서에 기록한 속성명으로 기술
NOT NULL여부 데이터가 생성되는 시점(INSERT)에 컬럼 값이 반드시 존재해야 하는지를 표시(Y/N)
데이터 타입 컬럼 값의 물리적 표현 방식으로 DBMS종속적인 데이터 타입의 이름을 그대로 기록
길이 해당 컬럼의 값을 표현하기 위한 데이터의 길이로 DDL문에서 지정될 데이터 길이를 DBMS 종속적인 표현으로 기술(DATE 타입과 같이 길이가 필요 없는 경우 생략)
PK정보 PK(기본키)에 참여하는 컬럼이면 PK와 숫자로 된 참여순서를 이용하여 표시하고 PK에 참여하지 않으면 생략
-예시) PK01(PK를 구성하는 컬럼 중 참여 순서가 첫번째),PK02
FK정보 해당 컬럼이 FK(외래키)제약에 참여하는 컬럼인 경우 한해, 관련 테이블 이름과 컬럼 이름을 마침표( . )로 연결하여 기술
-예시)T_CUST.CUST_ID(고객 테이블의 고객번호를 참조하는 경우)
제약조건 해당 값 영역에서 설명하는 컬럼 값의 특성 이외에,컬럼에 대해 추가적으로 명시해야할 제약조건(허용범위,구분값,기본값)등을 기술
 

 

//-- 원문출처: http://www.dba-oracle.com/t_impdp_transform_segment_attributes.htm 

//-- impdp transform=segment_attributes

//-- Oracle Database Tips by Donald BurlesonFebruary 22, 2015 


impdp transform=segment_attributes

Oracle Database Tips by Donald BurlesonFebruary 22, 2015

Question:  What does the impdp transform parameter do?  I read about thetransform=segment_attributes:n:table argument in the docs.

Answer:  Oracle data pump import (impdp) provides the transform=segment_attributes argument to allow you to change object DDL for specific objects (table, indexes), and remove just about everything from the DDL but the basic column definitions.

If the value is transform=segment_attributes:y (the default), then segment attributes (file attributes, storage parameters, tablespaces, and logging) are included in the import (impdp, with the DDL for the specified object types.

For example, if you wanted to use the default tablespace parameters for the imported DDL, you could include:

root>  impdp scott/tiger transform=segment_attributes:n:tables

This example would import only the "basic" DDL for all table DDL in the dmp file, omitting the storage clause, tablespace specification and datafiles parameters, allowing the system-wide defaults to be used.  This is useful when you don't want to have to pre-create all of the table definitions and import with ignore=y.

In another example, assume that you only wanted to omit the storage clauses for all tables:

root>  impdp scott/tiger transform=segment_attributes:storage:n

You can also use the impdp transform=segment_attributes:n is used with other arguments such as remap_tablespace  to change the tablespace names for all table in the import dmp file.  For example, the following directs the import (impdp) to ignore the existing tablespace specifications and re-map the tablespace names:

root>  impdp scott/tiger transform=segment_attributes:n remap_tablespace=users:prodts

You can also combine transform=segment_attributes parameters to perform multiple operations on the dmp file DDL. 

root>  impdp scott/tiger transform=SEGMENT_ATTRIBUTES:n:table,STORAGE:N:table



  OS 의 Oracle Account 를 획득한 경우, sqlplus 로 접속해서 ?/rdbms/admin/awrrpt.sql 을 수행하면 되겠지만, OS 계정을 사용할 수 없는 경우에도, DB User 를 사용할 수 있고, 필요한 권한이 있다면 AWR Report 를 뽑아볼 수 있다.



1. DBMS_WORKLOAD_REPOSITORY 일반


  - Oracle 에서 AWR Snapshot 관리 편의를 위해 제공하는 Package  

  - 주로 사용되는 Snapshot 관리 방법

 항목

명령어 

 AWR Snapshot

 설정 변경


 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS

 ( [RETENTION => retention_time], [INTERVAL => interval_time], [TOPNSQL => topn_sql_number] ) ;


 AWR Snapshot 

 삭제


 DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHO_RANGE

 ( LOW_SNAP_ID => snap_id, HIGH_SNAP_ID => snapid [DBID => dbid] ) ;


Baseline 

생성


 PROCEDURE create_baseline(start_snap_id  IN NUMBER,
                                      end_snap_id    IN NUMBER,

                                      baseline_name  IN VARCHAR2,

                                      dbid           IN NUMBER DEFAULT NULL,

                                      expiration     IN NUMBER DEFAULT NULL ) ;


Baseline 
이름변경


 PROCEDURE rename_baseline(old_baseline_name IN VARCHAR2,
                                        new_baseline_name IN VARCHAR2,
                                        dbid              IN NUMBER DEFAULT NULL ) ;

  - DBMS_WORKLOAD_REPOSITORY 에 대해서는 Manual 에 자세히 기술됨



2. DBMS_WORKLOAD_REPOSITORY 로 AWR Report 조회


  A. 필요한 권한 및 명령어


  - 필요권한 : DBMS_WORKLOAD_REPOSITORY 실행, select any dictionary 등 (Privilege 부족 시 ORA-06550 등 발생)     

  - DBID 등은 dba_hist_snapshot 에서 조회

 SQL> select * from dba_hist_snapshot order by begin_interval_time desc ;


  - 주로 사용되는 AWR Report 조회 방법

 항목

명령어 

 AWR Report 

 Text Format


 DBMS_WORKLOAD_REPOSITOR.AWR_REPORT_TEXT

 ( :DBID, :INST_ID, :BEGIN_SNAP, :END_SNAP ) ;


  -- 이하 참조

  FUNCTION awr_report_text(l_dbid     IN NUMBER,

                                      l_inst_num IN NUMBER,

                                      l_bid      IN NUMBER,

                                      l_eid      IN NUMBER,

                                      l_options  IN NUMBER DEFAULT 0)

  RETURN awrrpt_text_type_table PIPELINED;


 AWR Report 

 html Format


 DBMS_WORKLOAD_REPOSITOR.AWR_REPORT_HTML

 ( :DBID, :INST_ID, :BEGIN_SNAP, :END_SNAP ) ;


  -- 이하 참조


  FUNCTION awr_report_html(l_dbid     IN NUMBER,

                                      l_inst_num IN NUMBER,

                                      l_bid      IN NUMBER,

                                      l_eid      IN NUMBER,

                                      l_options  IN NUMBER DEFAULT 0)

  RETURN awrrpt_html_type_table PIPELINED;



  B. AWR Report 조회 셈풀


    B-1. html format 


  -- 실행 셈풀 : 조회



  -- 실행 셈풀 : 결과값



  --  실행 셈풀 : AWR Report <- Copy & Past 로 새로운 html 화일을 생성



    B-2. text format 


  -- 실행 셈풀 : 조회



  -- 실행 셈풀 : 결과값




//-- 이 내용은 Eegloos 의 블루오션 [BLUE OCEAN] 에서 "장땡" 님 글을 그대로 가져 왔습니다.

//-- 블루오션 원문 링크는 http://repository.egloos.com/5790800 입니다.

//-- 아래 "recover database until cancel ; " 를 수행하기 위해서는 Archive Log Mode 이여야 합니다.  

1. 현상


$ lsnrctl start
$ sqlplus "/as sysdba"

SQL*Plus: Release 11.2.0.1.0 Production on Tue Feb 18 10:24:27 2014

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> startup
ORACLE instance started.

Total System Global Area 2.6991E+10 bytes
Fixed Size                  2213976 bytes
Variable Size            1.9059E+10 bytes
Database Buffers         7784628224 bytes
Redo Buffers              145174528 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 25292
Session ID: 177 Serial number: 3


2. 확인 및 조치사항


# startup단계를 하나하나 실행하여 어디가 문제인지 확인한다.
SQL> startup nomount;
SQL> alter database mount;
SQL> alter database open; ==> 여기서 에러가 발생했다.
alter database open
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 24832
Session ID: 177 Serial number: 1

# aleter databse mount이후에 아래 명령어를 실행한다.
SQL> recover database until cancel ;
Media recovery complete.
SQL> alter database open resetlogs ;
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 2.6991E+10 bytes
Fixed Size                  2213976 bytes
Variable Size            1.9059E+10 bytes
Database Buffers         7784628224 bytes
Redo Buffers              145174528 bytes
Database mounted.
Database opened.
SQL>

* database open실 발생하는 원인은 다음과 같은데
  위 사항은 1)번 사항이다.
 1) DATA파일이 깨졌을 때
 2) SN번호 불일치 시 -> "SCN 번호 불일치" 의 오타로 보임
 3) DB의 컨트롤 파일문제 시
 4) 설정파일 오류

3. 추가사항

DB에 문제가 생겨서 강제로 kill로 죽였을 때 
$ sqlplus "/as sysdba"로 접속하여
$ startup하면 ORA-01012: not logged on 에러가 발생한다.
그때는 SQL> startup force로 실행한다.




1. DB Instance 의 Archive Log Mode 초기구성 결과 on 11gR2 


  -- 현재 설정 내용

 

 SQL> connect /as sysdba

 Connected.

 SQL> archive log list 

 Database log mode              No Archive Mode

 Automatic archival             Disabled

 Archive destination            USE_DB_RECOVERY_FILE_DEST

 Oldest online log sequence     36

 Current log sequence           38

 SQL>  



2. Archive Destination 을 LOG_ARCHIVE_DEST_1 로 변경 


  -- fast_recovery_area 에 Archive Log 를 떨어 뜨리지 않기 위해서 등등....


 SQL> alter system set LOG_ARCHIVE_START = TRUE scope=spfile ;      

 SQL> alter system set LOG_ARCHIVE_FORMAT = 'DAPPE02_%r_%T_%S.arc' scope=spfile ; 

 SQL> alter system set LOG_ARCHIVE_DEST = '' scope = spfile ; 

 SQL> alter system set LOG_ARCHIVE_DEST_1 = 'location=/u02/arch/DAPPE02' scope = spfile ; 


 -- DB Instance 재가동이 필요

 SQL> shutdown immediate ; 

 SQL> startup mount ; 

 SQL> alter database archivelog ; 

 SQL> alter database open ;



3. 재가동 후 변경 내용 확인


  -- 항상, 확인은 필요하다.


 SQL> archive log list ;

 Database log mode              Archive Mode

 Automatic archival             Enabled

 Archive destination            /u02/arch/DAPPE02

 Oldest online log sequence     36

 Next log sequence to archive   38

 Current log sequence           38

 SQL> 


  -- 아래의 File name 처럼 생성된다. : 포맷은 위에서 'DAPPE02_%r_%T_%S.arc' 설정 했음 => 지금 보니, 굳이 자리수를 맞출 필요 없이 %T 은 %t 로 했었어도 좋았을 것을...


 oraapp112@mwapp:/u02/arch/DAPPE02] ls -al 

 drwxr-xr-x 2 oraapp121 dba     4096 Aug 10 13:33 .

 drwxrwxr-x 4 oraapp112 dba     4096 Aug 10 13:28 ..

 -rw-r----- 1 oraapp121 dba 15956480 Aug 10 13:33 DAPPE02_919102183_0001_0000000038.arc

 -rw-r----- 1 oraapp121 dba     1024 Aug 10 13:33 DAPPE02_919102183_0001_0000000039.arc

 oraapp112@mwapp:/u02/arch/DAPPE02] 






//-- DB 11gR2 Silent Install Script : Short Guide


1. DB 엔진설치 


  -- 설치파일 준비


 oraapp112@mwapp:/home/oraapp112/media] unzip p13390677_112040_Linux-x86-64_1of7.zip

 oraapp112@mwapp:/home/oraapp112/media] unzip p13390677_112040_Linux-x86-64_2of7.zip 


  -- response 파일 수정


 oraapp112@mwapp:/home/oraapp112/media/database/response] cp -p db_install.rsp db_install.rsp.orig

 oraapp112@mwapp:/home/oraapp112/media/database/response] vi db_install.rsp 

    >> 수정 사항 참조 : 일부 Default Value 도 표기

 oracle.install.option=INSTALL_DB_SWONLY

 ORACLE_HOSTNAME=mwapp

 INVENTORY_LOCATION=/u02/oracle/oraInventory_112

 SELECTED_LANGUAGES=en,ko

 ORACLE_HOME=/u02/oracle/product/11.2.0/db

 ORACLE_BASE=/u02/oracle

 oracle.install.db.InstallEdition=EE

 oracle.install.db.EEOptionsSelection=true

 oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.4.0,oracle.oraolap:11.2.0.4.0,oracle.rdbms.dm:11.2.0.4.0,oracle.rdbms.dv:11.2.0.4.0,oracle.rdbms.lbac:11.2.0.4.0,oracle.rdbms.rat:11.2.0.4.0

 oracle.install.db.DBA_GROUP=dba

 oracle.install.db.OPER_GROUP=dba

 oracle.install.db.config.starterdb.type=GENERAL_PURPOSE

 DECLINE_SECURITY_UPDATES=true


  -- Silent 로 DB엔진 설치


oraapp112@mwapp:/home/oraapp112/media/database] ./runInstaller -silent -responseFile /home/oraapp112/media/database/response/db_install.rsp 


 As a root user, execute the following script(s):

        1. /u02/oracle/product/11.2.0/db/root.sh


 Successfully Setup Software.    ==> 이렇게 나오면, 엔진이 정상설치 된 것 

    


2. 적절한 PUS 적용


  -- OPatch Update : 생략, 다시 확인 6880880

  -- 적절한 PSU Apply : 생략, 2016년도 어느 때부터 날자로 출시.



3. Listener 구성


  -- response 파일 수정


 oraapp112@mwapp:/home/oraapp112/media/database/response] cp -p netca.rsp netca.rsp.orig

 oraapp112@mwapp:/home/oraapp112/media/database/response] vi netca.rsp 

    >> 수정 사항 참조 : 일부 Default Value 도 표기

 RESPONSEFILE_VERSION="11.2"

 CREATE_TYPE="CUSTOM"

 LOG_FILE=""/home/oraapp112/media/database/response/netca_inst.log""

 LISTENER_NAMES={"LISTENER_DAPPE01"}

 LISTENER_PROTOCOLS={"TCP;1621"}

 LISTENER_START=""LISTENER_DAPPE01""

 NSN_PROTOCOLS={"TCP;HOSTNAME;1621"} 


  -- Silent 로 DB Listener 구성


 oraapp112@mwapp:/home/oraapp112/media/database/response] cd $ORACLE_HOME/bin 

 oraapp112@mwapp:/u02/oracle/product/11.2.0/db/bin] ./netca -silent -responseFile /home/oraapp112/media/database/response/netca.rsp 



4. DB Instance 생성


  -- response 파일 수정


 oraapp112@mwapp:/home/oraapp112/media/database/response] cp -p dbca.rsp dbca.rsp.orig

 oraapp112@mwapp:/home/oraapp112/media/database/response] vi dbca.rsp 

    >> 수정 사항 참조 : 일부 Default Value 도 표기

RESPONSEFILE_VERSION = "11.2.0"

 OPERATION_TYPE = "createDatabase"

 GDBNAME = "DAPPE01"

 SID = "DAPPE01"

 SYSPASSWORD = "Customized_Password"

 SYSTEMPASSWORD = "Customized_Password"

 SYSMANPASSWORD = "Customized_Password"

 DATAFILEDESTINATION = "/u02/data01/oradata"

 STORAGETYPE=FS

 CHARACTERSET = "KO16MSWIN949"

 NATIONALCHARACTERSET= "AL16UTF16"

 SAMPLESCHEMA=TRUE

 AUTOMATICMEMORYMANAGEMENT = "TRUE"

 TOTALMEMORY = "2048"

    # 일단은, AMM 을 활성화 하고, 최소 메모리로 DB Instance 를 생성, DB SID 와 CHARACTERSET 에 주의


  -- Silent 로 Instance 생성


 oraapp112@mwapp:/home/oraapp112/media/database/response] cd $ORACLE_HOME/bin

 oraapp112@mwapp:/u02/oracle/product/11.2.0/db/bin] ./dbca -silent -responseFile /home/oraapp112/media/database/response/dbca.rsp



5. 추가사항


  -- root.sh 수행 잊지 말기 : 엔진 설치 후, DB Instance 구성 후

  -- 여러가지 구성을 대비?해서, oraInventory 와 diag 를 unique 하게 생성~ 나중에 file name 이 unique 해서 폴더 병합이 번거로워짐..  




1. 현상


  - DB12c 이상에서, 특정 Column 에 대한 rename column 혹은 drop column 시, ORA-54032 와 함께 변경이 안됨


SQL> alter table OWNER.AG_NB_RD_SBAS_DD_SUM rename column MRD_STAT_CD to REP_POL_STAT_CD ; 

수행 시,, 아래 Message 를 출력 

"ORA-54032: column to be renamed is used in a virtual column expression"

"ORA-54033: column to be modified is used in a virtual column expression"



2. 원인


  - 해당 컬럼이 virtual column 에 포함되어 있어서 변경이 안됨

  - DB12c 이상 에서는, extended statistics 기능을 위해, 사용자가 생성하지 않은 컬럼도 DB 엔진이 virtual column 으로 지정해 별도 생성, 관리

  - extended statistics 에 대해서 기술된 내용 : This feature enables to Oracle calculate statistics on a group of columns. It uses this information to improve row estimates. This is useful when there's a correlation between the values of two (or more) columns in a table.

  - SYS_OP_COMBINED_HASH 은 an undocumented feature 라고 합니다. The name implies Oracle is merging the arguments together to form a hash 라고 기술되어 있습니다.

  

  - 확인 방법

SQL> select OWNER, table_name, column_name, data_type, hidden_column, data_default

        from dba_tab_cols

        where table_name ='해당_TABLE_NAME' and virtual_column = 'YES'

  # data_default 에 해당 column 이 포함되어 있다면, ORA-54032, ORA-54033 와 함께 변경이 안됨


  - 확인 결과 (셈풀)

COLUMN_NAME                 DATA_DEFAULT        HIDDEN_COLUMN

------------------------------                 --------------------------------------   ---------------------

SYS_STUYPW88OE302TFVBNC6$MMQXE SYS_OP_COMBINED_HASH("X","Y") YES

Z                                                                                         NO

Y                                         NO

X                                         NO 

  # 위와 같이 조회 되는 경우, X 와 Y 의 2개 Column 은 SYS_OP_COMBINED_HASH 에 속한 virtual column 이 됩니다.



3. 조치방법


  3-A. 해당 extended statistics 컬러을 삭제


  - 아래 Package 를 통해 삭제 가능


SQL> exec dbms_stats.drop_extended_stats( ownname => 'OWNER', tabname => '해당_TABLE_NAME', extension => '("BASE_YM","MRD_STAT_CD","MRD_PROD_CD")' ) ;

  혹은

SQL> exec dbms_stats.drop_extended_stats(OWNER, '해당_TABLE_NAME', '(BASE_YM, MRD_STAT_CD, MRD_PROD_CD)');


  - 아래 Package 를 통해 생성 가능 (필요하다고 판단할 경우, DB 가 다시 생성)


SQL> exec dbms_stats.create_extended_stats( ownname => 'OWNER', tabname => '해당_TABLE_NAME', extension => '("BASE_YM","MRD_STAT_CD","MRD_PROD_CD")' ) ;


  3-B. 해당 Table 을 재생성 : 재생성 데 따른 제약은 없습니다. 


SQL> alter table OWNER.AG_NB_RD_SBAS_DD_SUM drop primary key cascade ;  

SQL> drop table OWNER.AG_NB_RD_SBAS_DD_SUM cascade constraints ;

 

SQL> create table OWNER.AG_NB_RD_SBAS_DD_SUM ( ------  생략  ) ;



ps. 이 내용은 다음 URL을 참조하였습니다 : https://blogs.oracle.com/sql/entry/ora_54033_and_the_hidden 

1. Oracle DB 에 접속이 되었다가, 연결이 종료되는 경우


  A. 특정 사용자 Profile 에 설정된 limit 때문에 연결이 종료 되는 경우 일수도 있음


    -- 확인


      > Profile 을 사용하려면, resource_limit 이 true 로 설정되어 있어야 함 -- 11gR2 Default 는 false


        SQL> select name, value from v$parameter where name like '%resource%' ;

        SQL> alter system set resource_limit = true scope=spfile ; -- 설정방법


      > 생성되어 있는, Profile 들을 확인 : PROFILE 명이 Dafault 인 것이 기본설정 Profile 입니다.


        SQL> select profile, resource_name, limit from dba_profiles where profile = '%NEW';

   

    -- 조치방법


      > 해당 Limit 을 제거한 Profile 을 생성하여, 해당 User 에 부여 (아래는 Sample)

      > 특정하지 않은 limit 은 Default profile 을 따름

 

        SQL> ALTER PROFILE Profile_NEW limit 

              PASSWORD_GRACE_TIME UNLIMITED 

              FAILED_LOGIN_ATTEMPTS UNLIMITED

              PASSWORD_LIFE_TIME UNLIMITED

              PASSWORD_LOCK_TIME UNLIMITED 

              idle_time UNLIMITED  ; 


        SQL> alter user user_new profile Profile_new  ; 


    -- 참조값

      

      > sessions_per_user 2 => 유저당 2개의 세션을 허용

      > idle_time 1 => 접속후 1분 동안 아무런 작업이 일어나지 않는다면 자동으로 Session을 종료

      > connect_time 480 => Open 된 세션을 8분(480초) 동안만 사용 허락, 분단위의 연결시간 제한

      > LOGICAL_READS_PER_SESSION 1028 => SESSION이 열려있는 동안 disk나 memory에서 읽을 수 있는 data block 수가 1024 Block



  B. DB Instance Lelvel 로 설정된 limit 때문에 연결이 종료 되는 경우일 수도 있음


    -- 확인


 SQL> select * from v$resource_limit ; 


RESOURCE_NAME

 CURRENT UTILIZATION

 MAX UTILIZATION

 INITIAL ALLOCATION

 LIMIT VALUE

 processes

 31

 1800

 2000

 2000

 sessions

 39

 3024

 3024

 3024

 enqueue_locks

 25

 61

 34780

 34780

 enqueue_resources

 22

 59

 13524

 UNLIMITED

 ges_procs

 0

 0

 0

 0

 ges_ress

 0

 0

 0

 UNLIMITED


      위의 셈풀 결과에서 processes 가 프로세스 갯수(백그라운드+Dedicate Process), 그리고 session 이 동시접속 세션 수 입니다.

      current_utilization 이 현재 접속 카운트이고... (1명 접속할 때 마다 1씩 증가)

      max_utilization  이 오라클을 시작한 이래로 최대로 접속했을 때 피크 수치입니다


    -- 조치 


      session (동시접속 세션 수) 가 3024 로 설정되어 있는데 ( Defailt 값도 3024 , 현 설정값도 3024 임), 

      현재는 session (동시접속 세션 수) 가 39 입니다만, DB 구동 후 동시접속 세션 수가 3024 에 도달할 적이 있으므로, 

      이 때, 더 이상의 session 들이 DB 에 연결되지 못하는 상황이엇을 것입니다. ==> 따라서 session 을 5000 개 정도로 늘릴 필요가 있습니다.


      sessions 과 processes 는 함꼐 증가 되어야 하며, sessions 은 processes * 1.1 + 5개 이상이 되어야 합니다. (DB 버전에 따라 상이)


 SQL> alter system set sessions = 5550 scope = spfile ; 

 SQL> alter system set processes = 5000 scope = spfile ; 


 SQL> shutdown immediate ; 

 SQL> startup ; 



      

  





//-- Oracle DB 의 Datapump 를 이용한 DB 간 Data 이관 

//-- Draft 버전 



1. 개요 


  -- 필요한경우 

    > Oracle DB 간의 Data Migration

    > 사례1) 개발DB에 있는 특정한 Schema의 모든 Object들을 운영DB로 모두 옮기는 경우 등 

  -- 제약사항

    > Oracle DB 10.2.0.X 이상 (11.1.0.X 이상 권고) => 해당 버전 이상에서 제공하는 datapump 를 사용


  

2. 전체적인 가이드


  A. Datapump 를 떨어뜨릴 Directory를 소스/타켓 양쪽에 생성

  B. Datapump 명령어로, 해당 Data 를 OS File 형태로 추출

  C. FTP 로 타켓서버로 전송

  D. Datapump 명령어로, 해당 OS File 을 DB에 적재 



3. 세부방법


  A. (소스/타켓 양쪽 DB에) Directory 설정 


  -- 기존 Directory 중 적당한 것을 사용해도 되고, 새로 만들어 사용해도 됨

  -- DB 관리user 인 system 을 사용하는 것이 무난함 => 그렇지 않은 경우, 일반 User 에 필요한 권한을 설정 필요

  

  -- 기존 Directory 조회

  -- 아래의 경우, DATA_PUMP_DIR 가 사용하기에 무난

  

SQL> set linesize 350

SQL> set pagesize 100

SQL> col owner format a15

SQL> col directory_path format a80  

SQL> select * from dba_directories ; 


OWNER        DIRECTORY_NAME                 DIRECTORY_PATH

----------   ------------------------------ ----------------------------------------------------------------------------

SYS          SUBDIR                            /app/oracle/product/11.2.0/db/demo/schema/order_entry/2002/Sep

SYS          SS_OE_XMLDIR                   /app/oracle/product/11.2.0/db/demo/schema/order_entry/

SYS          JOOYH_DIR                        /home/oracle/data_pump

SYS          LOG_FILE_DIR                     /app/oracle/product/11.2.0/db/demo/schema/log/

SYS          MEDIA_DIR                        /app/oracle/product/11.2.0/db/demo/schema/product_media/

SYS          XMLDIR                             /app/oracle/product/11.2.0/db/rdbms/xml

SYS          DATA_FILE_DIR                    /app/oracle/product/11.2.0/db/demo/schema/sales_history/

SYS          DATA_PUMP_DIR                 /app/oracle/admin/ogg25/dpdump/

SYS          ORACLE_OCM_CONFIG_DIR    /app/oracle/product/11.2.0/db/ccr/state

9 rows selected.

SQL> 


  -- 새로운 Directory 생성 (tran_pump 로 생성) 및 필요권한 부여

  -- system 에는 이미 권한이 있으나, 셈풀Query를 수행

  

[/home/oracle]$ id

 uid=401(oracle) gid=512(dba) groups=512(dba)

 [/home/oracle]$ cd /app/oracle/admin/ogg25/

 [/app/oracle/admin/ogg25/]$ mkdir tran_pump         --  dpdir 정도의 이름으로 만들어진 것을 사용하면 됨


-- 일반 User로 Directory 생성시 필요 (system 은 기 보유) 

SQL> GRANT CREATE ANY DIRECTORY TO SYSTEM ;   

-- 원하는 Directory 생성

SQL> CREATE DIRECTORY tran_pump AS '/app/oracle/admin/ogg25/tran_pump' ; 

-- DIRECTORY 에 개별권한 부여

SQL> GRANT READ, WRITE ON DIRECTORY tran_pump TO SYSTEM ;  

-- 일반 User로 추출/적재 시 필요 (system 은 이미 권한이 있음}

SQL> grant EXP_FULL_DATABASE, IMP_FULL_DATABASE to SYSTEM ;  


  B. Datadump 명령어로, 해당 Data 를 OS File 형태로 추출

  

  -- 추출대상 Object 확인 : 하단 참조

  

  -- 새로 생성한 tran_pump 에 Data 를 추출/적재

  -- tran_pump 이름의 directory 에 dumpfile 이 생성됨

  

[/home/oracle]$ expdp system/oracle directory=tran_pump schemas=BIGDATA01 job_name=bigdata01_expdp dumpfile=src_schema_bigdata01.dmp logfile=src_schema_bigdata01.expdp.log


[/app/oracle/admin/ogg25/tran_pump]$ du -hs *

5.1G    src_schema_bigdata01.dmp      -> 14:13:13 소요됨, tran_pump 란 directory 에 생성됨

12K     src_schema_bigdata01.expdp.log

[/app/oracle/admin/ogg25/tran_pump]$ 

  C. FTP 로 타켓서버로 전송 : 생략

  

  D. Datadump 명령어로, 해당 OS File 을 DB에 적재 

  

** 주의사항

     -- 사전에 적재 될 Schema 는 이미 만들어 두어야 함

     -- 이미 생성하지 않으면, 적재 시 생성하나 (동일 DB서버에 복구 하는 경우가 아니라면) 이미 생성해 두어야 함

     -- 적재된 Tablespace 에도 충분한 공간이 확보되어 있어야 함


SQL> drop user bigdata02 cascade ;          -- 해당 Schema 가 이미 있는 경우, 삭제하고 재생성 필요

SQL> create user bigdata02 identified by bigdata02

        default tablespace tmp_data

        temporary tablespace temp ; 

SQL> grant resource, connect to bigdata02 ; 

SQL> grant dba, sysdba to tranm ;          -- TRANManager DB User 에는  dba, sysdba 권한도 추가로 부여 


 ** 만약 impdp 가 퍼미션 문제로 실행되지 않는다면 SYSDBA 로 로그인한 후, 아래 Query 를 실행한 후 재시도.

SQL> execute dbms_metadata_util.load_stylesheets ;

-- 아래 명령어로 적재

-- 추출하는 Schema 와 적재되는 Schema 가 다른 경우 REMAP_SCHEMA 사용해야 함

-- 소스DB 의 Tablespace 명이 타켓DB에서 달라지는 경우, REMAP_TABLESPACE 를 사용해야 함


[/home/oracle]$ impdp system/oracle directory=tran_pump job_name=bigdata01_impdp dumpfile=src_schema_bigdata01.dmp logfile=src_schema_bigdata01.impdp.log REMAP_SCHEMA=bigdata01:bigdata02

    

 


8. 관련 Query 


  A. 추출 대상 Schema 의 Object 정보 사전 확인


SQL> set linesize 350  

SELECT DB.NAME DBNAME

, USERNAME

        , NVL(ROUND(SUM(CASE WHEN SEGMENT_TYPE LIKE 'INDEX%' THEN NULL ELSE BYTES END)/1024/1024/1024,1),-1) TABLE_SIZE

, NVL(ROUND(SUM(CASE WHEN SEGMENT_TYPE LIKE 'INDEX%' THEN BYTES ELSE NULL END)/1024/1024/1024,1),-1) INDEX_SIZE

, COUNT(B.SEGMENT_NAME) SEGMENT_COUNT

, MAX(C.OBJ_CNT) OBJECT_COUNT

FROM DBA_USERS A

INNER JOIN

(SELECT NAME FROM V$DATABASE) DB

ON 1=1

LEFT OUTER JOIN DBA_SEGMENTS B

ON A.USERNAME=B.OWNER

AND SEGMENT_NAME NOT LIKE 'BIN%'

LEFT OUTER JOIN (SELECT OWNER OWNER2,COUNT(*) OBJ_CNT FROM DBA_OBJECTS GROUP BY OWNER) C

ON A.USERNAME = C.OWNER2

WHERE A.USERNAME IN ('BIGDATA01')

GROUP BY DB.NAME,USERNAME

ORDER BY USERNAME  


SQL> /


DBNAME    USERNAME                       TABLE_SIZE INDEX_SIZE SEGMENT_COUNT OBJECT_COUNT

--------- ------------------------------ ---------- ---------- ------------- ------------

OGG25     BIGDATA01                             4.7        1.4           126          134


SQL> 


select owner, object_type, count(1)

  from dba_objects 

 where owner in ('BIGDATA01') 

 group by owner, object_type

 order by owner, object_type


OWNER           OBJECT_TYPE           COUNT(1)

--------------- ------------------- ----------

BIGDATA01       INDEX                       42

BIGDATA01       PACKAGE                      1

BIGDATA01       PACKAGE BODY                 1

BIGDATA01       PROCEDURE                    3

BIGDATA01       SEQUENCE                     1

BIGDATA01       TABLE                       84

BIGDATA01       VIEW                         2


7 rows selected.

SQL> 



9. 참조 사례/셈풀


  A. 추출 하지 않고, 생성될 dump file 의 Size 만 계산 : estimate_only 사용 

  

    -- 다음 옵션으로 expdp에 사용되는 공간을 추정할 수 있다.

$ expdp dpumpuser/dpumpuser full=y estimate_only=Y

  


  B. 추출/적재 시 병렬처리 하는 경우 : %U 를 사용


    -- parallel 파라메터는 몇 개의 스레드로 병렬 처리 할 것 인지 지정한다.

# expdp hr/hr tables=paratest directory=data_pump_test dumpfile=paratest%U.dmp parallel=4 job_name=parr_test;


    -- paratest01.dmp, paratest02.dmp, paratest03.dmp paratest04.dmp => 4 개의 파일이 생성된다.

# impdp hr/hr directory=data_pump_test dumpfile=paratest%U.dmp job_name=parr_test;


  C. 추출 시, 특정 Schema 데에터만 추출


    -- 특정 스키마의 구조와 데이터 추출 : schema 를 사용

$expdp dpumpuser/dpumpuser schema=PORTAL directory=data_pump dumpfile=portal_schema_20081031.dmp


  D. 추출 대상 정하기 - Metadata 만을 추출하거나, Table 의 Data 만 추출하는 경우 : content 를 사용

  

    -- content를 사용해 특정 스키마의 데이터만 추출 (all 전체 | metadata_only 껍데기만 | data_only table의Data만 ) 

$expdp dpumpuser/dpumpuser schemas=PORTAL content=data_only directory=data_pump dumpfile=portal_schema_data_20081031.dmp

  E. 적재 시, Schema 및 Tablespace 가 변경되는 경우 : REMAP_XXXXX 사용

    -- 데이터 파일, 테이블 스페이스, 유저는 각각 다음의 옵션으로 변경할 수 있다.

REMAP_DATAFILE='C:\user01.dbf':'/usr/data/user01.dbf'

REMAP_TABLESPACE='users':'user'

REMAP_SCHEMA=scott:stralth

    -- TABLESPACE 변경이 여러개인 경우, "," 를 구분자로 필요한 만큼 기술 가능

    --  ex) impdp system/oracle directory=datapump dumpfile=scott.dmp remap_tablespace =users1_data:users2_data, users1_index:users2_index schemas=scott;

 

  F. 적재 시 이미 Table 이 존재하는 경우 선택 가능 : table_exists 사용


$ impdp dpumpuser/dpumpuser table_exists_action=truncate directory=data_pump dumpfile=portal_schema_data_20081031.dmp  

    -- table_exists_action 옵션 사용, 기존의 데이터를 truncate 하도록 (skip | append | truncate | replace)

skip      : 존재하는 오브젝트에 대해 임포트 스킵

append : 기존 오브젝트에서 업는 행만을 임포트

truncate : 기존 테이블 truncate

replace : drop & recreate 



1. Oracle DB 에서 제공하는 변환형 함수(Conversion function)

 

주로 아래 3가지 변환함수가 많이 사용됩니다.

Parameter

Explanation

to_char

숫자나 날짜를 문자열로 변환

to_date

문자를 날짜로 변환

to_number

문자를 숫자로 변환

기타 참조할 만한 Conversion function 으로는

-       Bin_To_Num / NumToDSInterval / NumToYMInterval  

-       To_Single_Byte / To_Multi_Byte / To_Clob / To_NClob / To_Lob

-       From_Tz / To_Timestamp / To_Timestamp_Tz / To_YMInterval / To_DSInterval

-       HexToRaw / CharToRowid / RawToHex

등이 있으나, 이번에는 언급하지 않겠습니다.

 

가능한 DB 버전 : Oracle 8i, Oracle 9i, Oracle 10g, Oracle 11g

-       아마 곧 GA release Oracle 12c 에서도 지원되겠지요?

 

2. to_char function

 

Syntax : TO_CHAR(문자값,‘형식’) / to_char( value, [format_mask], [nls_language])

-       value can either be a number or date that will be converted to a string.

-       format_mask is optional. This is the format that will be used to convert value to a string.

-       nls_language is optional. This is the nls language used to convert value to a string.

 

Example : 숫자를 문자열로 변환

SQL> select TO_CHAR(350000,'$999,999') from dual ;

 

TO_CHAR(3

---------

 $350,000

 

SQL>

 

Example : 날짜를 문자열로 변환

SQL> select to_char(sysdate, 'yyyy/mm/dd HH24:MI:SS') from dual ;

 

TO_CHAR(SYSDATE,'YY

-------------------

2012/05/03 13:24:25

 

SQL> select to_char(sysdate - 31, 'yyyymmdd') from dual ;

 

TO_CHAR(

--------

20120402

 

SQL> select to_char(sysdate, 'yyyy/mm/dd') from dual ;

 

TO_CHAR(SY

----------

2012/05/03

 

SQL> select to_char(sysdate, 'Month DD, YYYY') from dual ;

 

TO_CHAR(SYSDATE,'MONTHDD,YYYY')

---------------------------------------------

May       03, 2012

 

SQL> select to_char(sysdate, 'FMMonth DD, YYYY') from dual ;

 

TO_CHAR(SYSDATE,'FMMONTHDD,YYYY')

---------------------------------------------

May 3, 2012

 

SQL> select to_char(sysdate, 'MON DDth, YYYY') from dual ;

 

TO_CHAR(SYSDATE,'MONDDT

-----------------------

MAY 03RD, 2012

 

SQL> select to_char(sysdate, 'FMMON DDth, YYYY') from dual ;

 

TO_CHAR(SYSDATE,'FMMOND

-----------------------

MAY 3RD, 2012

 

SQL> select to_char(sysdate, 'FMMon ddth, YYYY') from dual ;

 

TO_CHAR(SYSDATE,'FMMOND

-----------------------

May 3rd, 2012

 

SQL>

 

Frequently Asked Questions

Question:

Why doesn't this sort the days of the week in order?

 

    select ename, hiredate, to_char((hiredate),'fmDay') "Day"

    from emp

    order by "Day";

 

Answer:

In the above SQL, the fmDay format mask used in the to_char function will return the name of the Day and not the numeric value of the day.

To sort the days of the week in order, you need to return the numeric value of the day by using the fmD format mask as follows:

 

    select ename, hiredate, to_char((hiredate),'fmD') "Day"

    from emp

    order by "Day";

 

3. to_date function

 

Syntax : TO_DATE(문자값, ‘형식’) / to_date(string1, [format_mask], [nls_language])

-       string1 is the string that will be converted to a date.

-       format_mask is optional. This is the format that will be used to convert string1 to a date.

-       nls_language is optional. This is the nls language used to convert string1 to a date.

 

Example : 문자를 날짜로 변환

SQL> select TO_DATE('May 3 2012','MONTH DD YYYY') from dual ;

 

TO_DATE('

---------

03-MAY-12

 

SQL> select sysdate - to_date('20120101', 'yyyymmdd') from dual ;

 

SYSDATE-TO_DATE('20120101','YYYYMMDD')

--------------------------------------

                            123.577465

 

SQL> select to_date('2012/05/03', 'yyyy/mm/dd') from dual ;

 

TO_DATE('

---------

03-MAY-12

 

SQL> select to_date('050312', 'MMDDYY') from dual ;

 

TO_DATE('

---------

03-MAY-12

 

SQL> select to_date('20120503', 'yyyymmdd') from dual ;

 

TO_DATE('

---------

03-MAY-12

 

SQL>

 

4. to_number function

 

Syntax : TO_NUMBER(문자값) / to_number( string1, [format_mask], [nls_language] )

-       string1 is the string that will be converted to a number.

-       format_mask is optional. This is the format that will be used to convert string1 to a number.

-       nls_language is optional. This is the nls language used to convert string1 to a number.

 

Example : 문자를 숫자로 변환

SQL> select TO_NUMBER('1234567') from dual ;

 

TO_NUMBER('1234567')

--------------------

             1234567

 

SQL> select to_number('1210.73', '9999.99') from dual ; 

 

TO_NUMBER('1210.73','9999.99')

------------------------------

                       1210.73

 

SQL> select to_number('546', '999') from dual ; 

 

TO_NUMBER('546','999')

----------------------

                   546

 

SQL> select to_number('23', '99') from dual ; 

 

TO_NUMBER('23','99')

--------------------

                  23

 

SQL>

 

5. Syntax 의 형식에 대해서

 

형식 : 숫자를 문자로 변환시에 형식에 사용되는 요소

Parameter

Explanation

9

일반적인 숫자를 나타냄

0

앞의 빈자리를 0으로 채움

$

dollar를 표시함

L

지역 통화 단위

.

소숫점을 표시함

,

천단위를 표시함

 

  형식 : 날짜를 문자로 변환시에 형식에 사용되는 요소

Parameter

Explanation

SCC

세기를 표시 S는 기원전(BC)

YEAR

연도를 알파벳으로 spelling

YYYY

4자리 연도로 표시

YYY / YY / Y

끝의 3 / 2 / 1 자리 연도로 표시

Q

Quarter(분기) of year (1, 2, 3, 4; JAN-MAR = 1).

MONTH

월을 알파벳으로 spelling

MON

월의 알파벳 약어

MM

월을 2자리 숫자로 표시

RM

Roman numeral month (I-XII; JAN = I).

WW

Week of year (1-53) where week 1 starts on the first day of the year and continues to the seventh day of the year.

W

Week of month (1-5) where week 1 starts on the first day of the month and ends on the seventh.

DAY

일에 해당하는 요일, Name of day.

DY

일에 해당하는 요일의 약어

DDD

연도,,일 중의 날짜를 숫자로 표시, Day of year (1-366).

DD

Day of month (1-31).

D

Day of week (1-7).

HH

시간을 표시, Hour of day (1-12).

HH12

시간을 표시, Hour of day (1-12).

HH24

시간을 표시, Hour of day (0-23).

MI

분을 표시, Minute (0-59).

SS

초를 표시, Second (0-59).

SSSSS

Seconds past midnight (0-86399).

FF

Fractional seconds. Use a value from 1 to 9 after FF to indicate the number of digits in the fractional seconds. For example, 'FF4'.

AM(A.M.),PM(P.M.)

오전인지 오후인지를 표시

AD or A.D

AD indicator

BC or B.C.

BC indicator

TZD

Daylight savings information. For example, 'PST'

TZH

Time zone hour.

TZM

Time zone minute.

TZR

Time zone region.

 

Reference : http://www.techonthenet.com/oracle/functions/index.php

End of dicument.

+ Recent posts