Oracle-파라미터 파일

1. 파라미터 파일(Parameter File) 

 

파라미터 파일은 인스턴스 시작 시 $ORACLE_HOME/dbs 디렉터리에서 spfile을 사용하여 인스턴스를 구성하는 매개변수를 설정한다. 인스턴스를 시작하려면 오라클 서버가 초기화 매개변수 파일을 읽어야한다. 쉽게 말해 데이터베이스가 startup하면서 사용하는 파일이 파라미터 파일이다. 또는 오라클 인스턴스가 시작될 때 메모리 구조(SGA, PGA 등)와 동작 방식을 정의하며, 저장된 매개변수들을 이용하여 데이터베이스를 운영할 수 있는 상태로 만들어주는 파일이다.

 

2. 파라미터 파일 종류(PFILE, SPFILE)

 

2-1 PFILE

 

PFILE은 텍스트 파일이며, 운영 체제 편집기에서 수정된다. 수동으로 수정해야하고, 변경 사항은 시작 시 적용된다. 또한 인스턴스가 시작하는 동안에만 열리면 기본 위치는 $ORACLE_HOME/dbs이다. PFILE은 인스턴스를 시작하는 동안 PFILE은 읽기 전용 파일이며, 파일이 수정되면 인스턴스를 종료한 다음 다시 시작하여 새 매개변수 값을 적용해야 한다.

※ initSID.ora 라는 이름으로 지정됨 

 

2-2 SPFILE

 

SPFILE은 Oracle9i에서 새로 추가된 이진 파일이다. 이 파일은 수동으로 수정할 수 없고 항상 서버측에 상주해야 하며 파일이 생된 이후에는 오라클서버에 의해 유지 관리된다. SPFILE을 수동으로 수정하면 사용 자체가 안되고, 데이터베이스를 종료하고 시작할 때 변경 사항을 지속적으로 유지한다. 이는 파라미터 파일이 있어야 단일 데이터베이스의 인스턴스가 구동이 가능하다.

※ spfileSID.ora 형식으로 지정된다. 여기서 SID는 인스턴스의 이름을 표현하고, SID라는 내부 변수에 인스턴스 이름이 들어가 있음

 

2-3 파라미터 이름 확인 명령어

 

SQL> SELECT name, value FROM V$PARAMETER; ▶ 파라미터의 이름과 설정된 값 확인 

SQL> SHOW PAPRMETER <파라미터 명> 설정된 파라미터 값을 확인 

 

3. 실습 

 

3-1 파라미터 파일 생성 - spfile 

====================================================

$ sqlplus / as sysdba

SQL> SELECT name, value FROM v$parameter

2 WHERE name = 'spfile';

 

NAME                     VALUE

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

spfile                       /app/ora19c/19c/dbs/spfileDB19.ora

 

SQL> SHOW PARAMETER instance_name

NAME                    TYPE          VALUE

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

instance_name        string          DB19

 

SQL> !ls $ORACLE_HOME/dbs

hc_DB19.dat init.ora initdw.ora lkDB19 orapwDB19 spfileDB19.ora

====================================================

 

3-2 파라미터 값 수정 

SQL > ALTER SYSTEM SET <파라미터 명> = <값>;

- 지정한 파라미터의 값을 수정

- spfile 사용 환경에서 설정된 파라미터 값은 항구적으로 수정

- 동적인 파라미터만 수정 가능 

===================================================================================

$ sqlplus / as sysdba  

 

SQL> SELECT name, value FROM v$spparameter ▶ spfile에 설정된 값을 조회

2 WHERE name LIKE '%undo%';

 

NAME                           VALUE

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

temp_undo_enabled

undo_management

undo_tablespace          UNDOTBS1

undo_retention

 

SQL> SELECT name,value FROM v$parameter ▶ 현재 운영중인 parameter 값을 조회

2 WHERE name LIKE '%undo%';

 

NAME                           VALUE

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

temp_undo_enabled    FALSE

undo_management      AUTO

undo_tablespace         UNDOTBS1

undo_retention             900

 

SQL> SHOW PARAMETER undo; ▶ 파라미터 출력

 

NAME                         TYPE       VALUE

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

temp_undo_enabled  boolean  FALSE

undo_management    string      AUTO

undo_retention           integer    900

undo_tablespace       string       UNDOTBS1

 

 

▶ Undo Retention(보존기간) 파라미터 변경 및 적용 확인 실습 

SQL> ALTER SYSTEM SET undo_retention=300;

System altered.

 

SQL> SELECT name, value FROM v$spparameter

2 WHERE name = 'undo_retention';

 

NAME                     VALUE

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

undo_retention        300

 

SQL> SHOW PARAMETER undo_retention;

 

NAME                TYPE           VALUE

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

undo_retention   integer         300

 

SQL> SHUTDOWN IMMEDIATE

Database closed.

Database dismounted.

Oracle instance shutdown.

 

SQL> STARTUP

ORACLE instance started.

Total System Global Area 830472192 bytes

Fixed Size 8626144 bytes

Variable Size 629145632 bytes

Database Buffers 188743680 bytes

Redo Buffers 3956736 bytes

Database mounted.

Database opened.

 

SQL> SHOW PARAMETER undo_retention;

 

NAME                TYPE          VALUE

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

undo_retention    integer        300

===================================================================================

 

 

4. Spfile 운영 환경에서 scope 설정에 따른 파라미터 값의 변화 확인 

 

scope는 spfile 운영 환경에서만 사용하며, 파라미터를 변경할 때 사용한다. 변경이 적용될 범위를 지정할 수 있는 옵션을 말한다.

scope 옵션을 사용 시 즉시 적용될 위치와 영구 저장 위치를 결정할 수 있다. 

 

SQL> ALTER SYSTEM SET = <값> SCOPE = [SPFILE | MEMORY | BOTH];

 

- SPFILE : spfile만 수정한다.

- MEMORY : 현재 DB의 parameter 설정 값만 수정한다. spfile은 수정하지 않음으로 DB를 재시작하면 원래 설정 값으로 환원된다.

- BOTH : spfile과 instance의 설정된 parameter값을 모두 수정한다.(default값)

 

==========================================================================

SQL> SHOW PARAMETER undo_retention;  undo_retention 값이 300인걸 확인 

 

NAME                     TYPE        VALUE

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

undo_retention        integer         300

 

SQL> ALTER SYSTEM SET undo_retention = 600 SCOPE = memory; 값을 600으로 수정

System altered.

 

SQL> SHOW PARAMETER undo_retention; 변경된 값 확인 

 

NAME                    TYPE          VALUE

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

undo_retention       integer         600

 

SQL> SELECT name, value FROM v$parameter v$parameter으로 조회했을 때 600으로 수정된거 확인 

2 WHERE name = 'undo_retention';

 

NAME                   VALUE

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

undo_retention       600

 

SQL> SELECT name, value FROM v$spparameter ▶ spfile은 변경되지 않음

2 WHERE name = 'undo_retention';

 

NAME                    VALUE

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

undo_retention       300

 

SQL> SHUTDOWN IMMEDIATE

Database closed.

Database dismounted.

Oracle instance shutdown.

 

SQL> STARTUP

ORACLE instance started.

Total System Global Area 830472192 bytes

Fixed Size

Variable Size 8626144 bytes 629145632 bytes

Database Buffers

Redo Buffers

Database mounted.

Database opened. 188743680 bytes 3956736 bytes

 

SQL> SHOW PARAMETER undo

 

NAME                TYPE          VALUE

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

undo_retention     integer       300

 

SQL> ALTER SYSTEM SET undo_retention = 500 SCOPE = spfile;

System altered.

 

SQL> SHOW PARAMETER undo_retention; ▶spfile 설정만 변경했기 때문에 결과값이 변화가 없다

NAME                     TYPE         VALUE

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

undo_retention        integer        300

 

SQL> SELECT name,value FROM v$parameter

2 WHERE name = 'undo_retention';

 

NAME VALUE

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

undo_retention      300

 

SQL> SELECT name,value FROM v$spparameter ▶ $spparameter 로 조회해보면 변경된 거 확인 가능

2 WHERE name = 'undo_retention';

 

NAME                   VALUE

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

undo_retention      500

 

 

==========================================================================

▶ spfile 옵션은 spfile에만 저장해놓고 현재 메모리에 적용이 안된다. 변경 된 값을 적용하려면 재시작해야 메모리가 적용된다.