ORACLE/ADMIN2007. 8. 4. 00:54
반응형

Oracle 온라인 세미나 자료를 근거로..

 

초간단히 Summary

 

 

Oradebug 사용법
- 적절한 권한을 가진 DB USER 로 sqlplus 로 접속
- 반드시 덤프할 오라클 프로세스를 지정한 후 사용

- SYNTAX : SQL>oradebug command <option>

일반 유저도 Try

SQL> show user
USER is "SCOTT"
SQL> oradebug setmypid
ORA-01031: insufficient privileges

 

SQL> conn / as sysdba
Connected.
SQL> show user
USER is "SYS"
SQL> oradebug setmypid
Statement processed.

==> 자신의 process ID 지정 해서 dump

 

일반 유저를 찾아서 지정 해보기

보통은[AIX 환경] ps aux | sort -k3 으로 cpu 과도 사용 Unix process ID 를 찾은 후

지정 해서 dump 를 떨군 후 분석을 하면 될듯

 

## Scott User 의 Process ID 찾기
SQL> select username, sid, serial#,PADDR from v$session where username ='SCOTT';

USERNAME                              SID    SERIAL# PADDR
------------------------------ ---------- ---------- --------
SCOTT                                  28         54 46CB5768

SQL> select * from v$process where addr = '46CB5768';

ADDR            PID SPID      USERNAME           SERIAL#
-------- ---------- --------- --------------- ----------
TERMINAL                       PROGRAM
------------------------------ ------------------------------------------------
TRACEID
--------------------------------------------------------------------------------
B LATCHWAI LATCHSPI
- -------- --------
46CB5768         29 283314    oracle                   2
pts/8                          oracle@seldw (TNS V1-V3)

 

## Unix 환경에서 파악

[CRAFT]seldw:/app/oracle/tg> ps -ef| grep 283314
  oracle 282448 290026   0 10:45:26  pts/7  0:00 grep 283314
  oracle 283314 284036   0 10:42:54      -  0:00 oracleCRAFT (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

 

SQL> oradebug unlimit
Statement processed.
==> Dump 화일 무제한으로 설정
SQL> oradebug setospid 283314
Oracle pid: 29, Unix process pid: 283314, image: oracle@seldw (TNS V1-V3)

==> Scott Process ID 를 지정 해서 dump
SQL> oradebug tracefile_name
Statement processed.
==> dump 화일명 체크

==> 나오지 않는다.

SQL> oradebug dump errorstack 3
Statement processed.
==> dump 화일에 실제 Write 되도록 command 를 날리기

SQL> oradebug tracefile_name
/app/oracle/admin/CRAFT/udump/ora_283314_craft.trc
==> 이제 화일명이 보임

 

# Event 로 Trace 걸기
SQL> oradebug setospid 283314
Oracle pid: 29, Unix process pid: 283314, image: oracle@seldw (TNS V1-V3)

# 10046 Event 에 대해서 Trace 생성도록 설정 하기
SQL> oradebug event 10046 trace name context forever, level 12
Statement processed.
SQL> oradebug event 10046 trace name context off
Statement processed.
SQL> oradebug tracefile_name
/app/oracle/admin/CRAFT/udump/ora_283314_craft.trc

 

CASE 1 : 특정 프로세스가 SPIN 또는 HANG
SQL> oradebug dump errorstack 3 .. 3분단위 3번수행
SQL> oradebug dump processstate 10 .. 비교1
SQL> oradebug event 942 errorstack 10 .. 비교2

 

CASE 1 은 특정 프로세스가 SPIN 또는 HANG 으로 보이는 경우입니다.
(1) Oradebug setospid 해당 프로세스를 덤프대상으로 지정하고
(2) Oradebug dump errorstack 3 으로 ERRORSTACK 을 2-3번 떠서
(3) CALL STACK 부분이 변하고 있는지 비교해봅니다.
변하고 있으면 SPIN 이고, 변하지 않고 있으면 HANG 이라고 결론 내릴 수 있습니다.
ERRORSTACK LEVEL 3 에 PROCESSSTATE DUMP 가 포함되므로
PROCESSSTATE DUMP 를 별도로 수행할 필요가 없습니다.
EVENT Command 에서 ERRORSTACK 를 설정할 때와 비교해보면, EVENT Command 는 해당 에러가 발생하는
시점에 에러스택이 생성되는 것이고, DUMP Command 는 Oradebug Command 를 수행하자마자 에러스택이
생성됩니다.

 

CASE 2 : 데이터베이스 SPIN 또는 HANG
SQL> oradebug dump systemstate 10 .. 3분간격 3번수행
= alter session set events 'immediate trace name SYSTEMSTATE level 10';


케이스 두번째, 드디어 SYSTEMSTATE DUMP 입니다.
이 Command 는 아마도 oradebug 에서 가장 많이 사용되는 명령어로
alter session set events 'immediate trace name SYSTEMSTATE level 10'; 과 같습니다.
보시다시피 Oradebug Command 가 훨씬 간단하고 Rule 만 알면 외울 필요도 없습니다.
인스턴스 HANG 시 3분 간격으로 3번을 수행한 결과가 있어야 Slow Performance 인지,

진짜 HANG 이였는지 판단할 수 있습니다.


SQL> oradebug dump systemstate 10
ORA-00074: no process has been specified
SQL> alter session set events 'immediate trace name systemstate level 10';

Session altered.

 

CASE 3 : 프로세스 메모리가 비정상 증가하는 경우
SQL> oradebug dump heapdump 5 .. PGA+UGA


CASE 4 : SGA 부족으로 ORA-4031 가 발생하는 경우
SQL> oradebug dump heapdump 2 .. SGA
event="4031 trace name HEAPDUMP level 2" in initSID.ora

 

CASE 6 : 리커버리시 데이터파일 상태 불일치 에러시
SQL> oradebug dump controlf 10
SQL> oradebug dump file_hdrs 10
==>테스트시  임의의 프로세스 지정을 해야 trace 화일이 생성 된다.

SQL> oradebug dump controlf 10
ORA-00074: no process has been specified
SQL> oradebug setospid 283314
Oracle pid: 29, Unix process pid: 283314, image: oracle@seldw (TNS V1-V3)
SQL> oradebug dump controlf 10
Statement processed.
SQL> oradebug tracefile_name
/app/oracle/admin/CRAFT/udump/ora_283314_craft.trc
SQL> oradebug dump file_hdrs 10
Statement processed.
SQL> exit

 

SQL> oradebug hanganalyze 3
Hang Analysis in /app/oracle/admin/CRAFT/udump/ora_89222_craft.trc
프로세스 또는 인스턴스 HANG 진단 및 분석시 유용
HANGANALYZE [level]
1-2 Only HANGANALYZE output, no process dump
3 Level 2 + HANG 으로 추정되는 프로세스 덤프
4 Level 3 + WAIT CHAIN 의 BLOCKER 프로세스
5 Level 4 + WAIT CHAIN 의 모든 프로세스
10 모든 프로세스 덤프

SQL> oradebug hanganalyze 3 .. 권장레벨, 또는 1
Hang Analysis in /home/ora920/ora920_1190.trc
HANGANALYZE TRACEFILE SECTIONS 설명
 CYCLES : Deadlock 관계 세션들의 CHAIN
 BLOCKER OF MANY SESSIONS : 10개 이상의 세션을 blocking 하는 BLOCKER 제시
 OPEN CHAINS : 1개 이상의 타 세션들을 blocking 하는 세션이 포함된 WAIT CHAIN
 OTHER CHAINS : OPEN CHAIN 의 세션들과 간접적으로 관련있는 프로세스 리스트

EXTRA INFORMATION : 덤프 레벨에 따른 프로세스 Errorstack 등의 추가 정보
STATE OF NODES : 모든 세션들 DEPENDENCY GRAPH
  IN_HANG - HANG
  IGN - IGNORE
  LEAF - A waiting leaf node
  LEAF_NW - A running leaf node
  NLEAF - STUCK
세션 STATE 설명입니다.
IN_HANG : 심각한 상태로, 이 상태의 세션은 DEADLOCK 가능성이 있습니다 .
IGN and IGN_DMP : IDLE 상태이므로 무시하셔도 됩니다.
LEAF and LEAF_NW : 이 상태로 Wait Chain 의 가장 앞에 있으면,

                             바로 이 세션이 Blocker 세션입니다.
NLEAF : STUCK 세션으로, 다른 세션이 리소스를 잡고 안 놓아 주는 상태

           로 Performance 이슈일가능성이 높습니다.
 
DB HANG 이것만은 알아두세요!!!
데이터베이스 HANG : DB 연결될 때
SQL> oradebug setmypid

자신의 Process ID 지정 아마도, trace file 생성을 위해서 임의로 지정하는 듯
SQL> oradebug unlimit

Trace file 무한으로 설정
SQL> oradebug hanganalyze 1 

빨리 Blocker 찾으세요

Trace 화일을 통해서 문제의 Process ID 를 서치

심도 있게 더 깊이 분석시 아마도 setospid를 통해서 Blocker ID 를 찾은수

다시 trace 를 시도 하면 될듯
SQL> oradebug dump systemstate 10 ..

다른세션에서 3분3번

 

데이터베이스 HANG : DB 연결안 될 때
$ dbx .a PID $ORACLE_HOME/bin/oracle .. Oracle PID
dbx) call ksudss(10) or print ksudss(10)
dbx) detach

 

 

반응형

'ORACLE > ADMIN' 카테고리의 다른 글

oracle lock  (0) 2007.08.14
ORACLE relink  (0) 2007.08.07
10g SYSAUX tablespace 줄이기  (0) 2007.08.02
RMAN  (0) 2007.07.24
ORA-01555 (Snapshot too old) 에러 발생 원인과 대처 방법  (0) 2007.07.06
Posted by [PineTree]
ORACLE/ADMIN2007. 8. 2. 20:41
반응형

sysaux tablespace는 10g에서 새로 추가된 system default tablespace의 하나로 기존에 system tablespace에

 

저장되던 각종 ORACLE OPTION들의 schema가 저장되며 10g의 new feature인 AWR(auto workload repository) 데이터들이

 

저장되는 tablespace 입니다.

 

awr정보는 default로 1시간에 한번씩 data를 gathering하고 그 정보를 7일동안 저장하게 되어 있습니다.

 

7일이 지나면 가장 오래된 awr정보를 자동으로 삭제하게끔 되어 있습니다.

 

위의 내용대로 라면 특별한 ORACLE OPTION들을 사용하지 않는 한 awr정보를 저장하는 sysaux tablespace의 크기는

 

일정기간 늘어나다가(retention기간) 그 일정기간이 지나면 크기에 변화가 거의 없어야 정상일 것이라 생각됩니다만...

 

제가 지금 지원하고 있는 곳의 경우

 

작년 10월경에 새로 설치하고 운영중인 10gR2 의 sysaux tablespace가 지속적으로 점점 커지는 현상이 발생 했습니다.

 

처음 설치시 1G로 크기를 설정했는데 시간이 지날 수록 점점 늘어나더니 지금은 4G가 되었습니다.

 

그래서 이래저래 찾아보니 awr정보는 7일간 저장되지만 주기적으로 실행하는 table analyze 정보는

 

default로 31일 동안 저장이 된다고 합니다.

 

31일 동안 data가 저장되고 삭제되는 과정에서 index의 크기가 지속적으로 늘어나는것이

 

sysaux의 크기가 증가하는 원인이 되었습니다.

 

해결책

 

## SYSAUX tablespace를 어떤 owner가 얼마만큼의 크기를 차지하고 있는지 다음의 query로 확인 합니다.

 

SQL> select occupant_name, space_usage_kbytes/1024 "MB"
   from v$sysaux_occupants
   order by space_usage_kbytes

 

OCCUPANT_NAME                          MB                                                            
------------------------------ ----------                                                            
XDB                                            0                                                            
XSAMD                                       0                                                            
ODM                                           0                                                            
STATSPACK                                0                                                            
ORDIM                                        0                                                            
ORDIM/SQLMM                           0                                                            
TEXT                                          0                                                            
ULTRASEARCH_DEMO_USER        0                                                            
EM_MONITORING_USER               0                                                            
EXPRESSION_FILTER                   0                                                            
ULTRASEARCH                            0                                                            
EM                                             0                                                            
ORDIM/PLUGINS                          0                                                            
SDO                                            0                                                            
TSM                                           .25                                                            
JOB_SCHEDULER                         .375                                                            
STREAMS                                    .5                                                            
AO                                              .75                                                            
XSOQHIST                                   .75                                                            
LOGSTDBY                                  .875                                                            
SM/OTHER                                4.9375                                                            
LOGMNR                                   5.875                                                            
WM                                           6.1875                                                            
SM/ADVISOR                          110.9375                                                            
SM/AWR                                 501.875                                                            
SM/OPTSTAT                        3198.25  => SM/OPTSTAT 가 가장 많은 공간 차지(통계정보 관련 schema)


 

## SYSAUX tablespace에 어떤 segment가 가장 많은 공간을 차지하는지 조사

 

select owner, segment_name, segment_type, bytes/1024/1024

from dba_segments
where tablespace_name = 'SYSAUX'
order by bytes

....
....

SYS
I_WRI$_OPTSTAT_HH_OBJ_ICOL_ST
INDEX                          152

SYS
SYS_LOB0000788324C00004$$
LOBSEGMENT                     200

SYS
WRI$_OPTSTAT_HISTHEAD_HISTORY
TABLE                          219

SYS
I_WRI$_OPTSTAT_H_ST
INDEX                          653

SYS
WRI$_OPTSTAT_HISTGRM_HISTORY
TABLE                          840

SYS
I_WRI$_OPTSTAT_H_OBJ#_ICOL#_ST
INDEX                         1219

 

조회 결과 optstat관련된 table과 index가 많은 공간을 차지 하고 있음.

 

## 통계정보를 보관하는 주기를 확인

 

SQL> select dbms_stats.get_stats_history_retention from dual;

 

GET_STATS_HISTORY_RETENTION
---------------------------
                         31

 

## 보관주기를 줄인다. 7일로 줄일경우

 

SQL> exec dbms_stats.alter_stats_history_retention(7);

 

SQL> select dbms_stats.get_stats_history_retention from dual;

 

GET_STATS_HISTORY_RETENTION
---------------------------
                         7

 

## SYSAUX에 저장된 기존의 old 통계정보를 purge한다.

 

(예제는 2006년 10월 10일 이전의 data를 삭제함)

 

SQL> exec DBMS_STATS.PURGE_STATS(to_timestamp_tz('10-10-2006 00:00:00 Asia/Seoul','DD-MM-YYYY HH24:MI:SS TZR'));

 

통계정보 data를 purge하더라도 기존에 할당된 segment의 크기는 줄어들지 않기 때문에 SYSAUX의 free space를 확보하려면


table과 index를 reorg해야 된다.


여기서 10g의 새로운 기능인 segment shrink를 사용하시면 됩니다.

 

alter table WRI$_OPTSTAT_HISTGRM_HISTORY enable row movement;

 

alter table WRI$_OPTSTAT_HISTGRM_HISTORY shrink space;

 

--> WRI$_OPTSTAT_HISTGRM_HISTORY table에 function-based index가 걸려 있어
    shrink space 명령이 정상 실행되지 않습니다.

 

일단 WRI$_OPTSTAT_HISTGRM_HISTORY table에 걸려있는 function-based index인


I_WRI$_OPTSTAT_H_OBJ#_ICOL#_ST와 I_WRI$_OPTSTAT_H_ST를 drop하고 table shrink space명령을 실행한 후


function-based index인 I_WRI$_OPTSTAT_H_OBJ#_ICOL#_ST와 I_WRI$_OPTSTAT_H_ST를 재생성 해 줍니다.

 

1. drop indexes

 

drop전에 index를 생성하는 구문을 미리 뽑아 놓은다.

 

인덱스 생성 구문은 dbms_metadata를 사용하여 뽑아냄.

 

set long 10000


select DBMS_METADATA.GET_DDL('INDEX','I_WRI$_OPTSTAT_H_OBJ#_ICOL#_ST','SYS') from dual;


select DBMS_METADATA.GET_DDL('INDEX','I_WRI$_OPTSTAT_H_ST','SYS') from dual;


DROP INDEX "SYS"."I_WRI$_OPTSTAT_H_OBJ#_ICOL#_ST" ;


DROP INDEX "SYS"."I_WRI$_OPTSTAT_H_ST" ;

 

2.shrink table

 

alter table WRI$_OPTSTAT_HISTGRM_HISTORY enable row movement;


alter table WRI$_OPTSTAT_HISTGRM_HISTORY shrink space;


alter table WRI$_OPTSTAT_HISTGRM_HISTORY disable row movement;

 

## 실제로 크기가 줄었는지 확인


SQL> select occupant_name, space_usage_kbytes/1024 "MB"
   from v$sysaux_occupants
   order by space_usage_kbytes

OCCUPANT_NAME                                                            MB
---------------------------------------------------------------- ----------
XDB                                                                          0
XSAMD                                                                     0
ODM                                                                         0
STATSPACK                                                              0
ORDIM                                                                      0
ORDIM/SQLMM                                                         0
TEXT                                                                        0
ULTRASEARCH_DEMO_USER                                      0
EM_MONITORING_USER                                             0
EXPRESSION_FILTER                                                 0
ULTRASEARCH                                                          0
EM                                                                           0
ORDIM/PLUGINS                                                        0
SDO                                                                          0
TSM                                                                        .25
JOB_SCHEDULER                                                     .375
STREAMS                                                                .5
AO                                                                          .75
XSOQHIST                                                               .75
LOGSTDBY                                                              .875
SM/OTHER                                                             4.9375
LOGMNR                                                                5.875
WM                                                                        6.1875
SM/ADVISOR                                                       110.9375
SM/AWR                                                              511.4375
SM/OPTSTAT                                                       667.125 --> 3G에서 670M로 줄어듬.


3. recreate indexes

 

alter session set workarea_size_policy=manual;


alter session set sort_area_size=104857600

;

CREATE INDEX "SYS"."I_WRI$_OPTSTAT_H_OBJ#_ICOL#_ST"
ON "SYS"."WRI$_OPTSTAT_HISTGRM_HISTORY" ("OBJ#", "INTCOL#", SYS_EXTRACT_UTC("SAVTIME"))
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "SYSAUX" nologging;

 

CREATE INDEX "SYS"."I_WRI$_OPTSTAT_H_ST"
ON "SYS"."WRI$_OPTSTAT_HISTGRM_HISTORY" (SYS_EXTRACT_UTC("SAVTIME"))
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "SYSAUX" nologging;

 

SQL> select occupant_name, space_usage_kbytes/1024 "MB"
   from v$sysaux_occupants
   order by space_usage_kbytes

OCCUPANT_NAME                                                            MB
---------------------------------------------------------------- ----------
XDB                                                                          0
XSAMD                                                                     0
ODM                                                                         0
STATSPACK                                                              0
ORDIM                                                                      0
ORDIM/SQLMM                                                         0
TEXT                                                                        0
ULTRASEARCH_DEMO_USER                                      0
EM_MONITORING_USER                                             0
EXPRESSION_FILTER                                                 0
ULTRASEARCH                                                          0
EM                                                                           0
ORDIM/PLUGINS                                                        0
SDO                                                                          0
TSM                                                                         .25
JOB_SCHEDULER                                                      .375
STREAMS                                                                 .5
AO                                                                           .75
XSOQHIST                                                                .75
LOGSTDBY                                                               .875
SM/OTHER                                                             4.9375
LOGMNR                                                                5.875
WM                                                                       6.1875
SM/ADVISOR                                                      110.9375
SM/AWR                                                             511.4375
SM/OPTSTAT                                                      947.125  index 재생성 후 670M에서 950M로 변경

 

## segment 크기 조회

select owner, segment_name, segment_type, bytes/1024/1024
from dba_segments
where tablespace_name = 'SYSAUX'
order by bytes

 

SYS
I_WRI$_OPTSTAT_H_ST
INDEX                          120

SYS
I_WRI$_OPTSTAT_HH_OBJ_ICOL_ST
INDEX                          155

SYS
I_WRI$_OPTSTAT_H_OBJ#_ICOL#_ST
INDEX                          160

SYS
WRI$_OPTSTAT_HISTGRM_HISTORY
TABLE                      177.875

SYS
SYS_LOB0000788324C00004$$
LOBSEGMENT                     200

SYS
WRI$_OPTSTAT_HISTHEAD_HISTORY
TABLE                          219


## SYSAUX TABLESPACE의 Free space 조회

 

select tablespace_name, sum(bytes)/1024/1024
from dba_free_space
where tablespace_name = 'SYSAUX'
group by tablespace_name;

 

TABLESPACE_NAME                SUM(BYTES)/1024/1024
------------------------------ --------------------
SYSAUX                                    2892.9375


전체 작업시간은 한 30분정도 되었던 것 같습니다.


아무래도 운영시간에 하는건 부담이 되니 system에 부하가 적은 시간대에 하시는 것이 좋을 것 같습니다.

 

적고 나니 좀 길죠.

 

도움 되셨으면 합니다. 좀 이상한 부분있으면 지적해 주시면 감사하겠습니다.

 

 

출처 :   http://cafe.naver.com/prodba/833  

 

반응형

'ORACLE > ADMIN' 카테고리의 다른 글

ORACLE relink  (0) 2007.08.07
Oradebug Command  (0) 2007.08.04
RMAN  (0) 2007.07.24
ORA-01555 (Snapshot too old) 에러 발생 원인과 대처 방법  (0) 2007.07.06
오라클9i 데이타베이스 초기화 매개변수(전부) 설명  (0) 2007.06.30
Posted by [PineTree]
ORACLE/10G2007. 8. 2. 20:12
반응형
[oracle 10g] 통계 수집 DB

 

* 데이터 딕셔러니 통계 수집

  - 통계 자료 수집 프로시저

    + dbms_stats.gather_schema_stats

    + dbms_stats.gather_database_stats

      -> 이전 버전에도 존재하는 프로시저이나 통계자료수집은 10G에서 추가 되었다.

  - 데이터 딕셔러리의 보다 자세한 분석

    + dbms_stats.gather_dictionary_stats

  - 데이터 딕셔러리 통계자료 삭제

    + dbms_stats.delete_diciionary_stats

  - SYSDBA권한 또는 analyze any dictionary권한이 있어여 사용가능

  - 고정된 테이블 통계 수집하기 : gather_fixed 파라메터를 TRUE로 설정 한다.

  - 고정된 객체에 대한 자료 수집, 삭제

    + dbms_stats.gather_fixed_objects_stats : 수집

    + dbms_stata.delete_fixed_objects_stats : 삭제 

반응형
Posted by [PineTree]
ORACLE/ADMIN2007. 7. 24. 02:30
반응형
Oracle 8 NEW : Recovery manager 란 ?

Oracle 8 은 새로운 backup와 recovery 방법인 Recovery manager 를 제공한다.
Recovery manager(이하 RMAN) 는 backup,restore,recover process를 관리하는
tool 이다. Oracle Enterprise Manager 를 통해 GUI mode 로 가능하고,
rman 이라는 command line interface 를 함께 제공한다.

특히, OS device control 기능이 보완 되었기 때문에, 현재 backup catalog 를
유지하고, 이 정보를 이용해 OS level 에서 file 을 auto-restore 해 주기
때문에, database recovery 전에 file 을 manual 하게 restore 할 필요가
없어졌다.

Incremental backup 을 제공하고, backup 이나 restore 중에 current block
detection 을 해 주며(v$backup_corruption, v$copy_corruption 또는 alert
log 에 report), Rman 작업시에 parallelization 을 제공하며, open database
backup 동안 특별한 redo 를 발생하지 않는다.


- 구조

Recovery
manager in OEM(oracle
enterprise ---> Database
manager) <--- (catalog)
or RMAN

/| |
| |/

DATABASE ---> OS
(target to backup) <--- Device


- 구성 요소 설명

1) recovery manager
Command 를 해석하고, backup, restore, recover 를 실행하기 위해 target
database 로 command 를 전달한다. recovery catalog 를 update 한다. 실행
과정을 조정, 모니터링 한다.

2) Target database
backup,restore,recovery action 이 수행될 데이타베이스

3) Recovery Catalog
Information 저장장소. 즉, target database 의 물리적 스키마, datafile 과
archivelog 의 backup sets 과 pieces, backup script 등을 포함하고 있음.
rman 작업시 recovery catalog 정보를 이용한다.

4) channel
allocation channel 은 target database 의 backup,restore,recover 에 대한
server process 초기화를 한다. 즉, 이 channel 은 disk 를 포함 기타 OS
device 를 지정하게 되며, 이 갯수에 따라 parallelization 의 degree 가 결정
된다.


- recovery catalog 를 사용할 것인지를 결정하기
catalog 없이 RMAN 을 사용할 때의 단점은 recovery catalog 의 overhead 가
없는 대신, Point-In-Time recovery 를 쉽게 할 수 없다. 또한, control file
손상시에 recovery 할 수 없고, stored script 를 사용할 수 없다.
(datafile 이 20개 이상일 경우에는 recovery catalog 사용을 권장한다.)


- Setup

가. Recovery catalog 생성

1. Backup(target) db 외의 별도의 db 생성 (8.0.3 이상)

2. catalog DB 에 분리된 tablespace 생성

create tablespace rcvcat datafile '/oracle/rcvcat/rcvcat01.dbf'
size 20 M;

3. catalog 의 owner 생성과 권한부여

create user rman identified by rman
temporary tablespace temp
default tablespace rcvcat;

grant dba,connect,resource,recovery_catalog_owner to rman;

4. catalog 저장에 필요한 object 생성

cd $ORACLE_HOME/rdbms/admin
sqlplus rman/rman
@catrman

나. Recovery manager 기동

1. recovery catalog DB 를 사용하는 경우

rman target \"system/manager\" rcvcat \"rman/rman@orabeta1\"

(orabeta1 은 catalog DB 로 접속하는 tnsname 입니다.
즉, sqlplus rman/rman@orabeta1 하면, catalog db 와 접속되어야 합니다.)

2. recovery catalog DB 를 사용하지 않는 경우
rman target system/manager@target nocatalog

위 경우 모두, target database 를 catalog 에 등록해야 한다.
RMAN> register database;

다. Backup 시작
- Backup 은 database 가 open 또는 close(close 후에는 반드시 mount
상태이어야 한다)
- Backup 의 단위
full database
tablespace
datafile
control file
archived logs
- Backup 의 예

--full database

run {
allocate channel dev1 type disk;
allocate channel dev2 type disk;
backup full filesperset 2
(database format '/user7/ora8/backup.%n_%p') ;
release channel dev1;
release channel dev2;
}

-- tablespace

run {
allocate channel dev_1 type disk ;
backup incremental level 0
filesperset 1
(tablespace system channel dev_1 format '/vol312/net8%d_%u');
release channel dev_1;

}


-- datafile

run{
allocate channel dev1 type disk;
copy datafile "/vo3/orabeta6/backup/copy_tools.dbf"
to "/vo3/orabeta6/oradata/orabeta6/tools01.dbf"
tag "org_tools";
release channel dev1;
}


-- archived logs

create script beta_arch_full {
allocate channel dev1 type disk;
allocate channel dev2 type disk;
backup full filesperset 10
(archivelog all delete input
format '/vo3/orabeta6/backup/beta_arch.%s_%p') ;
release channel dev1;
release channel dev2;
}

-- backup to tape

run {
allocate channel t1 type 'sbt_tape';
backup
format 'dbfull_sunday_s%s_t%t'
tag 'Sunday full backup'
(database);
}

라. Restore

- Backup 으로 부터 원래 위치로 복원

- Archive log file 은 manual 하게 restore 할 수도 있고, 필요하다면
recovery 시 자동으로 restore 된다.

restore (archivelog all| like <filename | <archivelog range>);

- restore 명령
database : restore (database);
tablespace : restore (tablespace <name>,...,<name>);
datafile : restore (datafile <name>,...,<name>);
control file : restore control file to location;

- recovery 시에 database 는 어떤 상태에 있어야 하는가 ?
1) control file restore - not mount
SVRMGRL> startup nomount

2) whole database, or system tablespace - not open
SVRMGRL> startup mount

3) tablespace or datafile - open but tablespace or datafile offline
SVRMGRL> alter tablespace user_data offline temporary;
SVRMGRL> alter database datafile '/oracle/file/user_data1.dbf' offline;


마, Recovery

- Recoervy 는 file restore 후의 과정이다.

1) Archive log mode : complete recovery, incomplete recovery 가 가능하다
2) No archive log mode : consistent whole database backup 으로 부터
restore 하는 것이 유일한 option 이다.

- whole database recovery 의 예

svrmgrl
connect internal
shutdown abort
startup mount
-------------------------------------------------------------------
rman target \"system/manager\" rcvcat \"rman/rman@orabeta1\"

run {
allocate channel dev1 type disk;
allocate channel dev2 type disk;
restore database;
recover database;
release channel dev1;
release channel dev2;
}

or

run {
allocate channel dev1 type disk;
allocate channel dev2 type disk;
restore tablespace 'SYSTEM';
restore tablespace 'USERS';
recover tablespace 'SYSTEM';
recover tablespace 'USERS';
sql "alter database open ";
release channel dev1;
release channel dev2;
}

- datafile 하나가 사용할 수 없을 경우의 recovery
가정) full backup set 이 있을 경우

ORA-01157: cannot identify data file 3 - file not found
ORA-01110: data file 3: '/user7/ora8/oradata/ORA8/temp01.dbf'

SVRMGR> startup mount

rman target \"system/manager\" rcvcat \"rman/rman@orabeta1\"
RMAN> run {
allocate channel dev1 type disk;
restore database;
recover database;
release channel dev1;
};

laalaal~
반응형
Posted by [PineTree]
ORACLE/ADMIN2007. 7. 6. 01:46
반응형

Application 수행 중 자주 발생하는 Snapshot too old (ORA-01555) 에러에 대하여 많은 개발자 및 DBA들이

에러 발생의 원인에 대하여 빈번하게 문의를 하고 있어 간단하게 원인 및 대처 방안에 대하여 알아보고자 한다.

 

이 에러의 발생 원인은 SQL 수행 중 읽고자 하는 데이터가 다른 Transaction에 의해 변경이 되었고,

변경 전 데이터를 RBS에서 읽고자 했으나 찾지 못하는 경우에 발생하는 에러이다.

 

이러한 에러 발생의 주요 원인으로는 RBS (or Undo)가 너무 작기 때문에 Commit 된 Old Image가 RBS에서

삭제 (Re-write)되는 일이 발생할 수도 있으나, 대부분의 경우는 에러가 발생한 Application의 SQL이 너무

오래 돌기 때문에 (Long-running Query) 발생하는 경우가 대부분이다.

 

즉, SQL이 실행된 시점에는 읽고자 하는 데이터가 A 였으나 다른 Transaction에 의해 B로 Update되었고,

Commit이 실행 되었으므로 RBS에서 다른 Transaction에 의해 해당 RBS의 Extent가 재사용되는 경우에

A라는 Old-Image가 없어지게 되는 것이다.

 

해당 데이터를 읽고자 했던 프로세스가 오랜시간 이후에 해당 데이터를 RBS에서 읽고자 했으나,

이미 다른 Transaction에 의해 A라는 Image가 없어서 버린 이후 이므로 Snapshot too old 에러를 발생하게 되는 것이다.

 

일반적으로 운영 DB에서는 RBS 또는 UNDO Tablespace를 충분히 설정하는 경우가 대부분이며, 9i 이후 부터 적용된

UNDO_RETENTION도 충분히 크게 설정했다면 SQL의 수행시간이 너무 긴 것이 에러 발생의 주요 원인일 것이며,

RBS 또는 UNDO Size의 검토 와 SQL의 성능을 검토하는 것이 좋다.

 

SQL이 오래 수행되는 주요 원인은 아래와 같다.

 

1. 비효율적인 실행 계획 (Exection plan)

    - 의도하지 않은 Cartesian merge join

    - 비효율적인 조인 순서등으로 불필요한 블록 액세스가 발생하는 경우

    - 특정 테이블이 FULL SCAN으로 액세스되면서 Nested Loop 조인되는 경우

    - 비효율적인 인덱스를 사용하는 Nested Loop

    - Hash Join시 대용량 테이블이 Proning되는 경우 (Direct path read/write waiting, Disk I/O)

    - Non-mergeable view에 bind변수로 검색조건을 사용하거나 다른 테이블과의 조인에 사용하는 경우

2. 검색범위가 너무 넓은 경우

    - 처리해야 할 데이터 (READ 해야 할 데이터)의 범위가 너무 넓은 경우 (예: 3년치 SALES 데이터 SUMMARY)

    - 검색조건에 아무것도 넣지 않고 SEARCH 하는 경우

 

위의 경우 말고도 SQL의 성능이 저하되는 경우는 많이 있으므로 ORA-01555 에러가 발생할 경우

SQL의 응답속도에 문제가 없는지를 먼저 검토하는 것이 필요하다.

반응형

'ORACLE > ADMIN' 카테고리의 다른 글

10g SYSAUX tablespace 줄이기  (0) 2007.08.02
RMAN  (0) 2007.07.24
오라클9i 데이타베이스 초기화 매개변수(전부) 설명  (0) 2007.06.30
오라클 버젼 확인 명령어  (0) 2007.06.19
패스워드 제한 설정  (0) 2007.06.16
Posted by [PineTree]
ORACLE/ADMIN2007. 6. 30. 19:42
반응형

 

========================================
오라클9i 데이타베이스 초기화 매개변수(전부) 설명
========================================

크헐~ 간만에 노가다를...헐헐~ 이거 만드느라고 단순노동 좀 했슴다...
머...오라클 데이타베이스 생성하다보면 나오는 건데...이거 정리해논 문서가
없는거 같아서 그대로 옮겼슴다...머...보기에 별루 좋지는 않으니 다른 이름으로 저
장 하신담에 찾기 기능을 이용해서 참고하도록 하세요..한번 읽어보면 그냥 읽어 볼만
 함돠...헐헐~
 
아차차차차~~!!! 이거는 Oracle DataBase Release 2 (9.2.0.1) 버전꺼 임돠...

07_DICTIONARY_ACCESSIBILITY
설명    : Oracle7에서 Oracle8i로 이전할 때 주로 사용됩니다. TRUE로 설정된 경우 S
ELECT ANY TABLE과 같은 SYSTEM 권한은 SYS 스키마의 객체에 대한 액세스를 제한하지
않습니다. (Oracle7 기능) FALSE인 경우 사용자는 SELECT_CATALOG_ROLE, EXECUTE_CATA
LOG_ROLE 또는 DELETE_CATALOG_ROLE을 부여 받았을 때만 SYS 스키마 객체에 액세스할
수 있습니다.
사용 가능한 값: TRUE | FALSE
기본값  : TRUE

A
active_instance_count
설명    : 2개의 인스턴스로 이루어진 클러스터에서 사용자가 하나의 인스턴스를 기본 인스턴스로 지정하고 나머지 인스턴스를 보조 인스턴스로 지정할 수 있도록 합니다.
이 매개변수는 2개 이상의 인스턴스가 포함된 클러스터에서는 기능을 수행하지 않습니다.
사용 가능한 값: 1 또는 >= 클러스터의 인스턴스 수입니다.
기본값  : 없음

aq_tm_processes
설명    : 0보다 클 경우 대기열 메시지에 대한 시간 모니터링이 활성화됩니다. 시간은 응용 프로그램 개발에 사용되는 지연 및 만료 등록정보를 지정하는 메시지에 사용할 수 있습니다.
사용 가능한 값: 0 - 10
기본값  : 0

archive_lag_target
설명: 이 매개변수는 시간 기반의 스레드 고급 기능과 관련됩니다.
사용 가능한 값: 0 또는 [60, 7200]의 모든 정수입니다.
기본값: 기본값은 0으로 시간 기반의 스레드 고급 기능을 비활성화합니다. 그렇지 않
은 경우 값은 초 단위의 숫자로 표시됩니다.

audit_file_dest
설명    : 데이터베이스에 대한 모든 SYSDBA 또는 INTERNAL 접속이 이 디렉토리에 감
사 파일을 생성합니다. (UNIX의 경우에만)
사용 가능한 값: 유효한 임의 디렉토리 이름
기본값  : ORACLE_HOME/rdbms/audit

audit_trail
설명    : 데이터베이스 감사 기능을 활성화하거나 비활성화합니다. 감사 레코드는 매
개변수 값이 TRUE 또는 DB일 경우에는 SYS.AUD$ 테이블에 기록되고 매개변수 값이 OS
인 경우에는 운영 체제 파일에 기록됩니다.
사용 가능한 값: NONE | FALSE | DB | TRUE | OS
기본값  : NONE

 

B
background_core_dump
설명    : 생성된 코어 파일에 SGA 정보를 덤프할지 여부를 지정합니다. (UNIX의 경우
)
사용 가능한 값: FULL | PARTIAL
기본값  : FULL

background_dump_dest
설명    : Oracle 작업 중 백그라운드 프로세스(LGWR, DBW n 등)에 대한 추적 파일을
기록할 경로명(디렉토리 또는 디스크)을 지정합니다. 또한 중요한 이벤트 및 메시지를
 기록하는 데이터베이스 경보 파일의 위치를 정의합니다.
사용 가능한 값: 유효한 임의 디렉토리 이름입니다.
기본값  : ORACLE_HOME/rdbms/log (운영 체제에 따라 다름)

backup_tape_io_slaves
설명    : Recovery Manager 매개변수로 서버 프로세스 또는 추가 입출력 슬래이브를
사용하여 테이프를 읽거나 테이프에 기록할지 결정합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

bitmap_merge_area_size
설명    : 인덱스의 범위 스캔을 통해 읽어들인 비트맵을 병합하는 데 사용되는 메모
리 크기를 지정합니다.
사용 가능한 값: 시스템에 따라 다릅니다.
기본값  : 1MB

blank_trimming
설명    : TRUE 값을 지정하면 원본 길이가 대상 길이보다 길더라도 데이터를 할당할
수 있습니다. (SQL92 호환)
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

buffer_pool_keep
설명    : 객체를 메모리에 보존하여 입출력을 감소시키는데 목적이 있는 DB_BLOCK_BU
FFERS에서 할당된 유지 풀 크기입니다.
사용 가능한 값: 특정 문자열 값입니다. (예:. buffers:400, lru_latches:3)
기본값  : 없음

buffer_pool_recycle
설명    : 객체를 사용한 후 제거하여 메모리를 재사용하기 위해 DB_BLOCK_BUFFERS에
서 할당한 재생 풀 크기입니다.
사용 가능한 값: 특정 문자열 값입니다. (예: buffers:50, lru_latches:1)
기본값  : 없음


C
circuits
설명    : 수신 및 송신 네트워크 세션에 대해 사용 가능한 가상 회로의 총 수를 지정
합니다. 이 값은 인스턴스의 전체 SGA 요구 사항을 구성하는 몇몇 매개변수 중의 하나
입니다.
기본값  : 파생: 공유 서버 구조를 사용하는 경우 SESSIONS 매개변수 값. 그렇지 않은
 경우 0

cluster_database
설명: CLUSTER_DATABASE를 TRUE로 설정하여 Real Application 클러스터 옵션을 활성화
합니다.
사용 가능한 값: TRUE | FALSE
기본값: FALSE

cluster_database_instances
설명: 클러스터 데이터베이스의 일부로 현재 구성되어 있는 인스턴스의 수입니다. 이
값은 구성된 인스턴스 수에 따라 달라지는 SGA 구조의 크기를 결정할 때 사용됩니다.
이 매개변수를 제대로 설정하면 SGA의 메모리 사용이 개선됩니다. 여러 매개변수는 이
 값을 사용하여 계산됩니다.
사용 가능한 값: 0이 아닌 값입니다.
기본값: 1

cluster_interconnects
설명: Real Application 클러스터 환경에서 사용할 수 있는 추가 상호 접속입니다. 단
일 상호 접속이 클러스터 데이터베이스의 대역폭 요구 사항을 충분히 만족시키지 않을
 때 이 매개변수를 설정해야 합니다. 이 매개변수를 설정하지 않으면 Oracle은 Oracle
9i Real Application 클러스터 상호 노드 통신에 대한 해당 상호 접속을 확인하는 현
재 의미를 보존합니다.
사용 가능한 값: 콜론으로 구분된 하나 이상의 IP 주소입니다.
기본값: NONE

compatible
설명    : 이전 릴리스와의 역호환성을 보증하는 동시에 새 릴리스를 사용할 수 있습
니다.
사용 가능한 값: 현재 릴리스를 기본값으로 합니다.
기본값  : 릴리스에 따라 다름

commit_point_strength
설명    : 이 값은 분산 트랜잭션에서 커밋 위치 사이트를 결정합니다.
사용 가능한 값: 0-255 
기본값  : 운영 체제에 따라 다름

control_files
설명    : 하나 이상의 제어 파일 이름을 지정합니다. Oracle은 서로 다른 장치 또는
OS 파일 이중화에 대해 여러 개의 파일을 사용하도록 권장합니다.
사용 가능한 값: 1 - 8 파일 이름입니다. (경로명 포함)
기본값  : 운영 체제에 따라 다름

constrol_file_record_keep_time
설명    : 제어 파일의 재사용 가능 섹션에 있는 레코드를 유지해야 하는 최소 기간(
일 수)입니다.
사용 가능한 값: 0 - 365
기본값  : 7

core_dump_dest
설명    : 코어 덤프 위치를 지정하는 디렉토리 이름입니다. (UNIX의 경우)
사용 가능한 값: 유효한 임의 디렉토리 이름입니다.
기본값  : ORACLE_HOME/dbs

cpu_count
설명    : Oracle이 다른 매개변수 값을 계산하는 데 사용할 수 있는 CPU 수입니다.
이 값은 변경하지 마십시오.
사용 가능한 값: 0 - 무제한입니다.
기본값  : Oracle이 자동으로 설정함

create_bitmap_area_size
설명    : CREATE_BITMAP_AREA_SIZE가 비트맵 인덱스 작성에 할당된 메모리 크기를 지
정합니다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 8 MB

cusor_space_for_time
설명    : 공유 SQL 영역을 커서가 참조하는 동안 공유 풀에 유지할지 또는 일정 시간
이 지난 후 삭제할지 결정합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE(일정 시간 후 삭제됨)

cursor_sharing
설명    : 최종적으로 동일한 공유 커서를 공유할 수 있는 SQL 문의 종류를 제어합니
다.
사용 가능한 값:
 FORCE: 일부 리터럴이 다르지만 명령문의 의미에는 영향을 주지 않고 나머지는 동
일한 경우 명령문이 커서를 공유하도록 합니다.
 EXACT: 동일한 SQL 문만 커서를 공유하도록 합니다.
기본값  : EXACT

 

D
db_2k_cache_size
설명: 2K 버퍼에 대한 캐시 크기를 지정합니다. db_block_size가 2K가 아닌 다른 값을
 가지는 경우에만 매개변수를 설정할 수 있습니다.
사용 가능한 값: 0M 또는 적어도 16M입니다. 플랫폼별 블록 크기 제한 사항이 적용됩
니다.
기본값: 0M

db_4k_cache_size
설명: 4K 버퍼에 대한 캐시 크기를 지정합니다. db_block_size가 4K가 아닌 다른 값을
 가지는 경우에만 매개변수를 설정할 수 있습니다.
사용 가능한 값: 0M 또는 적어도 16M입니다. 플랫폼별 블록 크기 제한 사항이 적용됩
니다.
기본값: 0M

db_8k_cache_size
설명: 8K 버퍼에 대한 캐시 크기를 지정합니다. db_block_size가 8K가 아닌 다른 값을
 가지는 경우에만 매개변수를 설정할 수 있습니다.
사용 가능한 값: 0M 또는 적어도 16M입니다. 플랫폼별 블록 크기 제한 사항이 적용됩
니다.
기본값: 0M

db_16k_cache_size
설명: 16K 버퍼에 대한 캐시 크기를 지정합니다. db_block_size가 16K가 아닌 다른 값
을 가지는 경우에만 매개변수를 설정할 수 있습니다.
사용 가능한 값: 0M 또는 적어도 16M입니다. 플랫폼별 블록 크기 제한 사항이 적용됩
니다.
기본값: 0M

db_32k_cache_size
설명: 32K 버퍼에 대한 캐시 크기를 지정합니다. db_block_size가 32K가 아닌 다른 값
을 가지는 경우에만 매개변수를 설정할 수 있습니다.
사용 가능한 값: 0M 또는 적어도 16M입니다. 플랫폼별 블록 크기 제한 사항이 적용됩
니다.
기본값: 0M

db_block_buffers
설명    : 버퍼 캐시의 Oracle 블록 수입니다. 이 매개변수 값은 인스턴스에 대한 전
체 SGA 크기에 중요한 영향을 줍니다.
사용 가능한 값: 4 - 운영 체제에 따라 다릅니다.
기본값  : 32768

db_block_checking
설명    : 트랜잭션 관리 블록의 손상 여부를 확인할지 제어할 때 사용됩니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

db_block_checksum
설명    : 읽거나 기록한 모든 데이터 블록에 대해 DBWn, ARCH, SQL*Loader가 블록 체
크섬을 계산 또는 확인할지 지정합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

db_block_size
설명    : 오라클 데이터베이스 블록의 크기(바이트)입니다. 이 값은 데이터베이스 생
성 시 설정되며 이후에는 변경할 수 없습니다.
사용 가능한 값: 1024 - 65536입니다. (운영 체제에 따라 다름)
기본값  : 2048(운영 체제에 따라 다름)

db_cache_advice
설명: 다른 캐시 크기를 사용한 예상 작업에 대한 통계 수집을 활성화 및 비활성화합
니다. 정보는 V$DB_CACHE_ADVICE 뷰에 수집됩니다.
사용 가능한 값: OFF--권고가 해제되고 권고에 대한 메모리는 할당되지 않습니다. ON-
-권고가 설정됩니다. (예: CPU 및 메모리 오버헤드가 모두 초래됩니다.) READY--권고
가 해제되지만 권고에 대한 메모리는 할당된 상태로 유지됩니다.
기본값: OFF

db_cache_online_log_dest_1

db_cache_online_log_dest_2

db_cache_online_log_dest_3

db_cache_online_log_dest_4

db_cache_online_log_dest_5
설명: 온라인 로그 및 제어 파일 생성에 대한 기본 위치를 설정합니다. 기본값은 온라
인 로그 또는 제어 파일 생성 중에 파일 이름이 지정되지 않을 때마다 사용됩니다.
사용 가능한 값: 파일 시스템 디렉토리 이름입니다. 디렉토리가 존재해야 합니다. 디
렉토리는 Oracle이 해당 디렉토리에 파일을 생성할 수 있도록 하는 권한을 가져야 합
니다.

db_cache_size
설명: 표준 블록 크기 버퍼에 대한 캐시 크기를 지정합니다.
사용 가능한 값: 적어도 16M입니다.
기본값: 48M

db_create_file_dest
설명: 데이터 파일, 제어 파일 및 온라인 로그 생성에 대한 기본 위치를 설정합니다.
사용 가능한 값: 파일 시스템 디렉토리 이름입니다. 디렉토리가 존재해야 합니다. 디
렉토리는 Oracle이 해당 디렉토리에 파일을 생성할 수 있도록 하는 권한을 가져야 합
니다.

db_domain
설명    : 도메인에 고유한 데이터베이스 이름을 작성하기 위해 권장하는 데이터베이
스 이름의 확장자를 지정합니다. (예: US.ORACLE.COM)
사용 가능한 값: 마침표로 구분된 임의의 문자열로 최대 길이가 128자입니다.
기본값  : WORLD

db_files
설명    : 데이터베이스에 대해 열 수 있는 데이터베이스 파일의 최대 개수입니다.
사용 가능한 값: MAXDATAFILES - 운영 체제에 따라 다릅니다.
기본값  : 운영 체제에 따라 다름 (예: Solaris의 경우 200)

db_file_multiblock_read_count
설명    : 전체 순차 스캔 관련 입출력 작업을 하는 동안 읽어온 최대 블록 수입니다.
 
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 8

db_file_name_convert
설명    : 기본 데이터베이스 상의 새 데이터 파일 이름을 대기 데이터베이스 상의 파
일 이름으로 변환합니다.
사용 가능한 값: 유효한 기본/대기 디렉토리 및 파일 이름 쌍입니다.
기본값  : 없음

db_keep_cache_size
설명: KEEP 버퍼 풀의 버퍼 수를 지정합니다. KEEP 버퍼 풀의 버퍼 크기는 기본 블록
크기(블록 크기는 db_block_size에 의해 정의됨)입니다.
사용 가능한 값: 0 또는 적어도 하나의 미립자 크기(더 작은 값은 미립자 크기로 자동
으로 반올림됨)입니다.
기본값: 0M

db_name
설명    : CREATE DATABASE 문에 지정된 이름과 동일한 데이터베이스 식별자입니다.
사용 가능한 값: 최대 8자의 유효한 임의의 이름입니다.
기본값  : 없음(지정해야 함)

db_recycle_cache_size
설명: RECYCLE 버퍼 풀의 크기를 지정합니다. RECYCLE 풀의 버퍼 크기는 기본 블록 크
기입니다.
사용 가능한 값: 0 또는 적어도 하나의 미립자 크기(더 작은 값은 미립자 크기로 자동
으로 반올림됨)입니다.
기본값: 0M

db_writer_processes
설명    : 인스턴스에 대한 데이터베이스 기록자 프로세스의 초기 개수입니다. DBWR_I
O_SLAVES를 사용하는 경우 하나의 데이터베이스 기록자만 사용됩니다.
사용 가능한 값: 1 - 10
기본값  : 1

dblink_encrypt_login
설명    : 다른 Oracle 서버에 접속 중일 때 데이터베이스 링크에 암호화된 암호를 사
용할지 지정합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

dbwr_io_slaves
설명    : DBW0 프로세스가 사용하는 입출력 슬래이브의 수입니다. DBW0 프로세스와
해당 슬래이브는 항상 디스크에 기록합니다.
사용 가능한 값: 0 - 운영 체제에 따라 다릅니다.
기본값  : 0

dispatchers
설명    : 공유 서버를 사용하여 공유 환경을 설정하기 위한 작업 할당자의 수와 유형
을 설정합니다. 이 매개변수에는 여러 가지 옵션을 지정할 수 있습니다. 따라서 자세
한 내용은 Oracle8i 관리자 설명서와 Oracle Net Administrator's Guide를 참조하십시
오. 예제 문자열 값은 ''(PROTOCOL=TCP)(DISPATCHERS=3)''입니다.
사용 가능한 값: 유효한 매개변수 사양입니다.
기본값  : NULL

distributed_transactions
설명    : 데이터베이스가 한 번에 참여할 수 있는 분산 트랜잭션의 최대 개수입니다.
 네트워크 실패가 비정상적으로 많이 발생하여 많은 수의 미확정 트랜잭션이 생기는
경우 이 값을 줄입니다.
사용 가능한 값: 0 - TRANSACTIONS 매개변수 값입니다.
기본값  : 운영 체제에 따라 다름

disk_asynch_io
설명    : 데이터 파일, 제어 파일, 로그 파일에 대한 입출력이 비동기적인지, 즉 테
이블 스캔 시 프로세스가 입출력 및 CPU 요청과 겹치는지 제어합니다. 사용 중인 플랫
폼이 디스크에 대한 비동기 입출력을 지원할 경우에만 이 매개변수를 변경하십시오.
사용 가능한 값: TRUE | FALSE
기본값  : TRUE

dml_locks
설명    : 모든 사용자에 의해 획득된 테이블 잠금의 최대 개수입니다. DML(데이터 조
작어) 작업을 수행 중인 각 테이블에는 DML(데이터 조작어) 잠금이 필요합니다. 예를
들어, 3명의 사용자가 2개의 테이블을 수정하는 경우 6의 값이 필요합니다.
사용 가능한 값: 0 또는 20부터 무제한입니다.
기본값  : 4 * TRANSACTIONS (파생)

drs_start
Oracle이 DRMON 프로세스를 시작해야 하는지 여부를 결정하도록 합니다. DRMON은 치명
적이지 않은 Oracle 백그라운드 프로세스며 인스턴스가 존재하는 한 존재합니다.
사용 가능한 값: TRUE | FALSE입니다.
기본값: FALSE

 

E
enqueue_resources
설명    : 대기열에 넣으면 공유 리소스에 대해 동시 프로세스를 활성화할 수 있습니
다. 예를 들어, Oracle은 특정 프로세스가 공유 모드로 테이블을 잠그고 다른 프로세
스가 공유 갱신 모드로 해당 테이블을 잠그는 작업을 허용합니다.
사용 가능한 값: 10 - 65535(7.3) 또는 10 - 무제한(8.1)입니다.
기본값  : 파생됨(값이 DML_LOCKS + 20 이상일 경우 적당함)

event
설명    : 오라클 고객 지원 센터에서 시스템을 디버그하는 데 사용합니다. 일반적으
로 변경해서는 안됩니다. \n사용 가능한 값: 사용할 수 없습니다. \n기본값  : 없음


F
fal_client
설명: FAL 서비스(FAL_SERVER 매개변수를 통해 구성)에 의해 사용되는 FAL 클라이언트
 이름이 FAL 클라이언트를 나타내도록 지정합니다. 매개변수 값은 Oracle Net 서비스
이름입니다. 이 Oracle Net 서비스 이름은 FAL 서버 시스템에서 FAL 클라이언트(예:
이 대기 데이터베이스)를 가리키도록 제대로 구성된 것으로 간주됩니다.
사용 가능한 값: Oracle Net 서비스 이름의 문자열 값입니다.

fal_server
설명: 이 대기 데이터베이스에 대한 FAL 서버를 지정합니다. 값은 Oracle Net 서비스
이름입니다. Oracle Net 서비스 이름은 대기 데이터베이스 시스템에서 원하는 FAL 서
버를 가리키도록 제대로 구성된 것으로 간주됩니다.
사용 가능한 값: Oracle Net 서비스 이름의 문자열 값입니다.

fast_start_io_target
설명    : 충돌 또는 인스턴스 복구 중 필요한 입출력의 수를 지정합니다. DB_BLOCK_M
AX_DIRTY_TARGET 값을 사용할 때보다 복구 진행 시간에 대한 더욱 정밀한 제어를 가능
하게 합니다.
사용 가능한 값: 0은 입출력 복구 제한을 사용하지 않고 1000은 캐시의 모든 버퍼를
사용합니다.
기본값  : 캐시의 모든 버퍼

fast_start_mttr_target
설명: 데이터베이스 단일 인스턴스의 고장 복구를 위해 필요한 초 단위의 예측 시간을
 지정합니다. FAST_START_MTTR_TARGET은 해당 복구 시간이 전체 MTTR(평균 복구 시간)
 부분 내에 있도록 데이터베이스 작업을 수정하는 매개변수 집합으로 내부적으로 변환
됩니다. 매개변수는 "fast start fault recovery" 기능을 가지는 이러한 Edition으로
제한됩니다.
사용 가능한 값: [0, 3600]입니다. 이는 데이터 버터 캐시 항목 수 이상의 제한 및 최
대 크기의 로그에 있는 블록 수보다 큰 제한을 계산합니다.
기본값: 0

fast_start_parallel_rollback
설명    : 병렬 롤백 수행 시 최대 프로세스 수를 결정합니다. 대부분의 트랜잭션이
오랫동안 실행 중인 시스템에서 유용합니다.
사용 가능한 값: FALSE | LOW | HIGH
기본값  : LOW (2 * CPU_COUNT)

fixed_date
설명    : SYSDATE가 반환하는 날짜입니다. 시스템 날짜가 아닌 고정된 날짜를 항상
반환해야 할 경우 테스트하는 데 유용합니다. 큰 따옴표를 사용하거나 사용하지 않습
니다. 작은 따옴표는 사용하지 마십시오.
사용 가능한 값: YYYY-MM-DD-HH24:MI:SS 또는 기본 Oracle 날짜 형식입니다.
기본값  : NULL


G
gc_files_to_locks
설명    : 클러스터 데이터베이스 매개변수로 데이터 파일에 대한 PCM(병렬 캐시 관리
) 잠금 매핑을 제어합니다.
구문         : GC_FILES_TO_LOCKS = '{file_list=lock_count[!blocks][R][EACH][:...
]'
기본값  : NULL

global_context_pool_size
설명: 글로벌 응용 프로그램 컨텍스트 저장 및 관리를 위해 할당할 SGA의 메모리 양입
니다.
사용 가능한 값: 모든 정수 값입니다.
기본값: 1M

global_names
설명    : 데이터베이스 링크 이름이 접속하는 데이터베이스 이름과 동일해야 하는지
지정합니다. FALSE로 지정하면 확인을 수행하지 않습니다. 분산 처리의 일관성있는 이
름 지정 규칙을 위해 이 매개변수를 TRUE로 설정하십시오.
사용 가능한 값: TRUE | FALSE
기본값  : TRUE

 


H
hash_ared_size
설명    : 병렬 실행 작업 및 DML(데이터 조작어) 또는 DDL(데이터 정의어) 문에 관련
된 값으로 해시 조인에 사용될 메모리의 최대 크기를 바이트 단위로 지정합니다. 자세
한 내용은 Oracle8i 개념 설명서를 참조하십시오.
사용 가능한 값: 0 - 운영 체제에 따라 다른 값을 가집니다.
기본값  : 파생: 2 * SORT_AREA_SIZE 매개변수 값

hash_join_enabled
설명    : TRUE로 설정된 경우 최적기는 가장 효율적인 조인 방식을 계산할 때 해시
조인을 고려합니다. Oracle은 데이터 웨어하우징 응용 프로그램에 대해 TRUE 값을 사
용하도록 권장합니다.
사용 가능한 값: TRUE | FALSE
기본값  : TRUE

hi_shared_memory_address
설명    : 시스템 글로벌 영역(SGA)의 런타임 시 시작 주소를 지정합니다. SGA의 시작
 주소를 링크 시 지정하는 플랫폼에서는 무시됩니다. 64비트 플랫폼에서는 이 매개변
수를 사용하여 상위 및 하위 32비트를 지정합니다. 설정하지 않은 경우 기본적으로 플
랫폼에 따라 다른 위치로 지정됩니다.
사용 가능한 값: 임의 정수값입니다.
기본값  : 0

hs_autoregister
설명    : 이기종 서비스(HS) 에이전트의 자동 자체 등록을 활성화하거나 비활성화합
니다. 활성화된 경우 동일한 에이전트를 통해 이후에 접속할 때 적은 수의 오버헤드를
 유발하도록 정보를 데이터 딕셔너리로 업로드합니다.
사용 가능한 값: TRUE | FALSE
기본값  : TRUE

 

I
ifile
설명    : 현재 매개변수 파일에 다른 매개변수 파일을 내장시키기 위해 사용합니다.
이 매개변수는 최대 중첩 수준이 3단계를 초과하지 않는 범위 내에서 하나의 매개변수
 파일의 서로 다른 행에 여러 번 포함시킬 수 있습니다.
사용 가능한 값: 유효한 임의 매개변수 파일 이름입니다. (구문: IFILE = parameter_f
ile_name)
기본값  : NULL

instance_groups
설명    : 클러스터 데이터베이스 매개변수로 현재 인스턴스를 콤마로 구분된 목록을
사용하여 지정한 그룹에 할당합니다. 인스턴스 그룹은 병렬 작업에 대해 질의 슬래이
브를 할당할 때 사용됩니다. \n사용 가능한 값: 콤마로 구분된 그룹 이름의 문자열입
니다. \n기본값  : NULL

instance_name
설명    : 여러 인스턴스가 공통 서비스 이름을 공유할 때 각 데이터베이스 인스턴스
를 고유하게 식별합니다. INSTANCE_NAME과 실제로 호스트 상의 인스턴스 공유 메모리
를 고유하게 식별하는 SID를 혼동하시 마십시오.
사용 가능한 값: 임의 영숫자입니다.
기본값  : 데이터베이스 SID

instance_number
설명    : 클러스터 데이터베이스 매개변수로 저장 영역 매개변수 FREELIST GROUPS를
사용하여 생성된 데이터베이스 객체 소유의 사용 가능한 목록 그룹에 대한 인스턴스
매핑에 고유 번호를 지정합니다. ALTER TABLE ... ALLOCATE EXTENT 문의 INSTANCE 절
에 이 값을 사용하여 이 인스턴스에 확장 영역을 동적으로 할당합니다 \nn사용 가능한
 값: 1 - MAX_INSTANCES입니다. (데이터베이스 생성 시 지정됨) \n기본값  : 사용 가
능한 최하위 번호(인스턴스 시작 순서와 다른 인스턴스에 지정된 INSTANCE_NUMBER 값
에 따라 다름)


J
java_max_sessionspace_size
설명    : 서버에서 Java 프로그램 실행에 사용할 수 있는 메모리의 최대 크기를 바이
트 단위로 지정합니다. 특정 데이터베이스 호출에서 다른 데이터베이스 호출로 Java
상태를 저장합니다. 사용자의 세션 지속 시간 Java 상태가 이 값을 초과하면 이 세션
은 메모리 부족 오류로 종료됩니다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 0

java_pool_size
설명    : Java 메소드와 클래스 정의 및 호출 끝에 Java 세션 공간으로 이전된 Java
객체의 공유 인메모리 표현을 저장하는 Java 풀 메모리의 크기를 바이트 단위로 지정
합니다. 자세한 내용은 Oracle8i Java Developer's Guide를 참조하십시오.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 운영 체제에 따라 다름

java_soft_sessionspace_limit
설명    : Java 세션에서 사용되는 Java 메모리에 '부분 제한'을 바이트 단위로 지정
합니다. 사용자의 세션 지속 시간 Java 상태가 너무 많은 메모리를 사용하는 경우 Ora
cle은 경고를 생성하고 추적 파일에 메시지를 기록합니다.
사용 가능한 값: 0 - 4GB
기본값  : 0

job_queue_processes
설명    : 복제된 환경에만 관련된 값으로 인스턴스 당 SNP 작업 대기열 프로세스의
수(SNP0, ... SNP9, SNPA, ... SNPZ)를 지정합니다. 테이블 스냅샷을 자동으로 갱신하
거나 DBMS_JOB에 의해 생성된 요청을 수행하려면 이 매개변수 값을 1 이상으로 설정하
십시오.
사용 가능한 값: 0 - 36
기본값  : 0

 

K

L
large_pool_size
설명    : 공유 서버가 세션 메모리, 메시지 버퍼의 병렬 실행 및 RMAN 백업, 디스크
입출력 버퍼 복구에 사용하는 대형 풀 할당 힙의 크기를 지정합니다.
사용 가능한 값: 600K(최소값)에서 >= 20000M(최대값은 운영 체제에 따라 다름)입니다
.
기본값  : 0(병렬 실행 또는 DBWR_IO_SLAVES를 구성하지 않은 경우)

license_max_users
설명    : 데이터베이스에 생성할 수 있는 최대 사용자 수를 지정합니다. 동시 세션
사용 라이센스와 사용자 라이센스를 모두 활성화하지 마십시오. LICENSE_MAX_SESSIONS
나 LICENSE_MAX_USERS 또는 둘 다 0이어야 합니다.
사용 가능한 값: 0에서 사용자 라이센스 수까지입니다.
기본값  : 0

license_max_sessions
설명    : 동시에 허용하는 동시 사용자 세션의 최대 수를 지정합니다. 이 제한 값에
도달하면 RESTRICTED SESSION 권한을 가진 사용자만 서버에 접속할 수 있습니다. 다른
 모든 사용자는 시스템이 최대 용량에 도달했다는 경고 메시지를 받게 됩니다.
사용 가능한 값: 0에서 세션 라이센스 수까지입니다.
기본값  : 0

license_sessions_warning
설명    : 동시 사용자 세션 수의 경고 제한을 지정합니다. 이 제한 값에 도달해도 추
가 사용자가 접속할 수 있지만 ALERT 파일에 메시지가 기록됩니다. RESTRICTED SESSIO
N 권한을 가진 사용자가 접속할 때 시스템이 최대 용량에 근접하고 있다는 경고 메시
지가 표시됩니다.
사용 가능한 값: 0 - LICENSE_MAX_SESSIONS
기본값  : 0

local_listener
설명    : 동일한 시스템의 데이터베이스 인스턴스를 Oracle Net 리스너로 식별하는 O
racle Net 주소 목록입니다. 각 인스턴스와 작업 할당자는 클라이언트 접속을 활성화
하기 위해 리스너에 등록합니다. 이 매개변수는 현재 버전 8.1에서는 사용되지 않는 M
TS_LISTENER_ADDRESS와 MTS_MULTIPLE_LISTENERS 매개변수보다 우선 적용됩니다.
사용 가능한 값: 유효한 Oracle Net 주소 목록입니다.
기본값  : (ADDRESS_LIST=(Address=(Protocol=TCP)(Host=localhost)(Port=1521)) (Add
ress=(Protocol=IPC)(Key=DBname)))

lock_date
설명    : 전체 SGA를 물리적 메모리로 잠글 때 사용됩니다. 이 기능을 지원하지 않는
 플랫폼에서는 무시됩니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

lock_name_space
설명    : 분산 잠금 관리자(DLM)가 잠금 이름을 생성하기 위해 사용하는 네임스페이
스를 지정합니다. 동일한 클러스터에 동일한 데이터베이스 이름을 가진 대기 또는 복
제 데이터베이스가 있을 경우 이 값을 설정해야 합니다.
사용 가능한 값: 최대 8자로 특수 문자를 수락하지 않습니다.
기본값  : NULL

log_archive_dest
설명    : 데이터베이스가 ARCHIVELOG 모드로 실행 중이거나 아카이브된 리두 로그에
서 데이터베이스를 복구하는 중에만 적용 가능합니다. 8.1 Enterprise Edition에서는
LOG_ARCHIVE_DEST_n을 대신 사용해야 합니다.
사용 가능한 값: NULL 문자열 또는 원시 분할 영역을 제외한 유효한 임의 경로 및 장
치 이름입니다.
기본값  : NULL

log_archive_dest_1
설명    : 아카이브된 리두 로그 파일을 복제할 수 있는 5개의 로컬(LOCATION으로 지
정) 또는 원격(SERVICE로 지정) 대상 중 첫번째 대상입니다. 이 매개변수는 Enterpris
e Edition Oracle8i 데이터베이스 이상에 대해서만 유효합니다.
사용 가능한 값: 구문: (null_string | SERVICE=tnsnames-service |LOCATION=director
y-spec)[MANDATORY | OPTIONAL][REOPEN=integer]
기본값  : NULL

log_archive_dest_2
설명    : 아카이브된 리두 로그 파일을 복제할 수 있는 5개의 로컬(LOCATION으로 지
정) 또는 원격(SERVICE로 지정) 대상 중 두번째 대상입니다. 이 매개변수는 Enterpris
e Edition Oracle8i 데이터베이스 이상에 대해서만 유효합니다.
사용 가능한 값: 구문: (null_string | SERVICE=tnsnames-service |LOCATION=director
y-spec)[MANDATORY | OPTIONAL][REOPEN=integer]
기본값  : NULL

log_archive_dest_3
설명    : 아카이브된 리두 로그 파일을 복제할 수 있는 5개의 로컬(LOCATION으로 지
정) 또는 원격(SERVICE로 지정) 대상 중 세번째 대상입니다. 이 매개변수는 Enterpris
e Edition Oracle8i 데이터베이스 이상에 대해서만 유효합니다.
사용 가능한 값: 구문: (null_string | SERVICE=tnsnames-service |LOCATION=director
y-spec)[MANDATORY | OPTIONAL][REOPEN=integer]
기본값  : NULL

log_archive_dest_4
설명    : 아카이브된 리두 로그 파일을 복제할 수 있는 5개의 로컬(LOCATION으로 지
정) 또는 원격(SERVICE로 지정) 대상 중 네번째 대상입니다. 이 매개변수는 Enterpris
e Edition Oracle8i 데이터베이스 이상에 대해서만 유효합니다.
사용 가능한 값: 구문: (null_string | SERVICE=tnsnames-service |LOCATION=director
y-spec)[MANDATORY | OPTIONAL][REOPEN=integer]
기본값  : NULL

log_archive_dest_5
설명    : 아카이브된 리두 로그 파일을 복제할 수 있는 5개의 로컬(LOCATION으로 지
정) 또는 원격(SERVICE로 지정) 대상 중 다섯번째 대상입니다. 이 매개변수는 Enterpr
ise Edition Oracle8i 데이터베이스 이상에 대해서만 유효합니다.
사용 가능한 값: 구문: (null_string | SERVICE=tnsnames-service |LOCATION=director
y-spec)[MANDATORY | OPTIONAL][REOPEN=integer]
기본값  : NULL

log_archive_dest_6

log_archive_dest_7

log_archive_dest_8

log_archive_dest_9

log_archive_dest_10

log_archive_dest_state_1
설명    : 해당 아카이브된 로그 대상 매개변수의 가용성 상태를 지정합니다. (LOG_AR
CHIVE_DEST_1에만 적용됨) 활성화된 경우 로그 대상을 아카이브하고 지연된 경우에는
다시 활성화할 때까지 해당 대상을 아카이브 작업에서 제외합니다.
사용 가능한 값: ENABLE | DEFER
기본값  : ENABLE

log_archive_dest_state_2
설명    : 해당 아카이브된 로그 대상 매개변수의 가용성 상태를 지정합니다. (LOG_AR
CHIVE_DEST_2에만 적용됨) 활성화된 경우 로그 대상을 아카이브하고 지연된 경우에는
다시 활성화할 때까지 해당 대상을 아카이브 작업에서 제외합니다.
사용 가능한 값: ENABLE | DEFER
기본값  : ENABLE

log_archive_dest_state_3
설명    : 해당 아카이브된 로그 대상 매개변수의 가용성 상태를 지정합니다. (LOG_AR
CHIVE_DEST_3에만 적용됨) 활성화된 경우 로그 대상을 아카이브하고 지연된 경우에는
다시 활성화할 때까지 해당 대상을 아카이브 작업에서 제외합니다.
사용 가능한 값: ENABLE | DEFER
기본값  : ENABLE

log_archive_dest_state_4
설명    : 해당 아카이브된 로그 대상 매개변수의 가용성 상태를 지정합니다. (LOG_AR
CHIVE_DEST_4에만 적용됨) 활성화된 경우 로그 대상을 아카이브하고 지연된 경우에는
다시 활성화할 때까지 해당 대상을 아카이브 작업에서 제외합니다.
사용 가능한 값: ENABLE | DEFER
기본값  : ENABLE

log_archive_dest_state_5
설명    : 해당 아카이브된 로그 대상 매개변수의 가용성 상태를 지정합니다. (LOG_AR
CHIVE_DEST_5에만 적용됨) 활성화된 경우 로그 대상을 아카이브하고 지연된 경우에는
다시 활성화할 때까지 해당 대상을 아카이브 작업에서 제외합니다.
사용 가능한 값: ENABLE | DEFER
기본값  : ENABLE

log_archive_dest_state_6
설명: 특정 로그 아카이브 대상의 마지막 사용자 정의 상태를 식별합니다.
사용 가능한 값: ENABLE--대상 속성이 유효한 경우 archivelog 대상을 활성화합니다.
DEFER--대상 속성이 유효한 경우에도 archivelog 대상의 프로세스를 지연시킵니다. AL
TERNATE--대체 대상 속성이 유효한 경우 다른 대상 실패가 이 대상을 자동으로 활성화
하는 시간까지 archivelog 대상의 프로세스를 지연시킵니다.

log_archive_dest_state_7
설명: 특정 로그 아카이브 대상의 마지막 사용자 정의 상태를 식별합니다.
사용 가능한 값: ENABLE--대상 속성이 유효한 경우 archivelog 대상을 활성화합니다.
DEFER--대상 속성이 유효한 경우에도 archivelog 대상의 프로세스를 지연시킵니다. AL
TERNATE--대체 대상 속성이 유효한 경우 다른 대상 실패가 이 대상을 자동으로 활성화
하는 시간까지 archivelog 대상의 프로세스를 지연시킵니다.

log_archive_dest_state_8
설명: 특정 로그 아카이브 대상의 마지막 사용자 정의 상태를 식별합니다.
사용 가능한 값: ENABLE--대상 속성이 유효한 경우 archivelog 대상을 활성화합니다.
DEFER--대상 속성이 유효한 경우에도 archivelog 대상의 프로세스를 지연시킵니다. AL
TERNATE--대체 대상 속성이 유효한 경우 다른 대상 실패가 이 대상을 자동으로 활성화
하는 시간까지 archivelog 대상의 프로세스를 지연시킵니다.

log_archive_dest_state_9
설명: 특정 로그 아카이브 대상의 마지막 사용자 정의 상태를 식별합니다.
사용 가능한 값: ENABLE--대상 속성이 유효한 경우 archivelog 대상을 활성화합니다.
DEFER--대상 속성이 유효한 경우에도 archivelog 대상의 프로세스를 지연시킵니다. AL
TERNATE--대체 대상 속성이 유효한 경우 다른 대상 실패가 이 대상을 자동으로 활성화
하는 시간까지 archivelog 대상의 프로세스를 지연시킵니다.

log_archive_dest_state_10
설명: 아카이브 로그 대상을 지정합니다.
사용 가능한 값: 로컬 파일 시스템 위치(디스크 위치) 또는 Oracle Net 서비스 이름(t
ns 서비스)을 통한 원격 아카이브입니다.

log_archive_duplex_dest
설명    : LOG_ARCHIVE_DEST가 아닌 두번째 아카이브 대상을 지정합니다. 이 매개변수
는 Oracle8i Enterprise Edition에서 LOG_ARCHIVE_DEST_n으로 바뀌었습니다.
사용 가능한 값: NULL 문자열 또는 원시 분할 영역을 제외한 유효한 경로 및 장치 이
름입니다.
기본값  : NULL

log_archive_format
설명    : LOG_ARCHIVE_FORMAT은 데이터베이스가 ARCHIVELOG 모드일 때만 사용할 수 있습니다. 변수 %s(로그 시퀀스 번호) 및 %t(스레드 번호)이(가) 포함된 텍스트 문자
열을 사용하여 아카이브된 리두 로그 파일의 고유한 파일 이름을 지정합니다. 이 문자
열은 LOG_ARCHIVE_DEST 매개변수에 추가됩니다.
사용 가능한 값: 유효한 임의 파일 이름입니다.
기본값  : 운영 체제에 따라 다름

log_archive_max_processes
설명    : 필요한 ARCH 프로세스의 수를 지정합니다. 이 값이 LOG_ARCHIVE_START = TRUE로 설정된 경우 인스턴스 시작 시 평가되거나 SQL*Plus 또는 SQL 구문을 통해 ARCH 프로세스를 호출할 때 평가됩니다.
사용 가능한 값: 1과 10 사이의 임의 정수입니다.
기본값  : 1

log_archive_min_succeed_dest
설명    : 로그 파일을 겹쳐쓰기 전에 복사해야 하는 최소 대상 수를 정의합니다. 이
값은 LOG_ARCHIVE_DEST_n의 MANDATORY 대상 수보다 크거나 같아야 합니다.
사용 가능한 값: 1 - 5입니다. (LOG_ARCHIVE_DEST 및 LOG_ARCHIVE_DUPLEX_DEST와 함께 사용될 경우에는 1 - 2로 제한됨)
기본값  : 1

log_archive_start
설명    : 데이터베이스가 ARCHIVELOG 모드일 때만 적용 가능한 값으로 리두 로그를
자동 또는 수동으로 복사할지 여부를 지정합니다. 권장값은 자동 아카이브를 수행하는
 TRUE입니다. 이 값을 사용하지 않으면 인스턴스 대기를 방지하기 위해 ALTER SYSTEM
ARCHIVE LOG ... 명령을 사용한 수동 개입이 필요합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

log_archive_trace
설명    : 아카이브 로그 프로세스에 의해 생성되는 출력을 제어합니다. 이 프로세스
는 ARCn 백그라운드 프로세스(출력 로그에 ARCn으로 지정됨)에 의해 시작될 수 있습니
다.
 명시적인 세션 호출 포그라운드 프로세스(출력 로그에 ARCH로 지정됨) 또는
 관리 대기의 원격 파일 서버(RFS) 프로세스. 
사용 가능한 값: 
 0: 아카이브 로그 추적 사용 중지(기본값)
 1: 리두 로그 파일 아카이브 추적
 2: 각 아카이브 로그 대상의 아카이브 상태 추적
 4: 아카이브 작업 단계 추적
 8: 아카이브 로그 대상 작업 추적
 16: 세부 아카이브 로그 대상 작업 추적
 32: 아카이브 로그 대상 매개변수 수정 추적
 64: ARCn 프로세스 상태 작업 추적
기본값  : 0

log_buffer
설명    : 리두 항목을 LGWR에 의해 리두 로그 파일에 기록하기 전에 버퍼로 저장하기
 위해 사용되는 메모리 크기를 지정합니다. 리두 항목은 데이터베이스 블록의 변경 사
항 기록을 보존합니다. 특히 실행 시간이 길거나 많은 수의 트랜잭션이 실행 중인 시
스템에서 이 값을 65536 이상으로 설정하면 리두 로그 파일 입출력을 줄일 수 있습니
다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 최대 500K 또는 128K * CPU_COUNT, 이 중 크기가 더 큰 값

log_checkpoint_interval
설명    : 체크포인트가 발생하기 전에 리두 로그 파일에 써야 할 OS 블록(데이터베이
스 블록이 아님)의 수를 지정합니다. 체크포인트는 이 값에 상관없이 항상 로그 전환
시에 발생합니다. 이 값의 크기를 줄이면 인스턴스 복구에 필요한 시간이 감소하지만
과도한 디스크 작업이 유발될 수 있습니다.
사용 가능한 값: 무제한입니다. (0을 지정하면 이 매개변수 기능을 해제함)
기본값  : 운영 체제에 따라 다름

log_checkpoint_timeout
설명    : 다른 체크포인트가 발생할 때까지의 최대 시간을 초 단위로 지정합니다. 이
 시간 초과 값을 0으로 설정하면 시간에 준한 체크포인트 기능을 해제합니다. 이 값의
 크기를 줄이면 인스턴스 복구 시간이 감소하지만 과도한 디스크 작업이 유발될 수 있
습니다.
사용 가능한 값: 0 - 무제한입니다.
기본값  : Oracle8i: 900초, Enterprise Edition: 1800초

log_checkpoints_to_alert
설명    : 체크포인트 정보를 경보 파일에 기록합니다. 이 매개변수를 사용하면 체크
포인트가 원하는 빈도로 발생하는지 결정할 수 있습니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

log_file_name_convert
설명    : 기본 데이터베이스 상의 로그 파일 이름을 대기 데이터베이스 상의 해당 경
로 및 파일 이름으로 변환합니다. 로그 파일을 기본 데이터베이스에 추가할 때 해당
파일을 대기 데이터베이스에도 추가해야 합니다. 이 매개변수는 Oracle7의 LOG_FILE_N
AME_CONVERT 매개변수를 대신합니다.
사용 가능한 값: 유효한 경로/파일 이름, 형식: ''기본 로그 파일의 경로/파일 이름''
,''대기 로그 파일의 경로/파일 이름''
기본값  : NULL

logmnr_max_persistent_sessions


M
max_commit_propagation_delay
설명    : 클러스터 데이터베이스 매개변수로 LGWR이 인스턴스의 SGA에 저장된 SCN(시
스템 변경 번호)을 새로 고칠 때까지 허용된 최대 시간의 길이를 100분의 1초 단위로
지정합니다. SCN은 정기적으로 갱신되지는 않으므로 이 성능 매개변수는 거의 변경할
필요가 없습니다. \n사용 가능한 값: 0 - 90000 \n기본값  : 700

max_dispatchers
설명    : 공유 서버 환경에서 동시에 실행될 수 있는 작업 할당자 프로세스의 최대
수를 지정합니다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 작업 할당자가 구성된 경우 5와 구성된 작업 할당자 수 가운데 큰 값이 기
본값이 됩니다.

max_dump_file_size
설명    : 각 추적 파일의 최대 크기를 지정합니다. 추적 파일이 너무 많은 공간을 차
지하는 경우 이 제한을 변경할 수 있습니다. 덤프 파일 크기를 운영 체제가 허용하는
크기로만 제한하려면 UNLIMITED로 설정합니다.
사용 가능한 값: 0 - UNLIMITED('K' 또는 'M' 단위 사용 가능)
기본값  : 10000블록

max_enabled_roles
설명    : 하위 롤을 포함하여 사용자가 사용할 수 있는 데이터베이스 롤의 최대 수를
 지정합니다. 각 사용자는 PUBLIC과 사용자 고유 롤에 해당하는 2개의 추가 롤을 가지
고 있으므로 실제로 사용자가 활성화할 수 있는 롤의 수는 MAX_ENABLED_ROLES 값에 2
를 더한 값에 해당합니다.
사용 가능한 값: 0 - 148
기본값  : 20

max_rollback_segments
설명    : SGA에서 롤백 세그먼트 캐시의 최대 크기를 지정합니다. 지정된 숫자는 하
나의 인스턴스가 동시에 온라인 상태(즉, INUSE 상태)를 유지할 수 있는 롤백 세그먼
트의 최대 수를 나타냅니다.
사용 가능한 값: 2 - 65535
기본값  : max(30, TRANSACTIONS/TRANSACTIONS_PER_ROLLBACK_SEGMENT)

max_shared_servers
설명    : 공유 서버 환경에서 동시에 실행될 수 있는 공유 서버 프로세스의 최대 수
를 지정합니다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 20

max_transaction_branches
설명    : 분산 트랜잭션의 분기 수를 제어합니다. MAX_TRANSACTION_BRANCHES 값을 작
은 값으로 설정하면 (MAX_TRANSACTION_BRANCHES * DISTRIBUTED_TRANSACTIONS * 72바이
트) 값에 따라 공유 풀 메모리를 약간 줄일 수 있습니다. 이 매개변수는 현재 버전 8.
1.3에서는 사용되지 않습니다.
사용 가능한 값: 1 - 32
기본값  : 8

mts_circuits
설명    : 수신 및 송신 네트워크 세션에 대해 사용 가능한 가상 회로의 총 수를 지정
합니다. 이 값은 인스턴스의 전체 SGA 요구 사항을 구성하는 몇몇 매개변수 중의 하나
입니다.
기본값  : 파생: 공유 서버 구조를 사용하는 경우 SESSIONS 매개변수 값. 그렇지 않은
 경우 0

mts_dispatchers
설명    : 공유 서버를 사용하여 공유 환경을 설정하기 위한 작업 할당자의 수와 유형
을 설정합니다. 이 매개변수에는 여러 가지 옵션을 지정할 수 있습니다. 따라서 자세
한 내용은 Oracle8i 관리자 설명서와 Oracle Net Administrator's Guide를 참조하십시
오. 예제 문자열 값은 ''(PROTOCOL=TCP)(DISPATCHERS=3)''입니다.
사용 가능한 값: 유효한 매개변수 사양입니다.
기본값  : NULL

mts_listener_address
설명    : 공유 서버에 대한 리스너 구성을 지정합니다. 리스너 프로세스는 시스템에
서 사용되는 각 네트워크 프로토콜에 대한 접속 요청의 수신 주소가 필요합니다. MTS_
MULTIPLE_LISTENERS=TRUE로 설정된 경우가 아니면 각 항목은 별도의 인접 값을 가져야
 합니다. 이 매개변수는 현재 버전 8.1.3에서는 사용되지 않습니다.
구문         : (ADDRESS=(PROTOCOL=tcp)(HOST=myhost)(PORT=7002))
기본값  : NULL

mts_max_dispatchers
설명    : 공유 서버 환경에서 동시에 실행될 수 있는 작업 할당자 프로세스의 최대
수를 지정합니다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 작업 할당자가 구성된 경우 5와 구성된 작업 할당자 수 가운데 큰 값이 기
본값이 됩니다.

mts_max_servers
설명    : 공유 서버 환경에서 동시에 실행될 수 있는 공유 서버 프로세스의 최대 수
를 지정합니다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 20

mts_multiple_listners
설명    : 다중 리스너 주소를 개별 항목 또는 하나의 ADDRESS_LIST 문자열로 지정할
지 결정합니다. TRUE로 설정된 경우 MTS_LISTENER_ADDRESS 매개변수는 다음과 같이 지
정할 수 있습니다.
   (ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(PORT=5000)(HOST=zeus))
                 (ADDRESS=(PROTOCOL=decnet)(OBJECT=outa)(NODE=zeus))
이 매개변수는 현재 버전 8.1.3에서는 사용되지 않습니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

mts_service
설명    : 공유 서버 매개변수로 데이터베이스 접속을 구현하기 위해 작업 할당자에
등록된 고유한 서비스 이름을 지정합니다. 작업 할당자를 사용할 수 없을 경우에도 데
이터베이스에 접속하려면 이 값을 인스턴스 이름과 동일하게 설정합니다. 이 매개변수
는 현재 버전 8.1.3에서는 사용되지 않습니다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 0

mts_servers
설명    : 공유 서버 환경에서 인스턴스가 시작될 때 생성할 서버 프로세스의 수를 지
정합니다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 1

mts_sessions
설명    : 허용할 공유 서버 구조 사용자 세션의 총 수를 지정합니다. 이 매개변수를
설정하면 전용 서버의 사용자 세션을 예약할 수 있습니다.
사용 가능한 값: 0부터 (SESSIONS - 5)까지 
기본값  : 파생: MTS_CIRCUITS 값과 (SESSIONS - 5) 값 중 작은 값

 


N
nls_calendar
설명    : Oracle이 날짜 형식에 사용할 달력 시스템을 지정합니다. 예를 들어, NLS_C
ALENDAR를 'Japanese Imperial'로 설정하면 날짜 형식은 'E YY-MM-DD'이며 날짜가 1997년 5월 15일인 경우 SYSDATE는 'H 09-05-15'와 같이 표시됩니다.
사용 가능한 값: Arabic Hijrah, English Hijrah, Gregorian, Japanese Imperial, Per
sian, ROC Official (Republic of China), Thai Buddha입니다.
기본값  : Gregorian

nls_comp
설명    : SQL 문에 NLS_SORT를 사용하는 번거로운 프로세스를 피합니다. 일반적으로
WHERE 절의 비교는 이진 값을 대상으로 하지만 문자 비교의 경우에는 NLSSORT 함수가
필요합니다. NLS_COMP를 사용하면 비교가 NLS_SORT 세션 매개변수에 따른 문자 비교임을 나타낼 수 있습니다.
사용 가능한 값: Oracle8i National Language Support Guide에 지정된 10바이트 길이
의 문자열입니다.
기본값  : BINARY 

nls_currency
설명    : L 숫자 형식 요소에 대해 지역 통화 기호로 사용할 문자열을 지정합니다.
이 매개변수의 기본값은 NLS_TERRITORY에 의해 결정됩니다.
사용 가능한 값: Oracle8i National Language Support Guide에 지정된 10바이트 길이
의 문자열입니다.
기본값  : NLS_TERRITORY에서 파생된 값

nls_date_format
설명    : TO_CHAR 및 TO_DATE 함수에 사용할 기본 날짜 형식을 지정합니다. 이 매개
변수의 기본값은 NLS_TERRITORY에 의해 결정됩니다. 이 매개변수는 큰 따옴표로 표시
한 임의의 유효한 날짜 형식 마스크를 값으로 가질 수 있습니다. 예: ''MMM/DD/YYYY''
사용 가능한 값: 일정한 길이를 넘지 않는 임의의 유효한 날짜 형식 마스크입니다.
기본값  : 파생

nls_date_language
설명    : 요일과 달 이름 및 날짜 약자(AM, PM, AD, BC)를 표기할 언어를 지정합니다
. 이 매개변수의 기본값은 NLS_LANGUAGE에 의해 지정된 언어입니다.
사용 가능한 값: 임의의 유효한 NLS_LANGUAGE 값입니다.
기본값  : NLS_LANGUAGE 값

nls_dual_currency
설명    : NLS_TERRITORY에 정의된 기본 이중 통화 기호를 무시할 때 사용됩니다. 기
본 이중 통화 기호는 이 매개변수가 설정되지 않았을 때 사용됩니다. 그렇지 않으면
이 값을 이중 통화 기호로 하는 새 세션이 시작됩니다.
사용 가능한 값: 임의의 유효한 형식 이름입니다.
기본값  : 이중 통화 기호

nls_iso_currency
설명    : C 숫자 형식 요소에 대해 국제 통화 기호로 사용할 문자열을 지정합니다.
이 매개변수의 기본값은 NLS_TERRITORY에 의해 결정됩니다.
사용 가능한 값: 임의의 유효한 NLS_TERRITORY 값입니다.
기본값  : NLS_TERRITORY에서 파생된 값

nls_languge
설명    : 메시지, 요일 및 달 이름, AD, BC, AM, PM과 같은 기호, 기본 정렬 방법에
사용되는 데이터베이스 기본 언어를 지정합니다. 지원되는 언어에는 영어, 프랑스어,
일본어 등이 있습니다.
사용 가능한 값: 임의의 유효한 언어 이름입니다.
기본값  : 운영 체제에 따라 다름

nls_length_semantics
설명: 바이트 또는 코드포인트 의미를 사용하여 새로운 char, varchar2, clob, nchar,
 nvarchar2, nclob 열 생성을 지정합니다. 모든 문자 집합은 자신의 고유한 문자 정의
를 가집니다. 동일한 문자 집합이 클라이언트 및 서버에서 사용될 경우 문자열은 해당
 문자 집합에 의해 정의된 대로 문자 단위로 측정되어야 합니다. 기존의 열은 영향을
받지 않습니다.
사용 가능한 값: BYTE 또는 CHAR입니다.
기본값: nls_length_semantics에 대한 데이터베이스 문자 집합의 문자를 측정하는 항
목에 대해서는 BYTE입니다.

nls_nchar_conv_excp
설명: (TRUE인 경우) 데이터 손실이 암시적 변환에서 발생할 때 오류를 반환하는 매개
변수입니다.
사용 가능한 값: FALSE | TRUE
기본값: TRUE

nls_numeric_characters
설명    : 그룹 구분 기호와 소수점으로 사용할 문자를 지정합니다. 그룹 구분 기호는
 정수 그룹(예: 천, 백만 등)을 구분하는 문자이고 소수점은 숫자의 정수 부분과 소수
 부분을 구분하는 문자입니다. 형식: <decimal_character><group_separator>.
사용 가능한 값: '+', '-', '<', '>'을 제외한 임의의 단일 바이트 문자 
기본값  : NLS_TERRITORY에서 파생된 값

nls_sort
설명    : ORDER BY 질의에 대한 조합 순서를 지정합니다. 이진 정렬의 경우 ORDER BY
 질의에 대한 조합 순서는 숫자 값을 기준으로 합니다. 문자 정렬의 경우 정의된 문자
 정렬 순서로 데이터를 배열하려면 전체 테이블을 스캔해야 합니다.
사용 가능한 값: BINARY 또는 유효한 문자 정의 이름입니다.
기본값  : NLS_LANGUAGE에서 파생된 값

nls_territory
설명    : 날짜와 주 번호 매김, 기본 날짜 형식, 기본 소수점 문자, 그룹 구분 기호,
 기본 ISO 및 지역 통화 기호에 대한 이름 지정 규칙을 지정합니다. 지원되는 지역에
는 미국, 프랑스, 일본 등이 있습니다. 모든 지역에 대한 내용은 Oracle8i National L
anguage Support Guide를 참조하십시오.
사용 가능한 값: 임의의 유효한 지역 이름입니다.
기본값  : 운영 체제에 따라 다름

nls_time_format
설명    : 날짜 시간 필드인 HOUR, MINUTE, SECOND가 포함된 TIME 데이터 유형의 기본
값을 설정하는 문자열 값을 지정합니다.
구문         : TIME '09:26:50'. (값을 7바이트로 저장함)
기본값  : NLS_TERRITORY에서 파생된 값

nls_time_tz_format
설명    : 날짜 시간 필드인 HOUR, MINUTE, SECOND, TIMEZONE_HOUR, TIMEZONE_MINUTE
가 포함된 TIME WITH TIME ZONE 데이터 유형의 기본값을 설정하는 UTC와 TZD 값 쌍을
지정합니다. UTC는 국제 표준 시간이고 TZD는 지역 시간대입니다.
구문         : TIME '09:26:50.20+ 02:00'. (값을 9바이트로 저장함)
기본값  : NLS_TERRITORY에서 파생된 값

nls_timestamp_format
설명    : NLS_TIME_FORMAT와 유사하지만 시간의 HOUR, MINUTE, SECOND 값을 비롯한
날짜의 YEAR, MONTH, DAY 값을 저장하는 TIMESTAMP 데이터 유형의 기본값을 설정합니
다.
구문         : TIMESTAMP '1997-01-31 09:26:50.10'. (값을 11바이트로 저장함)
기본값  : NLS_TERRITORY에서 파생된 값

nls_timestamp_tz_format
설명    : NLS_TIME_TZ_FORMAT과 유사하며 한 쌍의 값으로 날짜의 YEAR, MONTH, DAY
값과 시간의 HOUR, MINUTE, SECOND 값을 비롯한 TIMEZONE_HOUR와 TIMEZONE_MINUTE 값
을 저장하는 TIMESTAMP 데이터의 기본값을 지정합니다.
구문         : TIMESTAMP '1997- 01- 31 09:26:50+ 02: 00'. (값을 13바이트로 저장
함)
기본값  : NLS_TERRITORY에서 파생된 값

 

O
object_cache_max_size_percent
설명    : 세션 객체 캐시가 최적 크기를 초과할 수 있는 최적 캐시 크기 백분율을 지
정합니다. 최대 크기는 최적 크기와 최적 크기에 이 백분율을 곱한 값의 합과 같습니
다. 캐시 크기가 이 최대 크기를 초과하면 시스템은 캐시를 최적 크기로 축소합니다.
사용 가능한 값: 0%에서 운영 체제에 따른 최대값까지입니다.
기본값  : 10%

object_cache_optimal_size
설명    : 캐시 크기가 최대 크기를 초과할 때 세션 객체 캐시를 어느 크기로 축소할
지 지정합니다.
사용 가능한 값: 10K에서 운영 체제 특정 최대값까지입니다.
기본값  : 100K

open_cursors
설명    : 세션이 한 번에 가질 수 있는 열린 커서(컨텍스트 영역)의 최대 수와 사용
자에 의해 재실행되는 명령문을 다시 구문 분석하지 않기 위해 PL/SQL이 사용하는 PL/
SQL 커서 캐시 크기를 지정합니다. 이 값을 충분히 크게 설정하면 응용 프로그램에 의
해 열린 커서가 부족해지는 현상을 방지할 수 있습니다.
사용 가능한 값: 1 에서 운영 체제 제한값까지입니다.
기본값  : 64

open_links
설명    : 하나의 세션에서 원격 데이터베이스에 대해 동시에 열 수 있는 접속의 최대
 수를 지정합니다. 이 값은 모든 데이터베이스를 열어 해당 명령문을 실행할 수 있도
록 여러 데이터베이스를 참조하는 단일 SQL 문에서 언급된 데이터베이스 수보다 크거
나 같아야 합니다.
사용 가능한 값: 0에서 255까지입니다. (0인 경우 분산 트랜잭션 사용 금지)
기본값  : 4

open_links_per_instance
설명    : XA 응용 프로그램의 이전 가능한 열린 접속의 최대 수를 지정합니다. XA 트
랜잭션은 이전 가능한 열린 접속을 사용하여 트랜잭션이 커밋된 후 접속을 캐시로 저
장합니다. 트랜잭션은 접속을 생성한 사용자와 트랜잭션을 소유한 사용자가 동일한 경
우 접속을 공유할 수 있습니다.
사용 가능한 값: 0 - UB4MAXVAL
기본값  : 4

optimizer_features_enable
설명    : 최적기 기능을 제어하는 ini.ora 매개변수의 변경을 허용합니다. 영향을 받
는 매개변수는 PUSH_JOIN_PREDICATE, FAST_FULL_SCAN_ENABLED, COMPLEX_VIEW_MERGING
및 B_TREE_BITMAP_PLANS입니다.
사용 가능한 값: 8.0.0, 8.0.3, 8.0.4, 8.1.3입니다.
기본값  : 8.0.0

optimizer_index_caching
설명    : 중첩 루프 조인의 버퍼 캐시에 저장할 인덱스 블록의 비율에 대한 비용 기
반 가정을 조정합니다. 이 값을 조정하면 인덱스가 사용되는 중첩 루프 조인의 실행
비용에 영향을 줍니다. 이 매개변수 값을 크게 설정하면 최적기가 중첩 루프 조인의
실행에 부담을 덜 느끼게 됩니다.
사용 가능한 값: 0에서 100%까지입니다.
기본값  : 0

optimizer_index_cost_adj
설명    : 고려할 인덱스 액세스 경로의 수가 너무 많거나 너무 적을 때 최적기 성능
을 조정하기 위해 사용됩니다. 작은 값을 설정하면 최적기가 더 자주 인덱스를 선택하
게 됩니다. 즉, 값을 50%로 설정하면 인덱스 액세스 경로의 부담이 정상의 반이 됩니
다.
사용 가능한 값: 1 - 10000
기본값  : 100(인덱스 액세스 경로의 일반적인 비용)

optimizer_max_permutations
설명    : 대규모 조인을 가진 질의를 구문 분석할 때 최적기가 고려하는 테이블 순열
의 수를 제한합니다. 이렇게 하면 질의 구문 분석 시간을 허용 한도 내로 단축시킬 수
 있지만 찾은 계획이 최적이 아닐 수 있습니다. 일반적으로 1000 이하의 값을 사용하
면 구문 분석 시간을 수 초 이내로 유지할 수 있습니다.
사용 가능한 값: 4에서 2^32(~43억)까지입니다.
기본값  : 80,000

optimizer_mode
설명    : 최적기 기능을 지정합니다. RULE로 설정하면 질의에 힌트가 포함되어 있지
않은 경우 규칙 기반 최적기가 사용됩니다. CHOOSE로 설정하면 명령문의 테이블에 통
계가 없는 경우 비용 기반 최적기가 사용됩니다. ALL_ROWS 또는 FIRST_ROWS로 설정하
면 항상 비용 기반 최적기를 사용합니다.
사용 가능한 값: RULE | CHOOSE | FIRST_ROWS | ALL_ROWS
기본값  : CHOOSE

oracle_trace_collection_name
설명    : Oracle Trace 모음 이름을 지정하여 출력 파일 이름(모음 정의 파일 .cdf와
 데이터 모음 파일 .dat)에 사용됩니다. 이 매개변수가 NULL이 아니면 이 값이 다시 N
ULL로 설정될 때까지 ORACLE_TRACE_ENABLE = TRUE로 되어 기본 Oracle Trace 모음이
시작됩니다.
사용 가능한 값: 최대 16자 길이의 유효한 모음 이름입니다. (8자 길이의 파일 이름을
 사용하는 플랫폼 제외)
기본값  : NULL

oracle_trace_collection_path
설명    : Oracle Trace 모음 정의(.cdf)와 데이터 모음(.dat) 파일이 있는 디렉토리
의 경로명을 지정합니다.
사용 가능한 값: 전체 디렉토리 경로명입니다.
기본값  : 운영 체제 지정값(일반적으로 ORACLE_HOME/otrace/admin/cdf)

oracle_trace_collection_size
설명    : Oracle Trace 모음 파일의 최대 크기를 바이트 단위로 지정합니다. 모음 파
일 크기가 이 최대값에 도달하면 모음 기능이 사용 중지됩니다. 범위 값이 0인 경우에
는 크기 제한이 없습니다.
사용 가능한 값: 0 - 4294967295
기본값  : 5242880

oracle_trace_enable
설명    : 서버의 Oracle Trace 모음 기능을 활성화하려면 이 값을 TRUE로 설정하십시
오. TRUE로 설정된 경우 Oracle Trace를 해당 서버에 대해 사용할 수 있습니다. 모음
을 시작하려면 ORACLE_TRACE_COLLECTION_NAME에 NULL이 아닌 값을 지정하거나 Oracle
Trace Manager를 사용하여 모음을 시작합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

oracle_trace_facillty_name
설명    : Oracle Trace 제품 정의 파일 이름(.fdf 파일)을 지정합니다. 이 파일에는
Oracle Trace 데이터 모음 API를 사용하는 제품에 대해 모여진 모든 이벤트 및 데이터
 항목의 정의 정보가 포함되어 있습니다. Oracle은 기본 파일인 ORCLED.FDF의 사용을
권장합니다.
사용 가능한 값: 최대 16자 길이의 유효한 기능 이름입니다.
기본값  : oracled

oracle_trace_facillity_path
설명    : Oracle TRACE 기능 정의(.fdf) 파일이 위치한 디렉토리 경로명을 지정합니
다.
사용 가능한 값: 전체 디렉토리 경로명입니다.
기본값  : ORACLE_HOME/otrace/admin/fdf/(운영 체제에 따라 다름)

os_authent_prefix
설명    : 사용자의 운영 체제 계정 이름과 암호를 사용하여 서버에 접속한 사용자를
인증합니다. 이 매개변수 값은 모든 사용자의 운영 체제 계정의 시작에 연결됩니다. N
ULL값을 지정하면 OS 계정 접두어를 제거할 수 있습니다.
사용 가능한 값: 임의의 식별자입니다.
기본값  : 운영 체제 지정값(일반적으로 'OPS$')

os_roles
설명    : 운영 체제 또는 데이터베이스가 각 사용자의 롤을 식별할지 지정합니다. TR
UE로 설정하면 운영 체제가 모든 데이터베이스 사용자에 대한 롤 부여를 전적으로 관
리합니다. 그렇지 않으면 데이터베이스가 롤을 식별하고 관리합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE


P
parallel_adaptive_multi_user
설명    : 다중 사용자 환경에서 병렬 실행을 사용하여 성능을 향상시키기 위해 고안
된 적응 알고리즘을 활성화하거나 비활성화합니다. 시스템 부하를 바탕으로 요청된 병
렬 실행 수를 자동으로 축소하여 질의 시작 단계에서 이 작업을 수행합니다. PARALLEL
_AUTOMATIC_TUNING = TRUE로 설정된 경우 가장 잘 사용됩니다.
사용 가능한 값: TRUE | FALSE
기본값  : PARALLEL_AUTOMATIC_TUNING = TRUE로 설정된 경우 TRUE, 아니면 FALSE

parallel_automatic_tuning
설명    : TRUE로 설정된 경우 병렬 실행을 제어하는 매개변수의 기본값을 Oracle이
결정합니다. 이 매개변수의 설정과 더불어 시스템의 테이블에 대한 병렬 계산을 설정
해야 합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

parallel_broadcast_enabled
설명    : 해시 또는 병합 조인을 사용하여 소규모 결과 집합(크기는 행이 아닌 바이
트 단위로 측정됨)에 조인된 대량의 결과 집합에 대한 성능 향상을 제공할 수 있습니
다. TRUE로 설정된 경우 최적기는 소규모 결과 집합의 각 행을 보다 큰 집합의 각 클
러스터 데이터베이스 프로세싱 행에 대해 브로드캐스트할 수 있습니다. \n사용 가능한
 값: TRUE | FALSE \n기본값  : FALSE

parallel_execution_message_size
설명    : 병렬 실행(병렬 질의, PDML(병렬 데이터 조작어), 병렬 복구, 복제)의 메시
지 크기를 지정합니다. 2048 또는 4096보다 큰 값을 지정하면 보다 큰 공유 풀이 필요
합니다. PARALLEL_AUTOMATIC_TUNING = TRUE로 설정된 경우 메시지 버퍼는 대형 풀의
외부에 할당됩니다.
사용 가능한 값: 2148에서 무한대입니다.
기본값  : PARALLEL_AUTOMATIC_TUNING이 FALSE로 설정된 경우 일반적으로 2148 또는 P
ARALLEL_AUTOMATIC_TUNING이 TRUE로 설정된 경우 4096(운영 체제에 따라 다름)

parallel_instance_group
설명    : 클러스터 데이터베이스 매개변수로 병렬 실행 슬래이브 생성에 사용되는 병
렬 인스턴스 그룹의 식별에 사용됩니다. 병렬 작업은 해당 INSTANCE_GROUPS 매개변수
에 일치 그룹을 지정한 인스턴스에 대해서만 병렬 실행 슬래이브를 생성합니다. \n사
용 가능한 값: 그룹 이름을 나타내는 문자열입니다. \n기본값  : 현재 활성화된 모든
인스턴스로 구성된 그룹

parallel_max_servers
설명    : 인스턴스에 대한 병렬 실행 서버 또는 병렬 복구 프로세스의 최대 수를 지
정합니다. 인스턴스 시작 시 할당된 질의 서버의 수는 수요에 따라 이 값까지 증가하
게 됩니다.
사용 가능한 값: 0 - 256
기본값  : CPU_COUNT, PARALLEL_AUTOMATIC_TUNING, PARALLEL_ADAPTIVE_MULTI_USER 값
에 따라 다름

parallel_min_percent
설명    : 병렬 실행에 필요한 스레드의 최소 비율을 퍼센트 단위로 지정합니다. 적절
한 수의 질의 슬래이브를 병렬 실행에 사용할 수 없을 경우 오류 메시지를 표시하고
질의가 순차적으로 실행되지 않도록 하려면 이 매개변수를 설정하십시오.
사용 가능한 값: 0 - 100
기본값  : 0(이 매개변수를 사용하지 않음을 나타냄)

parallel_min_servers
설명    : 병렬 실행을 위해 인스턴스를 시작했을 때 Oracle이 생성하는 질의 서버 프
로세스의 최소 개수를 지정합니다.
사용 가능한 값: 0에서 PARALLEL_MAX_SERVERS까지입니다.
기본값  : 0

parallel_server
설명    : 클러스터 데이터베이스 옵션을 활성화하려면 PARALLEL_SERVER를 TRUE로 설
정하십시오. \n사용 가능한 값: TRUE | FALSE \n기본값  : FALSE

parallel_server_instances
설명    : 현재 구성된 인스턴스의 수입니다. 이 값은 구성된 인스턴스의 수에 따라 S
GA 구조의 크기를 결정할 때 사용됩니다. 이 매개변수 값을 적당히 설정하면 SGA의 메
모리 사용을 개선할 수 있습니다. 여러 매개변수가 이 값을 사용하여 계산됩니다.
사용 가능한 값: 0이 아닌 임의의 값입니다.
기본값  : 1

parallel_threads_per_cpu
설명    : 병렬 실행 중 또는 병렬 적응 알고리즘 및 로드 밸런싱 알고리즘을 조정하
기 위해 CPU가 처리할 수 있는 스레드 또는 프로세스의 수를 나타냅니다. 대표 질의를
 실행할 때 시스템이 과부하되면 이 값을 줄여야 합니다.
사용 가능한 값: 0이 아닌 임의의 값입니다.
기본값  : 운영 체제에 따라 다름(일반적으로 2)

partition_view_enabled
설명    : PARTITION_VIEW_ENABLED가 TRUE로 설정된 경우 최적기는 분할 영역 보기에
서 불필요한 테이블 액세스를 제거하거나 생략합니다. 이 매개변수는 최적기가 기본
테이블에 대한 통계에서 분할 영역 보기에 대한 통계를 계산하는 비용 기반 방법을 변
경할 수 있습니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

pga_aggregate_target
설명: 인스턴스에 첨부된 모든 서버 프로세스의 총 대상 PGA 메모리를 지정합니다. 작
업 영역의 자동 설정을 활성화하기 전에 이 매개변수를 양수 값으로 설정하십시오. 이
 메모리는 SGA에 상주하지 않습니다. 데이터베이스는 사용하는 PGA 메모리의 대상 크
기로 이 매개변수를 사용합니다. 이 매개변수를 설정할 때 Oracle 인스턴스에 대해 사
용 가능한 시스템의 총 메모리에서 SGA를 빼십시오. 남은 메모리는 pga_aggregate_tar
get에 할당할 수 있습니다.
사용 가능한 값: 이 제한을 KB, MB, GB 단위로 지정하기 위해 문자 K, M 또는 G를 붙
인 정수입니다. 최소값은 10M이고 최대값은 4000G입니다. 
기본값: 작업 영역의 자동 조정이 완전히 비활성화되어 있음을 의미하는 "지정되지 않
음"입니다.

pl_sql_compiler_flags
설명: PL/SQL 컴파일러에 의해 사용됩니다. 컴파일러 플래그 목록을 콤마로 구분된 문
자열 목록으로 지정합니다.
사용 가능한 값: native(PL/SQL 모듈이 원시 코드로 컴파일됨), interpreted(PL/SQL
모듈이 PL/SQL 바이트 코드 형식으로 컴파일됨), debug(PL/SQL 모듈이 조사 디버그 기
호를 사용하여 컴파일됨), non_debug입니다.
기본값: " interpreted, non_debug "

plsql_native_c_compiler
설명: 생성된 C 파일을 객체 파일로 컴파일하는 데 사용되는 C 컴파일러의 전체 경로
명을 지정합니다. 이 매개변수는 선택 사항입니다. 각 플랫폼에 제공되는 플랫폼별 ma
ke 파일은 이 매개변수에 대한 기본값을 포함합니다. 값이 이 매개변수에 대해 지정되
는 경우 해당 값은 make 파일의 기본값보다 우선 적용됩니다.
사용 가능한 값: C 컴파일러의 전체 경로입니다.
기본값: 없음

plsql_native_library_subdir_count

plsql_native_library_dir
설명: PL/SQL 컴파일러에 의해 사용됩니다. 원시 컴파일러에 의해 만들어진 공유 객체
가 있는 디렉토리명을 지정합니다.
사용 가능한 값: 디렉토리명입니다.
기본값: 없음

plsql_native_linker
설명: 이 매개변수는 객체 파일을 공유 객체나 DLL에 링크시키는 데 사용하는 UNIX의
ID 또는 GNU lD와 같은 링커의 전체 경로명을 지정합니다. 이 매개변수는 선택 사항입
니다. 각 플랫폼에 제공되는 플랫폼별 make 파일은 이 매개변수에 대한 기본값을 포함
합니다. 값이 이 매개변수에 대해 지정되는 경우 해당 값은 make 파일의 기본값보다
우선 적용됩니다.
사용 가능한 값: 링커의 전체 경로명입니다.
기본값: 없음

plsql_native_make_file_name
설명: make 파일의 전체 경로명을 지정합니다. make 유틸리티(PLSQL_NATIVE_MAKE_UTIL
ITY에 의해 지정됨)는 이 make 파일을 사용하여 공유 객체나 DLL을 생성합니다. 해당
플랫폼에 DLL을 생성하는 make 유틸리티에 대한 규칙을 포함하는 포트별 make 파일이
각 플랫폼에 제공됩니다.
사용 가능한 값: make 파일의 전체 경로명입니다.
기본값: 없음

plsql_native_make_utility
설명: UNIX의 make 또는 gmake(GNU make)와 같은 make 유틸리티의 전체 경로명을 지정
합니다. make 유틸리티는 생성된 C 소스에서 공유 객체나 DLL을 생성하는 데 필요합니
다.
사용 가능한 값: make 유틸리티의 전체 경로명입니다.
기본값: 없음

plsql_v2_compatibility
설명    : PL/SQL의 호환성 수준을 설정합니다. FALSE로 설정된 경우 PL/SQL V3 기능
을 사용하고 V2 기능은 금지됩니다. 그렇지 않은 경우 PL/SQL V3를 실행할 때 특정 PL
/SQL V2 기능이 허용됩니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

pre_page_sga
설명    : 플랫폼에 따라 결정되는 매개변수로 TRUE로 설정된 경우 모든 SGA 페이지를
 메모리로 로드하여 인스턴스가 신속하게 최대 성능에 도달할 수 있도록 합니다. 따라
서 이렇게 하면 인스턴스 시작 및 사용자 로그인 시간이 길어지지만 충분한 메모리를
확보하여 시스템 상의 페이지 오류를 줄일 수 있습니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

processes
설명    : Oracle 서버에 동시에 접속할 수 있는 운영 체제 사용자 프로세스의 최대
수를 지정합니다. 이 값은 작업 대기열(SNP)과 병렬 실행(Pnnn) 프로세스와 같은 모든
 백그라운드 프로세스의 수를 고려해야 합니다.
사용 가능한 값: 6에서 운영 체제 특정 값까지입니다.
기본값  : PARALLEL_MAX_SERVERS 값에 따라 다름

 

Q
query_rewrite_enabled
설명    : 구체화된 뷰에 대한 질의 재작성을 활성화하거나 비활성화합니다. 세션 매
개변수 및 별개의 구체화된 뷰가 모두 활성화되고 비용 기반 최적화가 활성화된 경우
에만 특정 구체화된 뷰를 활성화합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

query_rewrite_integrity
설명    : Oracle 서버에 의해 강제로 실행되는 질의 재작성의 정도를 나타냅니다. EN
FORCED로 설정된 경우 Oracle이 일관성과 무결성을 보증하게 됩니다. TRUSTED로 설정
된 경우 선언된 관계를 사용한 재작성이 가능합니다. STALE_TOLERATED로 설정된 경우
구체화된 뷰는 비록 기본 데이터와 일치하지 않는 경우라도 재작성할 수 있습니다.
사용 가능한 값: ENFORCED, TRUSTED, STALE_TOLERATED
기본값  : ENFORCED

 

R
rdbms_server_dn
설명    : RDBMS 서버의 식별 이름입니다. 이 이름은 전사적인 디렉토리 서비스에서
전사적인 롤을 읽어 들이는 데 사용됩니다. 자세한 내용은 Oracle Advanced Security
Administrator's Guide를 참조하십시오.
사용 가능한 값: 모든 X.500 식별 이름 형식의 값입니다.
기본값  : 없음

read_only_open_delayed
설명    : 대부분의 데이터가 읽기 전용 테이블스페이스에 저장된 대규모 데이터베이
스의 시작과 같은 특정 작업의 처리 속도를 향상시키는 데 사용됩니다. TRUE로 설정된
 경우 테이블스페이스에서 데이터를 읽을 때 읽기 전용 테이블스페이스의 데이터에 먼
저 액세스합니다. 가능한 부작용에 대한 내용은 서버 참조 설명서를 참조하십시오.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

recovery_parallelism
설명    : 인스턴스 또는 매체 복구에 참여하는 프로세스의 수를 지정합니다. 0 또는
1의 값을 지정하면 단일 프로세스가 복구를 순차적으로 수행합니다.
사용 가능한 값: 운영 체제에 따라 다릅니다. (PARALLEL_MAX_SERVERS 값을 초과할 수
없음)
기본값  : 운영 체제에 따라 다름

remote_archive_enable
설명: 원격 대상에 대한 리두 로그 파일의 아카이브가 허용되는지 여부를 제어합니다.
 오라클 데이터베이스 인스턴스가 REDO 로그 파일을 원격으로 아카이브하거나 아카이
브 REDO 로그 파일을 원격으로 받으려면 매개변수를 값 "TRUE"로 설정해야 합니다.
사용 가능한 값: FALSE | TRUE
기본값: TRUE

remote_dependencies_mode
설명    : 원격 PL/SQL 내장 프로시저에 대한 종속성을 데이터베이스가 처리하는 방법
을 지정하는 데 사용됩니다. TIMESTAMP로 설정하면 서버와 로컬 시간 기록이 일치할
경우에만 프로시저가 실행됩니다. SIGNATURE로 설정하면 서명이 유효한 경우 프로시저
가 실행됩니다.
사용 가능한 값: TIMESTAMP | SIGNATURE
기본값  : TIMESTAMP

remote_listener

remote_login_passwordfile
설명    : 권한 사용자의 암호를 운영 체제에서 확인할지 파일로 확인할지 지정합니다
. NONE으로 설정하면 Oracle은 암호 파일을 무시합니다. EXCLUSIVE로 설정하면 각 권
한 사용자를 데이터베이스의 암호 파일을 사용하여 인증합니다. SHARED로 설정하면 많
은 수의 데이터베이스가 SYS 및 INTERNAL 암호 파일 사용자를 공유합니다.
사용 가능한 값: NONE | SHARED | EXCLUSIVE
기본값  : NONE

remote_os_authent
설명    : REMOTE_OS_AUTHENT를 TRUE로 설정하면 OS_AUTHENT_PREFIX 값을 사용한 원격
 클라이언트의 인증을 허용합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

remote_os_roles
설명    : REMOTE_OS_ROLES를 TRUE로 설정하면 운영 체제가 원격 클라이언트에 대한
롤을 지정할 수 있습니다. FALSE로 설정하면 원격 클라이언트에 대한 롤은 데이터베이
스가 식별하고 관리합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

replication_dependency_tracking
설명    : 복제 서버가 변경 사항을 병렬로 전달하려면 종속성 추적이 중요합니다. FA
LSE로 설정하면 데이터베이스에 대한 읽기/쓰기 작업의 실행 속도는 빨라지지만 복제
서버에 대한 병렬 전달 종속 정보는 생성되지 않습니다.
사용 가능한 값: TRUE | FALSE
기본값  : TRUE(읽기/쓰기 종속성 추적 활성화)

resource_limit
설명    : 데이터베이스 프로파일에 리소스 제한의 강제 수행 여부를 결정합니다. FAL
SE로 설정하면 리소스 제한의 강제 적용을 비활성화하고, TRUE 값으로 설정하면 리소
스 제한의 강제 적용을 활성화합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

resource_manager_plan
설명    : 지정된 경우 리소스 관리자가 인스턴스의 계획과 모든 종속 항목(하위 계획
, 지침 및 소비자 그룹)을 활성화합니다. 지정되지 않은 경우 리소스 관리자는 비활성
화되지만 ALTER SYSTEM 명령을 사용하면 활성화할 수 있습니다.
사용 가능한 값: 임의의 유효한 문자열입니다.
기본값  : NULL

rollback_segments
설명    : 값이 TRANSACTIONS / TRANSACTIONS_PER_ROLLBACK_SEGMENT 값을 초과하더라
도 인스턴스 시작 중 획득할 하나 이상의 롤백 세그먼트를 지정합니다. 형식: ROLLBAC
K_SEGMENTS = (rbseg_name [, rbseg_name] ... )
사용 가능한 값: DBA_ROLLBACK_SEGS에 나열된 임의의 롤백 세그먼트 이름입니다. (SYS
TEM 제외)
기본값  : NULL(공용 롤백 세그먼트가 기본값으로 사용됨)

row_locking
설명    : 테이블 갱신 시 행 잠금의 획득 여부를 지정합니다. ALWAYS로 설정하면 테
이블이 갱신될 때만 행 잠금을 획득합니다. INTENT로 설정하면 SELECT FOR UPDATE에
대해 행 잠금만 사용되지만 갱신 시에는 테이블 잠금을 획득합니다.
사용 가능한 값: ALWAYS | DEFAULT | INTENT
기본값  : ALWAYS

 

S
serial_reuse
설명    : 직렬의 재사용 가능 메모리 기능을 사용할 SQL 커서의 유형을 지정합니다.
CURSOR_SPACE_FOR_TIME = TRUE로 설정된 경우 SERIAL_REUSE 값은 무시되어 DISABLE 또
는 NULL로 설정된 것으로 처리됩니다.
사용 가능한 값: DISABLE | SELECT | DML | PLSQL | ALL | NULL
기본값  : NULL

serializable
설명    : 질의가 테이블 수준의 읽기 잠금을 획득하여 해당 질의가 포함된 트랜잭션
이 커밋될 때까지 모든 객체 읽기 갱신을 금지할지 결정합니다. 이 작업 모드는 반복
가능한 읽기를 제공하여 동일한 트랜잭션 내의 동일한 데이터에 대한 두 개의 질의가
동일한 값을 반환하는지 확인할 수 있습니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

session_cached_cursors
설명    : 캐시로 저장할 세션 커서의 수를 지정합니다. 동일한 SQL 문을 여러 번 구
문 분석하면 해당 세션 커서가 세션 커서 캐시로 이동합니다. 이렇게 하면 커서가 캐
시로 저장되어 다시 열 필요가 없으므로 구문 분석 시간이 줄어듭니다.
사용 가능한 값: 0에서 운영 체제 특정 값까지입니다.
기본값  : 0

session_max_open_files
설명    : 특정 세션에서 열 수 있는 BFILE의 최대 수를 지정합니다. 이 값에 도달하
면 추가로 파일을 열기 위한 이후의 시도는 실패하게 됩니다. 이 매개변수는 운영 체
제 매개변수인 MAX_OPEN_FILES에도 종속됩니다.
사용 가능한 값: 1에서 (50, OS 수준의 MAX_OPEN_FILES)의 최소값입니다.
기본값  : 10

sessions
설명    : 사용자와 시스템 세션의 총 수를 지정합니다. 기본값은 순환 세션의 수를
고려하여 PROCESSES 값보다 큽니다.
사용 가능한 값: 임의의 정수값입니다.
기본값  : 파생(1.1 * PROCESSES + 5)

service_names
설명    : Oracle Net 리스너가 복제된 환경의 특정 데이터베이스와 같은 단일 서비스
를 식별하기 위해 사용할 수 있는 인스턴스의 서비스 이름을 지정합니다. 서비스에 도
메인이 없으면 DB_DOMAIN 매개변수가 추가됩니다.
구문         : SERVICE_NAMES = name1.domain, name2.domain
기본값  : DB_NAME.DB_DOMAIN(정의된 경우)

shadow_core_dump
설명    : UNIX에서만 사용되는 매개변수로 생성된 코어 파일에 SGA 정보를 덤프할지
지정합니다. FULL로 설정하면 SGA가 코어 덤프에 포함됩니다. PARTIAL로 설정하면 SGA
는 덤프되지 않습니다.
사용 가능한 값: FULL | PARTIAL
기본값  : FULL

shared_memory_address
설명    : SHARED_MEMORY_ADDRESS와 HI_SHARED_MEMORY_ADDRESS는 런타임 시 SGA의 시
작 주소를 지정합니다. 많은 플랫폼에서는 SGA의 시작 주소를 링크 시 지정하므로 이
러한 매개변수는 해당 플랫폼에서 무시됩니다. 두 매개변수가 모두 0 또는 NULL일 경
우 주소는 플랫폼 고유값을 사용하게 됩니다.
사용 가능한 값: 임의의 정수값입니다.
기본값  : 0

shared_pool_reserved_size
설명    : 단편화로 인한 성능 저하를 피하기 위해 공유 풀 메모리의 연속된 대규모
요청에 대해 예약된 공간을 지정합니다. 이러한 풀은 공유 풀에서 객체를 비우지 않도
록 공통적으로 필요한 모든 대규모 프로시저 및 패키지를 저장할 수 있는 크기여야 합
니다.
사용 가능한 값: SHARED_POOL_RESERVED_MIN_ALLOC에서 0.5 *
 SHARED_POOL_SIZE까지입니다. (바이트 단위)
기본값  : SHARED_POOL_SIZE 값의 5%

shared_pool_size
설명    : 공유 풀의 크기를 바이트 단위로 지정합니다. 공유 풀에는 공유 커서, 내장
 프로시저, 제어 구조 및 병렬 실행 메시지 버퍼와 같은 객체가 포함되어 있습니다.
이 값을 크게 설정하면 다중 사용자 환경에서 성능을 향상시킬 수 있습니다.
사용 가능한 값: 300 KB에서 운영 체제 특정 값입니다.
기본값  : 64비트인 경우 64MB, 아니면 16MB

shared_server_sessions
설명    : 허용할 공유 서버 구조 사용자 세션의 총 수를 지정합니다. 이 매개변수를
설정하면 전용 서버의 사용자 세션을 예약할 수 있습니다.
사용 가능한 값: 0부터 (SESSIONS - 5)까지 
기본값  : 파생: MTS_CIRCUITS 값과 (SESSIONS - 5) 값 중 작은 값

shared_servers
설명    : 공유 서버 환경에서 인스턴스가 시작될 때 생성할 서버 프로세스의 수를 지
정합니다.
사용 가능한 값: 운영 체제에 따라 다릅니다.
기본값  : 1

sga_max_size
설명: 인스턴스 사용 기간에 대한 시스템 글로벌 영역의 최대 크기를 지정합니다.
사용 가능한 값: 운영 체제에 따라 0입니다. 시작 시 최소값을 조정하면 부적절하다는
 것에 유념하십시오.
기본값: 지정된 값이 없는 경우 sga_max_size의 기본값은 시작 시 SGA의 초기 크기, X
와 동일합니다. 이 크기는 SGA에서의 다른 풀(예: 버퍼 캐시, 공유 풀, 대형 풀 등)
크기에 따라 다릅니다. 값이 X보다 작은 것으로 지정되는 경우 사용 중인 sga_max_siz
e의 크기는 X가 됩니다. 즉, 최대값(X는 사용자가 지정한 sga_max_size 값)입니다.

sort_area_retained_size
설명    : 정렬 실행이 완료된 후 보유한 사용자 전역 영역(UGA) 메모리의 최대 크기
를 지정합니다. 이 메모리는 정렬 공간에서 마지막 행이 인출된 후 운영 체제가 아닌
UGA로 환원됩니다.
사용 가능한 값: 두 개의 데이터베이스 블록에 해당하는 값부터 SORT_AREA_SIZE 값까
지입니다.
기본값  : SORT_AREA_SIZE 값

sort_area_size
설명    : SORT_AREA_SIZE는 정렬에 사용하는 메모리의 최대 크기를 바이트 단위로 지
정합니다. 정렬이 완료된 후 행은 반환되고 메모리는 해제됩니다. 대규모 정렬의 효율
성을 향상시키려면 이 크기를 증가시키십시오. 메모리가 초과되면 임시 디스크 세그먼
트를 사용합니다.
사용 가능한 값: 6개의 데이터베이스 블록에 해당하는 값(최소값)에서 운영 체제 특정
 값(최대값)까지입니다.
기본값  : 운영 체제에 따라 다름

spfile
설명: 사용 중인 현재 서버 매개변수 파일의 이름을 지정합니다.
사용 가능한 값: 정적 매개변수
기본값: SPFILE 매개변수는 사용할 서버 매개변수 파일의 이름을 나타내기 위해 클라
이언트측 PFILE에 정의될 수 있습니다. 서버에서 기본 서버 매개변수 파일을 사용하는
 경우 SPFILE 값은 서버에 의해 내부적으로 설정됩니다.

sql_trace
설명    : SQL 추적 기능을 활성화하거나 비활성화합니다. TRUE로 설정된 경우 성능
개선에 유용한 조정 정보를 수집합니다. SQL 추적 기능은 시스템 오버헤드를 유발하므
로 TRUE 설정은 조정 정보가 필요한 경우에만 사용해야 합니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

sql_version
설명    :  사용되지 않음

sql92_security
설명: 해당 참조 테이블 열 값의 갱신 또는 삭제를 실행하는 데 테이블 수준 SELECT
권한이 필요한지 여부를 지정합니다.
사용 가능한 값: TRUE | FALSE
기본값: FALSE

standby_archive_dest
설명    : 기본 인스턴스의 아카이브 로그 위치를 지정합니다. STANDBY_ARCHIVE_DEST
및 LOG_ARCHIVE_FORMAT 값을 사용하여 대기 사이트의 전체 아카이브 로그 파일 이름을
 구성합니다. 대기 데이터베이스의 RFS 서버는 ARCHIVE_LOG_DEST 값이 아닌 이 값을
사용합니다.
사용 가능한 값: NULL 문자열 또는 원시 장치 이름을 제외한 유효한 경로/장치 이름입
니다.
기본값  : NULL

standby_file_management

standby_preservs_names
설명: 대기 데이터베이스의 파일 이름이 기본 데이터베이스의 파일 이름과 동일한지
여부를 나타냅니다.
사용 가능한 값: TRUE 또는 FALSE입니다. 참고: 값을 True로 설정하고 대기 데이터베
이스가 기본 데이터베이스와 동일한 시스템에 있는 경우 기본 데이터베이스 파일은 겹
쳐쓰여질 수 있습니다.
기본값: FALSE입니다.

start_transformation_enabled
설명    : 스타 질의에 대해 비용 기반 질의 변환의 적용 여부를 결정합니다. TRUE로
설정된 경우 최적기는 스타 질의에 대한 비용 기반 변환을 고려합니다. FALSE로 설정
된 경우 변환을 사용하지 않습니다. TEMP_DISABLE로 설정하면 질의 변환을 고려하지만
 임시 테이블은 사용되지 않습니다.
사용 가능한 값: TRUE | FALSE | TEMP_DISABLE
기본값  : FALSE

 


T
tape_asynch_io
설명    : 순차 장치에 대한 비동기 입출력(예: Oracle 입출력 테이프 데이터의 BACKU
P 또는 RESTORE) 제어에 사용됩니다. TRUE 값은 사용 중인 플랫폼이 기록 장치에 대한
 비동기 입출력을 지원하는 경우에만 유효합니다. 비동기 입출력 구현이 안정적이지
않을 때는 FALSE 값을 사용하십시오.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

thread
설명    : 클러스터 데이터베이스 매개변수로 각 인스턴스에 대한 고유한 리두 스레드
 번호를 지정합니다. 인스턴스의 리두 스레드를 비활성화하면 해당 인스턴스를 시작할
 수 없습니다. 0으로 설정하면 활성화된 사용 가능한 공용 스레드를 선택하게 됩니다.
 \n사용 가능한 값: 0에서 활성화된 최대 스레드 수까지입니다. \n기본값  : 0

timed_statistics
설명    : 데이터베이스와 SQL 문을 조정하는 데 사용할 수 있는 운영 체제 시간 정보
를 수집합니다. 운영 체제에서 시간을 요청하는 오버헤드를 방지하려면 이 값을 0으로
 설정합니다. TRUE로 설정하면 오래 지속되는 작업의 진행 상황을 보는 데 유용하게
사용할 수 있습니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

timed_os_statistics
설명    : 시스템 관리자가 운영 체제 통계를 수집하기 위해 사용합니다. 리소스를 효
율적으로 사용하기 위해 필요한 경우에만 이 값을 설정합니다. 전용 서버의 경우 운영
 체제 통계는 사용자가 접속 및 접속 해제하거나 지정된 시간 제한이 만료되어 호출이
 인출될 때 수집됩니다. 공유 서버의 경우 통계는 인출 또는 인입된 호출에 대해 수집
됩니다.
사용 가능한 값: 초 단위의 시간입니다.
기본값  : 0(운영 체제 통계 새로 고침 없음)

trace_enabled

tracefile_identifier

transaction_auditing
설명    : 트랜잭션 계층이 사용자 로그온 이름, 사용자 이름, 세션 ID, 일부 운영 체
제 정보 및 클라이언트 정보를 포함한 특수한 리두 레코드를 생성할지 결정합니다. 이
러한 레코드는 리두 로그 분석 도구를 사용할 때 유용할 수 있습니다.
사용 가능한 값: TRUE | FALSE
기본값  : TRUE

transactions
설명    : 동시 트랜잭션의 최대 수를 지정합니다. 이 값을 크게 설정하면 SGA 크기가
 증가하여 인스턴스 시작 시 할당된 롤백 세그먼트 수를 증가시킬 수 있습니다. 기본
값은 순환 트랜잭션 수를 고려하여 SESSIONS 값 크기보다 큽니다.
사용 가능한 값: 숫자입니다.
기본값  : 파생(1.1 * SESSIONS)

transactions_per_rollback_segment
설명    : 롤백 세그먼트당 허용된 동시 트랜잭션의 수를 지정합니다. 시작 시 획득하
는 롤백 세그먼트의 최소 수는 TRANSACTIONS 값을 이 매개변수 값으로 나눈 값에 해당
합니다. 롤백 세그먼트 이름을 ROLLBACK_SEGMENTS 매개변수에 지정하면 더 많은 수의
롤백 세그먼트를 획득할 수 있습니다.
사용 가능한 값: 1에서 운영 체제 특정 값까지입니다.
기본값  : 5

 

U
undo_retention
설명: UNDO_RETENTION 매개변수는 데이터베이스에 보유할 커밋된 실행 취소 정보의 양
을 지정하는 데 사용됩니다. 매개변수 값은 인스턴스 시작 시간에 설정할 수 있습니다
. 실행 취소 보존 공간 요구 사항을 만족시키는 데 필요한 실행 취소 공간의 양은 다
음과 같이 계산될 수 있습니다. UndoSpace = RD * UPS. 여기서 UndoSpace는 실행 취소
 블록 수로 나타나고 RD는 초 단위의 UNDO_RETENTION으로 나타나며 UPS는 초당 실행
취소 블록 수로 나타납니다.
사용 가능한 값: 허용 최대값은 (2 ** 32)초입니다.
기본값: 30초입니다.

undo_management
설명: 시스템이 사용해야 하는 실행 취소 공간 관리 모드를 지정합니다. AUTO로 설정
할 경우 인스턴스는 SMU 모드로 시작됩니다. 그렇지 않은 경우 RBU 모드로 시작됩니다
. RBU 모드에서 실행 취소 공간은 롤백 세그먼트로 외부적으로 할당됩니다. SMU 모드
에서 실행 취소 공간은 실행 취소 테이블스페이스로 외부적으로 할당됩니다.
사용 가능한 값: Auto 또는 Manual
기본값: 첫번째 인스턴스가 시작될 때 UNDO_MANAGEMENT 매개변수가 생략되는 경우 MAN
UAL의 기본값이 사용되며 인스턴스는 RBU 모드로 시작됩니다. 첫번째 인스턴스가 아닌
 경우 인스턴스는 모든 다른 기존의 인스턴스와 동일한 실행 취소 모드로 시작됩니다.

undo_suppress_errors
설명: 사용자가 SMU 모드로 RBU 작업(예: ALTER ROLLBACK SEGMENT ONLINE) 실행을 시
도하는 동안 오류를 방지할 수 있도록 합니다. 사용자는 모든 응용 프로그램 및 스크
립트가 SMU 모드로 변환되기 전에 SMU 기능을 사용할 수 있습니다.
사용 가능한 값: True 또는 False
기본값: False입니다.

undo_tablespace
설명: 실행 취소 테이블스페이스는 실행 취소 정보를 저장하는 데 단독으로 사용됩니
다. UNDO_TABLESPACE는 SMU(시스템 관리 실행 취소) 모드로만 사용할 수 있습니다. 지
정된 실행 취소 테이블스페이스, <undoname>은 인스턴스에 의해 사용됩니다. 테이블스
페이스가 존재하지 않는 경우, 실행 취소 테이블스페이스가 아닌 경우 또는 다른 인스
턴스에 의해 사용 중인 경우 인스턴스 STARTUP은 실패합니다.
기본값: 각 데이터베이스는 0 또는 더 많은 실행 취소 테이블스페이스를 포함합니다.
SMU 모드에서 각 ORACLE 인스턴스는 하나의 실행 취소 테이블스페이스에 할당됩니다.

use_indirect_data_buffers
설명    : 4GB 이상의 물리적 메모리를 지원할 수 있는 32비트 플랫폼에 대해 확장된
버퍼 캐시 방식의 사용을 제어합니다. 다른 플랫폼에서는 무시됩니다.
사용 가능한 값: TRUE | FALSE
기본값  : FALSE

user_dump_dest
설명    : 사용자 프로세스를 대신하여 디버깅 추적 파일을 기록할 위치의 디렉토리
경로명을 지정합니다. 예: NT의 경우 C:/ORACLE/UTRC; UNIX의 경우 /oracle/utrc; VMS
의 경우 DISK$UR3:[ORACLE.UTRC]
사용 가능한 값: 유효한 로컬 경로명, 디렉토리, 디스크입니다.
기본값  : 운영 체제에 따라 다름

utl_file_dir
설명    : 데이터베이스 관리자가 PL/SQL 파일 입출력이 허용된 디렉토리를 지정할 수
 있도록 합니다. 하나 이상의 디렉토리를 지정하려면 여러 개의 UTL_FILE_DIR 매개변
수를 사용하십시오. UTL_FILE_DIR 매개변수에 지정된 파일에 대해서는 모든 사용자가
읽기 또는 쓰기 작업을 수행할 수 있습니다.
사용 가능한 값: 임의의 유효한 디렉토리 경로입니다.
기본값  : 없음

 

V


W
workarea_size_policy
설명: 작업 영역 크기 조정 정책을 지정합니다. 이 매개변수는 작업 영역이 조정되는
모드를 제어합니다.
사용 가능한 값: AUTO, MANUAL입니다.
기본값: PGA_AGGREGATE_TARGET이 설정되어 있는 경우에는 AUTO, 그렇지 않은 경우에는
 MANUAL입니다.


X


Y


Z

 

반응형

'ORACLE > ADMIN' 카테고리의 다른 글

RMAN  (0) 2007.07.24
ORA-01555 (Snapshot too old) 에러 발생 원인과 대처 방법  (0) 2007.07.06
오라클 버젼 확인 명령어  (0) 2007.06.19
패스워드 제한 설정  (0) 2007.06.16
[Oracle] 권한 및 가능한 작업  (0) 2007.06.13
Posted by [PineTree]
ORACLE/RAC2007. 6. 25. 03:59
반응형

[RAC] 100% 무정지를 향한 아름다운 도전

김형일

Real Application Cluster, 그 어렵다던 RAC을 정복하기 위해 여행을 떠나 보자. 사실 어렵지 않다. 단지 100% 무정지를 구현하기가 어려울 뿐이다. 연금술사들이 금을 만들기 위해 부단한 노력을 했던 것처럼 100% 무정지를 위해 필수불가결한 RAC에 대한 여행을 시작해 보겠다.

사실 ‘전문가와 떠나는 30일간의 여행’의 진행을 요청받았을 때 가볍게 생각한 것은 사실이다. 일반적인 Q&A를 하는 것처럼 글을 쓰면 되겠구나 했는데 그것이 아니었다. 처음 송정훈씨를 만나며 느낀 것은 걱정스러움이었다. 현재 송정훈씨는 OPS 및 RAC을 운영하고 있으니 최전방에서 전투를 벌이고 있는 예봉을 겸비한 군인처럼 늠름했다. 그래도 주변의 권고로 용기를 내어 그동안 경험을 바탕으로 여행을 함께 떠나기로 했다.
송정훈씨가 주로 알고 싶어하는 것은 운영시의 RAC에 대한 진단과 튜닝 그리고 구축 방법과 TAF, CTF 등이었다. 업무 자체가 OPS와 RAC을 운영하고 있으므로 시스템의 헬스 체크, 그리고 문제 발생시의 해결 방안에 대해 궁금해 했다. 이에 다음과 같은 코스로 여행을 했다.

1. RAC의 개념과 구축 방법, 업무 분산 설계
2. RAC 운영
3. RAC의 진단 및 개선 활동
4. TAF, CTF 그리고 로드밸런스

자! 그럼 여행을 떠나보도록 하자. 우선 본격적인 RAC 진단과 개선을 시작하기에 앞서 RAC의 개념, 구축 방법, 그리고 업무 분산 설계에 대해 알아보겠다.

RAC이란 무엇인가?

오라클에서는 100% 무정지를 구축하고자 하는 고객의 요구에 따라 오라클7부터 OPS (Oracle Parallel Server)를 지원했으며 오라클8, 오라클8i로 발전하여 오라클9i에서는 각 노드간 캐시의 일치성을 보장하기 위한 서버간의 통신 방식을 디스크를 이용한 방식에서 초고속 인터커넥트를 이용한 캐시 퓨전(Cache Fusion)으로 변경하면서 획기적인 발전을 가져왔다. 결국 현재 오라클10g에서 그리드 컴퓨팅을 지원하는 더욱 발전된 RAC이 출시되어 100% 가용성을 위한 도전에 좋은 솔루션이 되고 있다. 간단하게 RAC을 설명하면 물리적인 하나의 데이터베이스를 여러 대의 서버가 공유하여 사용하는 것으로, 모든 서버들은 같은 데이터를 사용하게 되어 논리적으로는 하나의 시스템을 이용하는 것이다.

<그림 1> 기본적인 RAC 구조




<그림 2> 4번째 노드를 추가하는 경우




<그림 3> RAC의 캐시 퓨젼

확장이 손쉬운 RAC

RAC의 주요한 특징으로는 확장성을 제공한다는 것이다. 많은 고객들이 용량을 고려하여 시스템을 구축하지만 시간의 흐름에 따라 데이터는 증가하고, 또한 사용자의 새로운 요구사항으로 신규 애플리케이션이 추가되어 시스템의 부하는 점점 커지게 된다. 따라서 하나의 하드웨어에서 최대의 용량으로 증설하더라도 용량 부족 문제가 해결되지 않는 경우가 종종 생긴다. 이렇게 되면 시스템 운영 중에 많은 돈을 투자하여 더욱 큰 시스템을 도입하고, 기존의 운영 중이던 시스템을 신규 시스템으로 이관하는 작업을 하게 된다. 실로 엄청난 비용이 추가된다.
과거 OPS를 사용하는 경우에는 노드간 데이터를 주고받는 핑에 의한 성능의 저하로, OPS의 설계를 잘못했을 경우 1+1=0.7로 되어버리는, 즉 2대의 서버로 구축한 OPS 시스템이 하나의 시스템으로 운영하는 시스템보다 성능이 떨어지는 경우가 있었다. 그래서 어떤 경우에는 한 쪽 노드만을 사용하고, 다른 쪽 노드는 장애 발생시에 Fail-over하기 위한 용도로 사용하는 Hot Standby 시스템으로 운영하기도 했다. 그러나 현재의 RAC(오라클9i, 10g)에서는 이러한 제약사항이 개선되어 일반적으로 하나의 노드로 운영하는 데이터베이스와 마찬가지로 구성해도 별다른 성능 문제가 발생하지 않는다. 과거의 OPS가 1+1=0.7이 되었다면 현재의 RAC은 1+1=1.8 정도의 확장성을 제공한다.

가용성에서 으뜸인 RAC

RAC의 또 다른 특징은 고가용성이다. 하나의 서버로 구성된 데이터베이스인 경우 서버에 돌발 장애가 발생하게 되면 장애에 대한 복구가 완료될 때까지 모든 서비스는 정지해야만 한다. 그러나 RAC의 경우에는 하나의 서버에 장애가 발생하더라도 나머지 서버에서 지속적인 서비스를 제공할 수 있으므로 서비스의 중지는 없다. 또한 RAC의 경우에는 HW의 유지 보수, 패치 적용, 업그레이드를 하는 경우에도 정지 없이 서비스를 제공할 수 있다. 특히 오라클10g에서 개선된 Rolling patch, Rolling upgrade 기능은 서비스의 정지를 최소화시켜 준다.

RAC 구축 방법

다음 여행지는 실제 RAC으로 시스템을 구축할 경우 어떠한 부분에 중점을 두어야 하는지에 대한 것이다. RAC 구축 시에 기술적으로 고려해야 하는 점은 다음과 같다.

RAC 내 공유 오브젝트의 관리

RAC의 특성상 서로 다른 노드에서 동일한 데이터를 동시에 액세스하게 되면 핑이 발생하는데 핑이 과도하게 발생하면 RAC의 특수 구조인 노드간 인터커넥트 부분에 부하가 발생하여 전반적인 시스템의 성능의 저하를 발생한다. 이러한 핑의 발생이 최소화되도록 애플리케이션의 배치와 테이블의 물리적인 구조, 파티셔닝에 신경을 써야 한다. 과거 OPS에서는 이러한 핑 현상을 최소화시키는 것이 성능을 극대화시키는 첫 번째 방법이었다. 예를 들어 다음과 같은 것을 고려해 구축했다.

1. 인스턴스별로 사용하는 오브젝트에 대한 파티션을 나누기
- 공유 테이블 생성시 경합을 최소화하기 위해 extent를 인스턴스별로 할당한다.
- 시퀀스 같이 공유하는 오브젝트의 캐시 값을 증대시킨다.
2. 락의 배분을 조절(init.ora의 gc_files_to_lock, gc_rollback_segments 등)
- 공유 오브젝트를 중점 관리 테이블 스페이스에 집중화하고, 이 테이블 스페이스에 많은 락을 할당한다.
- 조회 위주의 데이터와 전혀 공유하지 않는 데이터(한 노드에서만 사용하는 데이터)에는 락을 최소로 할당한다.
3. 동시에 같은 데이터를 액세스하는 애플리케이션은 한 노드에서 수행하도록 하는 애플리케이션 파티셔닝
- 동일한 애플리케이션은 같은 노드에서 수행하도록 배치한다.
- 업무별로 그룹핑하여 노드간에 경합이 없도록 배치한다.

물론 오라클9i, 10g로 올수록 RAC의 기능이 개선되어 수작업 튜닝이 필요 없어지고 있지만, 만약 애플리케이션의 특성상 많은 핑이 발생하면 이와 같이 업무와 오브젝트를 분산해야 할 것이다.

인스턴스 장애시 복구 요구 시간

가용성을 지원하는 RAC은 돌발 장애시의 복구 요구 시간에 따라 인스턴스의 복구 시간을 만족할 수 있도록 해야 한다. 즉 하나의 노드에 장애가 발생했을 때 얼마나 빠른 시간 내에 서비스를 할 수 있는가에 대한 것이다. 이러한 요구사항을 기반으로 인스턴스 복구 시간을 고려해 구성하게 된다.

애플리케이션 서비스의 자동 복구 요구

돌발 장애시에 만약 사용자가 모르는 사이 복구되기를 원한다면 TAF (Transportation Application Failover)와 CTF(Connection Time Failover) 기능을 사용해야 한다. 그러나 현재의 버전에서 조회를 하는 애플리케이션인 경우에만 TAF의 기능을 이용하여 애플리케이션의 수정 없이 Failover를 구현할 수 있다.
CTF는 장애 발생시 새로 접속하는 사용자가 가용한 노드로 자동으로 접속할 수 있도록 구성하는 것이다. 이와 같이 TAF와 CTF를 통해 돌발 장애시 서비스의 정지 없이 혹은 수초 내에 가용한 노드로 접속을 넘김으로써 시스템의 가용성을 극대화시킬 수 있다.

자원의 효율적인 사용 요구

많은 사용자가 시스템 사용시 모든 노드가 균일하게 사용하도록 하려면 SQL*NET의 로드밸런스 기능을 사용해서 구현해야 한다. 보통의 경우 로드밸런서라는 네트워크 장비를 사용하여 사용자의 부하를 분산시키게 되는데, RAC을 사용하는 경우에는 SQL*NET의 구성만으로 사용자의 접속 수나 CPU의 부하를 계산하여 균일하게 분산시켜 줄 수 있다.

RAC의 진단

질문 : 캐시 퓨전 환경이나 업무 분산이 적절한지를 진단하려면 어떤 것을 살펴보면 되나?

이 부분은 송정훈씨가 가장 알고 싶어하는 것이었다. RAC을 운영하면서 어떤 부분을 점검해야 하는지, 또한 각각의 진단 결과에 따라 조치 사항이 무엇인지에 대해 많은 궁금증을 가지고 있었다. 필자 역시 이번 여행 중에서 가장 중요하게 여긴 부분이 바로 RAC 진단 부분이다.
RAC의 진단은 RAC의 특수 구조에 대한 진단이다. 즉 노드간 연결을 해주는 인터커넥트와 관련된 진단이 주가 된다. 결국 이 인터커넥트의 사용량과 부하를 진단하여 문제점을 해결하는 것이 RAC 진단의 시작과 끝이 된다. 그럼 인터커넥트와 관련된 진단을 어떤 방식으로 해야 하는가를 설명하겠다. 보통의 경우(필자의 경우)에는 다음의 3가지 방식으로 접근한다.

1. 통계치를 이용한 분석
2. RAC에 관련된 대기 정보를 이용한 분석
3. 오브젝트의 핑 정보

우선 통계치를 이용한 분석 방법을 살펴보겠다. 통계치란 데이터베이스가 운영되는 동안에 여러 가지 중요한 값을 저장·기록한 것으로, 이중에는 인터커넥트에 대한 정보들도 포함되어 있다. 이러한 통계치를 이용하여 의미있는 메트릭(Metric)을 만들게 된다. 트랜잭션 수를 통계치라 하면 메트릭은 초당 트랜잭션 수처럼 의미와 기준이 되는 것이다. 이러한 여러 가지 메트릭에는 적절한 기준 값이 있어서 진단 중인 시스템의 메트릭 값에 따라 기준에 적합한지 확인하여 시스템의 안정성을 점검하게 된다.
RAC의 진단에 대표적으로 확인하는 것은 AVG CR BLOCK RECEIVE TIME이다. 이 메트릭의 의미는 한 노드에서 다른 노드로부터 무결성 읽기를 하기 위해 블럭을 받기까지의 응답 시간을 의미하는 것으로 보통의 경우 15ms 이하의 값이 나와야 한다.

select b1.inst_id,
b2.value “CR BLOCKS RECEIVED”, -- 통계치
b1.value “CR BLOCK RECEIVE TIME”, -- 통계치
((b1.value / b2.value) * 10) “AVG CR BLOCK RECEIVE TIME (ms)” -- 메트릭
from gv$sysstat b1, gv$sysstat b2
where b1.name = ‘global cache cr block receive time’
and b2.name = ‘global cache cr blocks received’
and b1.inst_id = b2.inst_id ;

INST_ID CR BLOCKS RECEIVED CR BLOCK RECEIVE TIME AVG CR BLOCK RECEIVE TIME (ms)
------- ------------------ --------------------- ------------------------------
    2        958091        67770        .707344083
    1        1116902        82760        .74097817

만약 15ms보다 높은 값이 나온다면 CPU의 용량이 부족하거나 Long-running SQL이 수행되고 있음을 알 수 있다. Long-running SQL은 많은 데이터 블럭들을 노드 간에 주고받게 되므로 인터커넥트에 부하를 가중하여 시간이 길어지게 된다. 또한 인터커넥트의 대역폭이나 네트워크 관련 파라미터가 정상적으로 구성되어 있는지 확인해 보아야 할 것이다.
다음으로 확인해 보는 것이 글로벌 캐시 락 퍼포먼스(global cache lock performance)이다. 이는 RAC의 캐시에 대한 락을 획득할 때의 응답 시간으로 20~30ms 이하의 값을 가져야 한다. 이 시간은 기존의 락을 획득하는 시간과 더불어 새로운 락을 생성하는 시간도 포함된다.

select b1.inst_id,
(b1.value + b2.value) “GLOBAL LOCK GETS”, -- 통계치
b3.value “GLOBAL LOCK GET TIME”, -- 통계치
(b3.value /(b1.value + b2.value)*10) “AVG GLOBAL LOCK GET TIME (ms)” - 메트릭
from gv$sysstat b1, gv$sysstat b2, gv$sysstat b3
where b1.name = ‘global lock sync gets’
and b2.name = ‘global lock async gets’
and b3.name = ‘global lock get time’
and b1.inst_id = b2.inst_id
and b2.inst_id = b3.inst_id;

INST_ID GLOBAL LOCK GETS GLOBAL LOCK GET TIME AVG GLOBAL LOCK GET TIME (ms)
------- ---------------- -------------------- -----------------------------
    1        185162646        1089892        .058861332
    2        2455830        323333        1.31659358

만약 이 값이 20~30ms보다 크다면 시스템 전체의 대기 이벤트 중 상위 10위에는 ‘WAITING SESSIONS’, ‘PCM LOCK BLOCKERS’, ‘PCM LOCK WAITERS’이 있을 것이다. 이러한 경우는 서로 다른 노드의 애플리케이션에서 동일한 오브젝트의 변경과 조회를 동시에 하게 되는 경우가 많이 발생한다. 물론 양 노드의 시스템에 부하가 많거나 인터커넥트의 네트워크 속도가 느린 경우도 발생하지만 Global Lock Get Time이 지나치게 큰 값이면 애플리케이션 락이 발생하는지 확인하여 해결해야 하며, 또한 노드간의 애플리케이션에서 동일한 오브젝트를 변경하는 애플리케이션끼리 그룹 핑하여 한쪽 노드에서 수행할 수 있도록 한다. 이를 애플리케이션 파티션닝이라고 하는데 각각의 애플리케이션의 크루드 메트릭스(CRUD: Create, Read, Update, Delete) 형태를 파악하여 동일 데이터를 접근하는 애플리케이션은 같은 노드에서 운영되도록 배치해야 한다. 과거의 OPS에서는 OPS 튜닝의 99%가 이러한 오브젝트의 배치와 업무 분산이 가장 중요한 포인트였다.
시스템의 상태와 Waiting을 이용한 분석으로는 v$session_wait이나 v$system_wait의 대기 이벤트를 이용하여 문제되는 부분을 중점적으로 찾아 진단하는 방법이다. 특히 RAC에 관련되는 대기 이벤트로는 ‘global cache cr requests’, ‘buffer busy global CR’, ‘ges inquiry response’ 등이 있다. 대부분 RAC에 관련된 대기 이벤트는 각각의 이벤트에 따른 조치 방법이 매우 다양하므로 오라클 Metalink에서 찾아보기 바란다. 찾는 방식은 http:://metalink. oracle.com의 검색 창에서 표를 붙여서 ‘global cache cr requests’로 찾으면 해결법을 쉽게 찾을 수 있다. 다음은 시스템 내에 현재 어떤 대기 이벤트가 있는가를 확인하는 방법이다.

select sw.inst_id, sw.sid,sw.state,sw.event,sw.seconds_in_wait seconds,sw.p1,
sw.p2,sw.p3,sa.sql_text last_sql
from gv$session_wait sw,gv$session s,gv$sqlarea sa
where sw.event not in (‘rdbms ipc message’, ‘smon timer’, ‘pmon timer’,
‘SQL*Net message from client’, ‘lock manager wait for remote message’,
‘ges remote message’, ‘gcs remote message’,
‘gcs for action’, ‘client message’,’pipe get’,’Null event’, ‘PX Idle Wait’,
‘single-task message’, ‘PX Deq: Execution Msg’,
‘KXFQ: kxfqdeq - normal deqeue’,’listen endpoint status’,
‘slave wait’, ‘wakeup time manager’)
and seconds_in_wait > 0 and (sw.inst_id = s.inst_id and sw.sid = s.sid)
and (s.inst_id = sa.inst_id and s.sql_address = sa.address)
order by seconds desc;

마지막으로 오브젝트의 핑 정보를 이용한 방법이 있다. RAC 환경에서는 핑 오퍼레이션이 많을수록 시스템의 부하는 가중되어 성능이 점차 느려질 수 있다. 그러므로 이러한 핑 현상이 많이 발생하는지 확인하는 진단이 필요하고 만약 많이 발생한다면 적절한 조치를 취해 이를 해소해서 RAC의 성능이 최적화될 수 있도록 해야 한다.
핑의 양이 얼마나 많이 발생하는지 확인하려면 v$lock_activity를 1분의 시간차를 두어 조회한 후 그 값들의 차이가 5000 이상이면 핑이 많이 발생한다고 볼 수 있다. 이러한 경우에 오브젝트에 대한 핑을 조사하여 애플리케이션 파티셔닝을 하면 효과가 있다.

select * from gv$lock_activity;

INST_ID    FROM TO_V ACTION_VAL    COUNTER
------- ---- ---- -------------------------------------------- -------------------
    1 NULL S    Lock buffers for read    27977258
    1 NULL X    Lock buffers for write    2330669
    1 S    NULL Make buffers CR (no write)    27724129
    1 S    X    Upgrade read lock to write    402467
    1 X    NULL Make buffers CR (write dirty buffers)    2448830
    1 X    S    Downgrade write lock to read (write dirty buffers)    249608
    2 NULL S    Lock buffers for read    10765390
    2 NULL X    Lock buffers for write    2259510
    2 S    NULL Make buffers CR (no write)    10684894
    2 S    X Upgrade read lock to write    272618
    2 X    NULL Make buffers CR (write dirty buffers)    2212990
    2 X    S Downgrade write lock to read (write dirty buffers)    275689

시스템 전체에 핑이 많이 발생한다면 어떤 오브젝트에서 많이 발생하는가를 확인한다. 다음은 핑이 발생하는 오브젝트들을 파악하기 위한 SQL이다.

select inst_id, name, kind, file#, status,BLOCKS, READ_PINGS, WRITE_PINGS
from ( select
/*+ rule use_merge(df) */
p.inst_id, p.name, p.kind, p.file#, p.status, count(p.block#) BLOCKS,
sum(p.forced_reads) READ_PINGS, sum(p.forced_writes) WRITE_PINGS
from gv$ping p, gv$datafile df
where p.file# = df.file# (+)
group by p.inst_id, p.name, p.kind, p.file#, p.status
order by sum(p.forced_writes) desc, sum(p.forced_reads) desc)
where rownum < 50
order by WRITE_PINGS desc, READ_PINGS desc;

INST_ID    NAME    KIND    FILE#    STATU    BLOCKS READ_PINGS WRITE_PINGS
--- ---------------------- ------------- ----------- ----- ----------- -----------
1 STATS$SQL_PLAN_USAGE_HV INDEX 73 cr 510 988 0
1 IX_PTTA_N1         INDEX PARTITION 29 xcur 344 880 0
1 STATS$SQL_PLAN_USAGE_HV INDEX 62 cr 460 832 0
2 TB_PTRT         TABLE 14 scur 60 394 0
1 _SYSSMU16$     UNDO 5 cr 8 332 0
1 TB_PTRT         TABLE 14 scur 80 316 0
......

이 결과를 보면 IX_PTTA_N1 인덱스와 TB_PTRT 테이블에 Read 핑이 많이 발생하는 것을 알 수 있다. 그러므로 이 IX_PTTA_N1 인덱스와 TB_PTRT 테이블이 모든 노드에서 동시에 변경과 조회를 하므로 이 오브젝트를 사용하는 애플리케이션을 확인하여 가능하면 한쪽 노드에서 수행할 수 있도록 조정하면 효과를 볼 수 있다. 하지만 만약 인터커넥트에 별다른 부하가 없고 핑의 발생이 앞과 같이 그다지 많이 발생하지 않을 경우에는 특별한 조치를 하지 않아도 된다.
참고로 다음은 False 핑을 조회하는 방법이다. False 핑은 반드시 핑이 발생하지 않아도 되는데, RAC의 락 분배 방식에 따라 하나의 락에서 여러 개의 블럭을 관할하게 되어 실제로 필요한 블럭은 변경이 없는데도 불구하고 다른 블럭의 변경에 의해 락의 오너십을 넘겨주는 것을 False 핑이라 한다.

select inst_id, name, kind, file#, status, BLOCKS, READ_PINGS, WRITE_PINGS
from (
select /*+ rule use_merge(df) */
p.inst_id, p.name, p.kind, p.file#, p.status, count(p.block#) BLOCKS,
sum(p.forced_reads) READ_PINGS, sum(p.forced_writes) WRITE_PINGS
from gv$false_ping p, gv$datafile df
where p.file# = df.file# (+)
group by p.inst_id, p.name, p.kind, p.file#, p.status
order by sum(p.forced_writes) desc, sum(p.forced_reads) desc)
where rownum < 51
order by WRITE_PINGS desc, READ_PINGS desc;

INST_ID NAME KIND FILE# STATU BLOCKS READ_PINGS WRITE_PINGS
---- -------------------- ---------- -------- ----- -------- ---------- -----------
1 _SYSSMU16$ UNDO 5 cr 8 332 0
1 _SYSSMU20$ UNDO 5 cr 6 264 0
1 _SYSSMU13$ UNDO 5 cr 4 114 0
2 TB_PTRT TABLE 14 pi 4 102 0
......

만약 False 핑이 과도하게 발생하는 경우, 오라클9i 이전의 OPS에서 해결한 방식과 동일하게 읽기전용 테이블 스페이스에는 락의 할당을 적게 주고, 모든 노드에서 빈번하게 변경/수정이 발생하는 테이블 스페이스에는 락을 아주 많이 지정하여 해결할 수 있다. 그러나 이를 지정하는 것은 아주 조심해서 사용해야 하며 오라클9i 이상에서는 기본 값(Default)으로 사용해도 잘 운영된다.
추가적으로 statspack을 이용하여 RAC을 진단할 수 있다. 원하는 시간대의 statspack의 스냅샷을 이용하여 Statspack의 리포트를 생성해 보면 ‘Global Cache Service - Workload Characteristics’ 부분에 여러 가지 다양한 RAC 관련 메트릭를 보여준다. 다음은 statspack 리포트의 샘플이다. Statspack report 생성은 $ORACLE_HOME/rdbms/admin/ 디렉토리의 spreport.sql을 수행하면 만들 수 있다.

Global Cache Service - Workload Characteristics
-----------------------------------------------
Ave global cache get time (ms): 0.3
Ave global cache convert time (ms): 0.9
Ave build time for CR block (ms): 0.0
Ave flush time for CR block (ms): 0.2
Ave send time for CR block (ms): 0.1
Ave time to process CR block request (ms): 0.3
Ave receive time for CR block (ms): 0.6
Ave pin time for current block (ms): 0.1#
Ave flush time for current block (ms): 0.1
Ave send time for current block (ms): 0.1
Ave time to process current block request (ms): 0.2
Ave receive time for current block (ms): 0.7

다음은 RAC의 진단 중에 중요한 응답 속도에 대한 일반적인 기준 값이다. 이 statspack의 결과를 이용해 점검해 보면 RAC 관련된 메트릭을 검증할 수 있다.

간략하게나마 RAC 진단에 대해 알아보았다. 오라클9i, 10g의 RAC은 과거 OPS와는 달리 캐시 퓨전으로 기능과 성능이 아주 많이 개선되어 파라미터 튜닝이나 애플리케이션 파티셔닝의 부담이 현격히 줄어 데이터베이스 관리자가 쉽게 구축하여 사용할 수 있게 되었다. 심지어 오라클 RAC 매뉴얼에는 싱글 데이터베이스를 RAC으로 이관할 때 고려할 사항이 전혀 없다고 할 정도이다.

TAF와 CTF 그리고 로드밸런스

질문 : SQL*Net 및 관련 init.ora의 설정이 잘 되었는지 알고 싶다. 관련해서 예전에 설명해 주기로 한 부분(Failover & Load balancing)도 궁금하다. 그리고 순수하게 JDBC 연결을 사용할 경우 TAF를 지원할 수 없다고 알고 있는데 맞는지.

마지막 여행지로 다녀온 것은 TAF와 CTF 그리고 로드밸런스이다. 사실 이 부분은 RAC 데이터베이스와 클라이언트나 미들티어 애플리케이션과의 통신 구조에 대한 것이다. 결국 RAC의 아키텍처에서 빠질 수 없는 부분이다. 게다가 TAF, CTF, 로드밸런스의 사용 여부는 사용자의 가용성 요구사항과 응용 애플리케이션의 성격 등에 따라 그 구성이 달라지게 된다.

TAF와 CTF의 정의

◆ CTF : Connection Time Failover의 기능은 클라이언트가 데이터베이스로 접속을 시도할 때 접속하고자 하는 서버에 장애가 발생하여 접속하지 못할 경우 다른 서버로 접속할 수 있도록 하는 기능.
◆ TAF : Transparent Application Failover의 기능은 클라이언트가 RAC의 한쪽 노드에 접속하여 사용하는 중에 접속한 노드에 장애가 발생한 경우 가용한 다른 노드로 접속하여 작업을 계속할 수 있도록 하는 기능.

CTF는 접속할 수 있는 노드들을 tnsnames.ora에 명시해 놓고, 그 중에 접속할 수 있는 노드로 접속하는 것을 말한다. 결국 CTF는 접속시의 정지된 서버가 있을 경우 이 서버를 피해 가용한 서버로 접속하는 Failover 기능을 말한다.
TAF의 경우 오라클에서 조회(select)를 하고 있는 경우에만 자동 Failover를 지원한다. 만약 입력(insert), 삭제(delete)의 경우에는 해당 처리에 대한 롤백 처리를 반드시 구현해 주어야 Failover가 가능하다. 이러한 제약사항으로 DML이 있는 응용 프로그램에 대한 TAF는 현실적으로 구현이 어렵다. 사실 이러한 점이 송정훈씨의 고민 중 하나였는데, 다만 향후의 버전에서 조회뿐만이 아닌 모든 DML에 대한 TAR가 구현되어 진정한 Failover를 구현할 수 있기를 바란다.
결국 대부분의 경우에는 CTF나 조회만 하는 응용 프로그램에 TAF를 구현한다. 게다가 만약 응용 프로그램이 웹으로 구현되어 있을 경우에는 CTF만을 사용하더라도 어느 정도의 가용성은 보장할 수 있다. 예를 들어 CTF만 구현했다고 가정할 때, 페이지 이동 중 장애가 발생했다면 사용자 화면에 에러가 표시된다. 이때 사용자가 다시 시도하는 경우에 장애나 노드가 아닌 정상적인 노드로 다시 접속하게 되므로 사용자는 장애를 느끼지 않을 것이다.

TAF의 구현 구조

<그림 4> TAF의 구현 구조


다음은 TAF를 구현하는 모드와 방식을 나타낸 표이다. 방식에는 BASIC, PRECONNECT 방식이 있고, 접속 모드에는 SESSION, SELECT가 있다. 이러한 TAF 기능은 이미 언급한 바와 같이 OCI를 사용하는 프로그램 언어를 사용했을 때만 가능하다. <리스트 1>은 TAF 예제 프로그램으로 JDBC Thick 드라이버를 사용하여 Callback을 구현한 예제로써 TAF와 CTF를 동시에 사용한 것이다.

로드밸런스 알기

로드밸런스란 클라이언트의 요청들을 여러 개의 서버로 분산시켜서 다중 서버들의 자원을 골고루 사용할 수 있도록 하는 것이다. 오라클에서 지원하는 로드밸런스의 기능에는 클라이언트 사이드 로드밸런스와 서버 사이드 로드밸런스 2가지가 있다. 클라이언트 사이드 로드밸런스인 경우에는 tnsnames.ora에 LOAD_BALANCE=ON을 지정하고 ADDRESS_LIST에 여러 개의 노드로 접속하는 주소를 지정하면 임의적(random) 방식을 이용하여 접속하게 된다. 이와 같은 방식은 접속의 수를 1:1로 나뉘는 방식으로 고정 방식(static)이라 할 수 있다.
서버 사이드 로드밸런스인 경우에는 init.ora의 remote_listener들을 지정하여 로드밸런스를 할 모든 리스너를 지정한다. 이렇게 지정하면 오라클 프로세스 중의 하나인 PMON이 30초마다 서버의 부하를 측정하여 변화가 많이 있는 경우에 모든 리스너에 정보를 배포한다. 변화가 없을 경우에는 10분마다 다시 부하 정보가 갱신된다. 여기서 측정되는 부하는 접속 수와 서버 CPU의 부하를 계산한다. 이렇게 계산된 부하를 바탕으로 각각의 리스너가 클라이언트의 접속 요청에 대해 최소의 부하를 가진 서버로 보내주게 된다. 이와 같은 방식은 접속요청에 대해 부하에 따라 접속하는 서버를 결정하게 되므로 동적(dynamic) 방식이라 할 수 있다. 다음은 클라이언트 로드밸런스를 사용하는 방식이다.

TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = hikim1)(PORT = 1526))
(ADDRESS = (PROTOCOL = TCP)(HOST = hikim2)(PORT = 1526))
)
(CONNECT_DATA =
(SERVICE_NAME = 10g2)
)
)

다음은 서버 사이드 로드밸런스를 사용하는 방식이다.

Init.ora(node1)
remote_listener=ERP02

Init.ora(node2)
Remote_listener=ERP01

로드밸런스의 기능은 RAC 환경에서 추가적인 로드밸런스 장비의 도입없이도 전체 자원을 균등하게 사용할 수 있도록 해주며 대용량 처리를 요하는 시스템이나 많은 사용자가 있는 시스템에서는 자원을 효과적으로 사용할 수 있게 해주는 것이다.
그럼 로드밸런스에 대해 좀 더 깊이 고민해 보자. 일반적으로 정상 운영 중에 로드밸런스를 많이 고민하게 된다. 이는 앞에서 설명한 기능으로 어느 정도 해결이 가능하다. 그런데 장애 후의 로드밸런스에 문제점이 있다. 만약 한 개의 노드에 장애가 발생했다고 가정하면 모든 접속은 정상적인 노드로 새로 접속하여 서비스를 받게 된다. 이후 장애가 발생한 노드가 정상 복귀되어 서비스를 재개하면 어떻게 될까? 이미 모든 클라이언트가 정상 노드에 접속하여 서비스를 받고 있으므로 계속적으로 정상 노드에서만 운영하게 되어 있다.
이렇듯 장애 후의 부하 분산에 대한 적당한 답은 아직까지 없었다. 보통의 경우는 어쩔 수 없이 응용 애플리케이션이나 WAS를 재가동하여 접속을 새로 하는 방법 밖에 없었다. 그러나 오라클10g에서는 이러한 장애 후 재부하 분산을 위해 dbms_service라는 PL/SQL 패키지를 이용하여 인액티브한 세션을 정리하여 다시 접속을 시키는 방식으로 장애 후 부하 분산 기능을 제공한다. 조금은 미약한 방식인 듯하지만 WAS의 커넥션 풀(connection pool)을 사용하는 경우라면 잘 활용할 수 있다.

캐시 퓨전의 발전

이번 여행을 마치면서 오라클 RAC에 대해 개념, 진단 방법, 구축 방법, 그리고 TAF, CTF, 로드밸런스에 대해 이야기했다. 9i RAC부터는 캐시 퓨전의 발전으로 과거의 OPS에서 항상 치러왔던 핑과의 전쟁에서 벗어날 수 있었으며, 애플리케이션의 파티셔닝이 없더라도 큰 문제 없이 시스템을 구축할 수 있다. 이러한 것들이 100% 무정지 시스템을 위해 어디선가 노력하는 분들에게 1%라도 도움이 되었으면 하는 마음으로 마무리한다. 100%의 무정지를 향한 아름다운 도전에 성공의 외침을 바라며 글을 마친다.

출처 : 마이크로소프트웨어[2004년도 7월호]

반응형
Posted by [PineTree]
ORACLE/ADMIN2007. 6. 19. 20:32
반응형

오라클 버젼 확인 명령어

 

SELECT * FROM product_component_version;

반응형
Posted by [PineTree]
ORACLE/ADMIN2007. 6. 16. 01:26
반응형

오라클 계정 패스워드 제한설정


패스워드 제한 설정

$ORACLE_HOME/rdbms/admin/utlpwdmg.sql파일은 sys계정이 소유하고 있어야 한다.
스크립트 마지막에 default profile에 대한 패스워드제한을 설정하므로 원하지 않는다면
주석처리하고 실행하는 것이 좋겠다.

-- ALTER PROFILE DEFAULT LIMIT
-- PASSWORD_LIFE_TIME 60
-- PASSWORD_GRACE_TIME 10
-- PASSWORD_REUSE_TIME 1800
-- PASSWORD_REUSE_MAX UNLIMITED
-- FAILED_LOGIN_ATTEMPTS 3
-- PASSWORD_LOCK_TIME 1/1440
-- PASSWORD_VERIFY_FUNCTION verify_function;

SQL> connect sys/change_on_install
Connected.
SQL> @?/rdbms/admin/utlpwdmg.sql

Function created.

SQL> connect system/manager
Connected.
SQL> create profile myprofile limit
  2  failed_login_attempts 5
  3  password_life_time 60
  4  password_reuse_time 60
  5  password_reuse_max unlimited
  6  password_verify_function verify_function
  7  password_lock_time 1/24
  8  password_grace_time 10;

Profile created.

SQL> alter user kang profile myprofile;

User altered.


failed_login_attempts
비밀번호 5회이상 틀리게 입력하면 계정 lock함

password_life_time
패스워드변경주기(60일)

password_reuse_time
동일한 패스워드로 재사용가능한 시간(60일후 이전과 동일한 패스워드 재사용 가능)

password_reuse_max
현재 사용되는 비밀번호를 다시 사용하기 위해 변경해야만 하는 횟수

password_verify_function
Password Verification Routine지정(function)
sys계정에서 사용자가 패스워드체크루틴을 만들어서 지정할 수도 있고,
$ORACLE_HOME/rdbms/admin/utlpwdmg.sql파일을 실행해도 된다.

password_lock_time
패스워드가 lock되는 기간. 다시말하면,
패스워드 lock된 시작일부터 자동으로 unlock되는 일수(1시간)

password_grace_time
lock하기전의 유예회수. 로그회수 10회까지 경고메시지 출력, 10회이상일때 lock시킴

반응형
Posted by [PineTree]
ORACLE/ADMIN2007. 6. 13. 20:13
반응형

8i부터는 connect, resource, dba라는 롤이 없어졌습니다.
다만, 이전 버전과의 호환성 차원에서 존재하는것이구요.
만약 grant connect, resource to 유저명; 이 된다하더라도..
앞으로 8i 이상 버전에서 사용하실 때 한 번 더 확인해보실 필요가 있습니다.
뭐 큰 문젠 없을검다..^^;;

DB에 접속이 가능하려면 최소한 create session 권한은 있어야 하는거 아시죠?
CONNECT - ALTER SESSION, CREATE SESSION, CREATE DATABASE LINK, CREATE SEQUENCE, CREATE SESSION, CREATE SYNONYM, CREATE SESSION, CREATE VIEW

RESOURCE - CREATE CLUSTER/INDEXTYPE/OPERATOR/PROCEDURE/SEQUENCE/TABLE/TRIGGER/TYPE

 

--------------------------------------------------------------------------------
ANALYZE ANY
  데이터베이스의 모든 테이블, 클러스터, 인덱스를 분석
 
AUDIT ANY
  데이터베이스의 스키마 개체를 감사
 
AUDIT SYSTEM
  명령문 감사 옵션과 권한 감사 옵션의 활성 여부를 결정
 
CREATE CLUSTER
  자신의 스키마에 클러스터를 생성
 
CREATE ANY CLUSTER
  CREATE ANY TABLE과 유사한 권한으로 모든 스키마에 클러스터를 생성
 
ALTER ANY CLUSTER
  데이터베이스의 모든 클러스터를 변경
 
DROP ANY CLUSTER
  데이터베이스의 모든 클러스터를 삭제
 
ALTER DATABASE
  데이터베이스를 변경. 운영 체제 권한에 관계없이 Oracle을 사용하여 운영 체제에 파일을 추가
 
CREATE DATABASE LINK
  자신의 스키마에 개인용 데이터베이스 링크를 생성
 
CREATE ANY INDEX
  테이블의 스키마에 인덱스를 생성
 
ALTER ANY INDEX
  데이터베이스의 인덱스를 변경
 
DROP ANY INDEX
  데이터베이스의 인덱스를 삭제
 
GRANT ANY PRIVILEGE
  개체 권한이 아닌 시스템 권한을 부여
 
CREATE PROCEDURE
  자신의 스키마에 내장 프로시저, 함수, 패키지를 생성
 
CREATE ANY PROCEDURE
  스키마에 내장 프로시터, 함수, 패키지를 생성
(사용자는 또한 ALTER ANY TABLE, BACKUP ANY TABLE, DROP ANY TABLE, SELECT ANY TABLE, INSERT ANY TABLE, UPDATE NAY TABLE, DELETE ANY TABLE 또는 GRANT ANY TABLE 권한이 있어야 함
 
ALTER ANY PROCEDURE
  스키마에 있는 내장 프로시저, 함수, 패키지를 컴파일
 
DROP ANY PROCEDURE
  스키마에 있는 내장 프로시저, 함수, 패키지를 삭제
 
EXECUTE ANY PROCEDURE
  스키마에 있는 독립형이나 패키지된 프로시저 또는 함수를 실행할 수 있으며 모든 공용 패키지 변수를 참조
 
CREATE PROFILE
  프로파일을 생성
 
ALTER PROFILE
  데이터베이스의 프로파일을 변경
 
DROP PROFILE
  데이터베이스의 프로파일을 삭제
 
ALTER RESOURCE COST
  모든 사용자 세션에서 사용하는 자원에 대한 비용을 설정
 
CREATE PUBLIC DATABASE LINK
  공용데이터베이스 링크를 생성
 
DROP PUBLIC DATABASE LINK
  공용 데이터베이스 링크를 삭제
 
CREATE PUBLIC SYNONYM
  공용 동의어를 생성
 
DROP PUBLIC SYNONYM
  공용 동의어를 삭제
 
CREATE ROLE
  롤을 생성
 
ALTER ANY ROLE
  데이터베이스에서 롤을 변경
 
DROP ANY ROLE
  데이터베이스에서 롤을 삭제
 
GRANT ANY ROLE
  데이터베이스에 롤을 부여
 
CREATE ROLLBACK SEGMENT
  롤백 세그먼트를 생성
 
ALTER ROLLBACK GEGMENT
  롤백 세그먼트를 변경
 
DROP ROLLBACK SEGMENT
  롤백 세그먼트를 삭제
 
CREATE SESSION
  데이터베이스에 접속
 
ALTER SESSION
  ALTER SESSIN 명령문을 실행
 
RESTRICTED SESSION
  STARTUP RESTRICT를 사용하여 데이터베이스가 시작되었을 때 접속(OSOPER과 OSDBA 롤은 이 권한을 가짐)
 
CREATE SEQUENCE
  자신의 스키마에 시퀀스를 생성
 
CREATE ANY SEQUENCE
  스키마에서 시퀀스를 생성
 
ALTER ANY SEQUENCE
  스키마에서 시퀀스를 변경
 
DROP ANY SEQUENCE
  스키마에서 시퀀스를 삭제
 
SELECT ANY SEQUENCE
  스키마에서 시퀀스를 참조
 
CREATE SNAPSHOT
  자신의 스키마에 스냅샷을 생성(사용자는 CREATE TABLE권한이 있어야 함)
 
ALTER SNAPSHOT
  스키마에서 스냅샷을 변경
 
DROP ANY SNAPSHOT
  스키마에서 스냅샷을 삭제
 
CREATE SYNONYM
  자신의 스키마에 동의어를 생성
 
CROP ANY SYNONYM
  스키마에서 동의어를 삭제
 
ALTER SYSTEM
  ALTER SYSTEM 명령문을 실행
 
CREATE TABLE
  자신의 스키마에 테이블을 생성. 또한 자신의 스키마에 있는 테이블에 무결성 제약 조건을 포함하여 인덱스를 생성할 수 있다.(이 권한을 부여받은 사용자는 테이블스페이스에 할당량을 가지거나 UNLIMITED TABLESPACE 권한이 있어야 함)
 
CREATE ANY TABLE
  스키마에 테이블을 생성.(이 권한을 부여받은 사용자가 CREATE ANY TABLE 구너한이 있고 다른 사용자의 스키마에 테이블을 생성하려는 경우 이 권한을 부여받은 사용자는 해당 테이블스페이스에 영역 할당량이 있어야 함. 해당 테이블의 소유자는 CREATE [ANY] TABLE 권한이 없어도 됨)
 
ALTER ANY TABLE
  스키마의 테이블을 변경하고 스키마에서 뷰를 컴파일
 
BACKUP ANY TABLE
  스키마의 테이블에서 Export 유틸리티를 사용하여 증분 엑스포트를 수행
 
DROP ANY TABLE
  스키마에서 테이블을 삭제하거나 잘라낸다.
 
LOCK ANY TABLE
  스키마에서 테이블이나 뷰를 잠근다.
 
COMMENT ANY TABLE
  스키마에 있는 테이블이나 뷰 또는 열에 대해 설명
 
SELECT ANY TABLE
  스키마에서 테이블뷰 또는 스냅샷을 질의
 
INSERT ANY TABLE
  스키마의 테이블이나 뷰에 행을 삽입
 
UPDATE ANY TABLE
  스키마의 테이블이나 뷰의 행을 갱신
 
DELETE ANY TABLE
  스키마의 테이블이나 뷰에서 행을 삭제
 
CREATE TABLESPACE
  테이블스페이스를 생성. 사용자 운영 체재 권한에 관계없이 Oracle을 사용하여 운영 체제에 파일을 추가
 
ALTER TABLESPACE
  테이블스페이스를 변경. 사용자 운영 체제 권한에 관계없이 Oracle을 사용하여 운영 체제에 파일을 추가
 
MANAGE TABLESPACE
  테이블스페이스를 오프라인이나 온라인으로 설정하여 테이블스페이스 백업을 시작하고 끝낸다.
 
DROP TABLESPACE
  테이블스페이스를 삭제
 
UNLIMITED TABLESPACE
  테이블스페이스를 무제한 사용. 이 구너한은 해당 테이블스페이스에 지정되어 있는 할당량을 무효화 함. UNLIMITED TABLESPACE 권한이 처뢰되면 이 권한을 사용하여 생성한 스키마 개체는 그대로 유지되지만 지정한 테이블스페이스에 대해 할당량이 허용되지 않으면 테이블스페이스에 대해 더 이상 할당되지 않는다. 이 시스템 권한은 롤이 아닌 사용자에게만 부여할 수 있음. 일반적으로 이 시스템 권한을 부여하는 대신 테이블스페이스 할당량을 지정.
 
FORCE TRANSACTION
  지역 데이터베이스에 있는 고유의 미확정 분산 트랜잭션을 강제로 커밋하거나 롤백
 
FORCE ANY TARANSACTION
  지역 데이터베이스에 있는 미확정 분산 트랜잭션을 강제로 커밋하거나 롤백
 
CREATE TRIGGER
  자신의 스키마에 트리거를 생성
 
CREATE ANY TRIGGER
  스키마의 테이블과 관련된 스키마에 트리거를 생성
 
ALTER ANY TRIGGER
  스키마에서 트리거를 활성화하거나 비활성화하거나 컴파일
 
DROP ANY TRIGGER
  스키마에서 트리거를 삭제
 
CREATE ANY USER
  사용자를 생성. 테이블스페이스에 할당량을 지정하고 기본값과 임시 테이블스페이스를 설정하며 CREATE USER 명령문의 일부분으로 프로파일을 지정할 수 있음
 
BECOME ANY USER
  다른 사용자가 됨. (전체 데이터베이스 임포트를 수행하는 사용자가 필요)
 
ALTER USER
  다른 사용자를 변경. ALTER USER 명령문을 사용하여 사용자의암호나 인증 방법을 변경하고 테이블스페이스 할당량을 지정하며 기본값과 임시 테이블스페이스를 설정하고 프로파일과 기본 롤을 지정할 수 있음(자신의 암호는 변경하지 않아도 됨)
 
DROP USER
  다른 사용자를 삭제
 
CREATE VIEW
  자신의 스키마에 뷰를 생성
 
CREATE ANY VIEW
  스키마에 뷰를 생성. (사용자는 또한 ALTER ANY TABLE, BACKUP ANY TABLE,DROP ANY TABLE, LOCK ANY TABLE, COMMENT ANY TABLE, SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE 도는 GRANT ANY TABLE 권한도 있어야 함)
 
DROP ANY VIEW
  스키마에서 뷰를 삭제
 
 
 

반응형
Posted by [PineTree]