프린트 하기

OS 환경 : Oracle Linux 8.7 (64bit)

 

DB 환경 : Oracle Database 19.27.0.0

 

방법 : 오라클 19c spfile 파라미터 파일 주석 기능

일반적으로 파라미터 파일은 바이너리 형식인 spfile을 많이들 사용함
하지만 일부 고객사에서 텍스트 형식인 pfile을 사용하는 경우가 있는데
이유를 확인해보면 오래전부터 그렇게 사용해와서 불편함을 못느꼈거나, 주석(comment)를 남길수 있어서 pfile을 사용하고 있었음
spfile도 comment를 남길수 있는데 본문에서는 spfile에 comment를 남기는 방법을 설명함

 

 

pfile 생성

1
2
3
SQL> create pfile from spfile;
 
File created.

 

 

pfile 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ cd $ORACLE_HOME/dbs
$ ls -al init*.ora
-rw-r--r-- 1 oracle oinstall 1355 Mar  1 17:32 initORA19DBFS.ora
$ cat initORA19DBFS.ora
*._b_tree_bitmap_plans=TRUE
*.audit_file_dest='/app/oracle/admin/ORA19DBFS/adump'
*.audit_trail='none'
*.compatible='19.0.0'
*.control_files='/app/oracle/oradata/ORA19DBFS/control01.ctl','/app/oracle/oradata/ORA19DBFS/control02.ctl'#Restore Controlfile
*.db_block_size=8192
*.db_name='ORA19DBF'
*.db_unique_name='ORA19DBFS'
*.diagnostic_dest='/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ORA19DBFSXDB)'
*.local_listener='LISTENER_ORA19DBFS'
*.log_archive_dest_1='location=/app/oracle/arch'
*.log_archive_format='ORA19DBFS_%t_%s_%r.arc'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=104857600
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=1572864000
*.sga_target=1572864000
*.statistics_level='TYPICAL'
*.undo_tablespace='UNDOTBS1'

 

 

pfile 수정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$ vi initORA19DBFS.ora
#########audit parameter#########
*.audit_file_dest='/app/oracle/admin/ORA19DBFS/adump'
*.audit_trail='none'
#########audit parameter#########
 
#########memory parameter#########
*.pga_aggregate_target=104857600
*.sga_max_size=1572864000
*.sga_target=1572864000
#########memory parameter#########
 
#########archive parameter#########
*.log_archive_dest_1='location=/app/oracle/arch'
*.log_archive_format='ORA19DBFS_%t_%s_%r.arc'
#########archive parameter#########
 
#########system parameter#########
*.compatible='19.0.0'
*.control_files='/app/oracle/oradata/ORA19DBFS/control01.ctl','/app/oracle/oradata/ORA19DBFS/control02.ctl'#Restore Controlfile
*.db_block_size=8192
*.db_name='ORA19DBF'
*.db_unique_name='ORA19DBFS'
*.diagnostic_dest='/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ORA19DBFSXDB)'
*.local_listener='LISTENER_ORA19DBFS'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.statistics_level='TYPICAL'
*.undo_tablespace='UNDOTBS1'
#########system parameter#########
 
#########hidden parameter######### 20260228 added by Park
*._b_tree_bitmap_plans=TRUE
#########hidden parameter######### 20260228 added by Park

pfile은 이렇게 주석을 남길수 있음

 

 

하지만 spfile은 주석을 이런식으로는 남길수 없고 파라미터 변경시 comment 라는 옵션을 사용해 주석을 남길수 있음
db 종료

1
SQL> shutdown immediate

 

 

pfile을 이용해 spfile 생성

1
2
3
SQL> create spfile from pfile;
 
File created.

 

 

spfile은 내용을 일부 볼수는 있지만 수정할수는 없음(수정시 파일이 깨짐)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$ vi spfileORA19DBFS.ora
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^...
*._b_tree_bitmap_plans=TRUE
*.audit_file_dest='/app/oracle/admin/ORA19DBFS/adump'
*.audit_trail='none'
*.compatible='19.0.0'
*.control_files='/app/oracle/oradata/ORA19DBFS/control01.ctl','/app/oracle/oradata/ORA19DBFS/control02.ctl'#Restore Controlfile
*.db_block_size=8192
*.db_name='ORA19DBF'
*.db_unique_name='ORA19DBFS'
*.diagnostic_dest='/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ORA19DBFSXDB)'
*.local_listener='LISTENER_ORA19DBFS'
*.log_archive_dest_1='location=/app/oracle/arch'
*.log_archive_format='ORA19DBFS_%t_%s_%r.arc'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=104857600
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=1572864000
*.sga_target=1572864000
*.statistics_level='TYPICAL'
*.undo_tablespace='UNDOTBS1'
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^...

 

 

db 기동(db 기동시 spfile이 우선적으로 읽혀짐)

1
SQL> startup

 

 

spfile로 기동됨

1
2
3
4
SQL> show parameter spfile
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /app/oracle/product/19c/dbs/spfileORA19DBFS.ora

 

 

일부 파라미터 변경하면서 comment 삽입

1
2
3
SQL> alter system set pga_aggregate_target = 50m comment='modified at 20260228 by Park';
 
System altered.

변경됨

 

 

파라미터 확인

1
2
3
4
5
6
7
8
9
10
11
SQL> show parameter pga_aggregate_target
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target                 big integer 50M
 
SQL> show spparameter pga_aggregate_target
 
SID      NAME                          TYPE        VALUE
-------- ----------------------------- ----------- ----------------------------
*        pga_aggregate_target          big integer 50M

show parameter 명령으로 파라미터 값은 변경되었지만 주석은 확인할수 없음

 

 

주석을 확인하려면 v$spparameter를 확인해야함
주석 확인

1
2
3
4
5
6
7
8
9
10
11
12
SQL> 
set lines 200 pages 1000
col name for a30
col value for a10
col update_comment for a50
SELECT name, value, update_comment 
FROM v$spparameter 
WHERE name = 'pga_aggregate_target';
 
NAME                           VALUE      UPDATE_COMMENT
------------------------------ ---------- --------------------------------------------------
pga_aggregate_target           52428800   modified at 20260228 by Park

정상적으로 주석(comment)를 확인할 수 있음

 

 

주석이 존재하는 파라미터만 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
SQL> 
set lines 200 pages 1000
col name for a30
col value for a60
col update_comment for a50
SELECT name, value, update_comment 
FROM v$spparameter 
WHERE update_comment is not null;
 
NAME                           VALUE                                                        UPDATE_COMMENT
------------------------------ ------------------------------------------------------------ --------------------------------------------------
control_files                  /app/oracle/oradata/ORA19DBFS/control02.ctl                  Restore Controlfile
pga_aggregate_target           52428800                                                     modified at 20260228 by Park

 

 

참고로 이렇게 주석을 만들고 pfile을 생성하게 되면 pfile에도 파라미터 뒤에 #로 주석이 표시됨

1
2
3
4
5
6
SQL> create pfile from spfile;
 
File created.
 
$ cat initORA19DBFS.ora | grep pga_aggregate_target
*.pga_aggregate_target=52428800#modified at 20260228 by Park

이 상태에서 다시 db 종료 후 pfile을 이용해 spfile 생성한 뒤 다시 v$spparameter를 확인해보면 정상적으로 주석이 보이는것을 확인할수도 있음

 

 

결론 :
spfile 파라미터 수정 시 comment를 사용해서 편리하게 주석을 남길 수 있음
언제 왜 누가 변경했는지를 간단하게라도 남겨두면 추후에 파라미터 관리가 더 용이해짐

 

 

참조 : 

https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/ALTER-SYSTEM.html