starland

[ORACLE] 펌 spfile 과 pfile (startup pfile='/xxxx/xxxx/init<SID>.ora') 본문

Oracle관련

[ORACLE] 펌 spfile 과 pfile (startup pfile='/xxxx/xxxx/init<SID>.ora')

starland 2010. 3. 28. 04:26
반응형

출처 : http://blog.naver.com/khi830/20097894487

#############################

 파라미터 파일

#############################
1.pfile (text file) : $ORACLE_HOME/dbs/initsid.ora

 Dynamic parameter : java_pool_size, large_pool_size .... : 명령으로 수정 가능   -> 그러나 파라미터 파일에 내용은 변화되지 않는다.
 Static  parameter : log_buffer ...                       : 명령으로 수정 불가능 -> 수정이 필요하면 파라미터 파일을 수정한 뒤 restartup

2.spfile (binary file) : $ORACLE_HOME/dbs/spfilesid.ora  --> persistent(지속) 파라미터 파일

 Dynamic parameter : java_pool_size, large_pool_size .... : 명령으로 수정 가능 -> 파라미터 파일의 내용이 자동으로 수정된다.
 Static  parameter : log_buffer ...                       : 명령으로 수정 가능 -> scope=spfile 옵션을 붙여서 수정한 뒤 restartup

 cf.Startup 할 경우의 파라미터 파일 우선 순위

   SQL> startup         --> $ORACLE_HOME/dbs/spfilesid.ora
                        --> $ORACLE_HOME/dbs/spfile.ora
                        --> $ORACLE_HOME/dbs/initsid.ora
                        --> 에러

   SQL> startup pfile = '/home/oracle/myinit.ora'

##################################################################################################

=================================
 Pfile을 사용할 경우
=================================

SQL> !rm $ORACLE_HOME/dbs/spfiletestdb.ora

SQL> startup force

SQL> show parameter

SQL> show parameter db_cache_size

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
db_cache_size                        big integer            64M

SQL> show parameter pool_size

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
global_context_pool_size             string
java_pool_size                       big integer            24M
large_pool_size                      big integer            0
olap_page_pool_size                  big integer            0
shared_pool_size                     big integer            72M
streams_pool_size                    big integer            0

SQL> alter system set large_pool_size=4m;

alter system set large_pool_size=4m
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-04033: Insufficient memory to grow pool

SQL> alter system set java_pool_size=16m;
SQL> alter system set large_pool_size=4m;

SQL> show parameter pool_size

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
global_context_pool_size             string
java_pool_size                       big integer            16M
large_pool_size                      big integer            4M
olap_page_pool_size                  big integer            0
shared_pool_size                     big integer            72M
streams_pool_size                    big integer            0

SQL> show parameter log_buffer

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- -------------------
log_buffer                           integer                29276

SQL> alter system set log_buffer=4m;

alter system set log_buffer=4m
                 *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified         

SQL> !vi $ORACLE_HOME/dbs/inittestdb.ora

# 다음 파라미터를 가장 마지막 라인에 추가하세요.

log_buffer = 4194304

SQL> startup force

=================================
 spfile을 사용할 경우
=================================

(1) spfile 생성 : 반드시 pfile이 있어야 가능

SQL> !ls -l $ORACLE_HOME/dbs

-rw-r-----  1 oracle oinstall      3584  1월 14 09:56 spfileorcl.ora
-rw-r--r--  1 oracle oinstall       399  1월 14 11:54 inittestdb.ora

SQL> select instance_name from v$instance;

INSTANCE_NAME
--------------------------------
testdb

SQL> create spfile from pfile;   --> 기본위치의 기본 pfile로 기본위치에 기본 spfile을 생성

SQL> !ls -l $ORACLE_HOME/dbs

-rw-r-----  1 oracle oinstall      3584  1월 14 09:56 spfileorcl.ora
-rw-r--r--  1 oracle oinstall       399  1월 14 11:54 inittestdb.ora
-rw-r-----  1 oracle oinstall      1536  1월 14 12:09 spfiletestdb.ora

SQL> show parameter spfile

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
spfile                               string

SQL> startup force               --> pfile과 spfile이 모두 있으므로, spfile을 이용해서 startup 된다.

SQL> show parameter spfile

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
spfile                               string                 /u01/app/oracle/product/10.2.0
                                                            /db_1/dbs/spfiletestdb.ora

SQL> show parameter pool_size

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
global_context_pool_size             string
java_pool_size                       big integer            24M
large_pool_size                      big integer            0
olap_page_pool_size                  big integer            0
shared_pool_size                     big integer            72M
streams_pool_size                    big integer            0

SQL> alter system set java_pool_size=16m;      --> spfile을 이용할 경우 이 명령은 파라미터 파일도 수정한다.
SQL> alter system set large_pool_size=4m;

SQL> startup force              

SQL> show parameter pool_size

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
global_context_pool_size             string
java_pool_size                       big integer            16M
large_pool_size                      big integer            4M
olap_page_pool_size                  big integer            0
shared_pool_size                     big integer            72M
streams_pool_size                    big integer            0

(2) spfile을 사용하면서 dynamic 파라미터 변경

SQL> alter system set large_pool_size=4m scope=both;        --> both가 디폴트이며 memory와 spfile이 모두 변경된다.
SQL> alter system set large_pool_size=4m scope=memory;      --> memory만 변경된다. 효과는 즉시 발휘된다. 하지만 restartup하면 이 변경은 사라진다.
SQL> alter system set large_pool_size=4m scope=spfile;      --> spfile만 변경된다. 효과는 restarup을 해야 발휘된다.

(3) spfile을 사용하면서 static 파라미터 변경

SQL> alter system set log_buffer = 4194304 scope=both;      --> 에러
SQL> alter system set log_buffer = 4194304 scope=memory;    --> 에러
SQL> alter system set log_buffer = 4194304 scope=spfile;    --> restartup을 해야 한다.

    cf.pfile을 재료로 spfile 생성

      SQL> create spfile='/home/oracle/my.ora' from pfile;               
      SQL> create spfile='/home/oracle/my.ora' from pfile='/etc/day.txt';

    cf.spfile을 재료로 pfile 생성

      SQL> create pfile from spfile;               


===============================================
 원하는 파라미터 파일을 이용해서 starup 하기
===============================================

(1) 원하는 pfile로 시작

SQL> !cp $ORACLE_HOME/dbs/inittestdb.ora /home/oracle/myday.ora

SQL> !vi /home/oracle/myday.ora

  # 다음 파라미터의 값을 100에서 20으로 수정

  processes     = 20

SQL> shutdown abort

SQL> startup pfile='/home/oracle/myday.ora'

SQL> show parameter processes

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------

processes                            integer                20


(2) 원하는 spfile로 시작

SQL> create spfile='/home/oracle/myspday.ora' from pfile='/home/oracle/myday.ora';

SQL> shutdown abort

SQL> startup pfile='/home/oracle/myspday.ora'       -- 에러 : ORA-01078: failure in processing system parameters
SQL> startup spfile='/home/oracle/myspday.ora'      -- 에러 : SP2-0714: invalid combination of STARTUP options

SQL> !vi /home/oracle/a.txt
 
  spfile=/home/oracle/myspday.ora

SQL> startup pfile='/home/oracle/a.txt' 

SQL> show parameter spfile

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
spfile                               string                 /home/oracle/myspday.ora

== 파라미터 파일 ==


1.pfile (text file) : $ORACLE_HOME/dbs/initsid.ora

 Dynamic parameter : java_pool_size, large_pool_size .... : 명령으로 수정 가능   -> 그러나 파라미터 파일에 내용은 변화되지 않는다.
 Static  parameter : log_buffer ...                       : 명령으로 수정 불가능 -> 수정이 필요하면 파라미터 파일을 수정한 뒤 restartup

2.spfile (binary file) : $ORACLE_HOME/dbs/spfilesid.ora  --> persistent(지속) 파라미터 파일

 Dynamic parameter : java_pool_size, large_pool_size .... : 명령으로 수정 가능 -> 파라미터 파일의 내용이 자동으로 수정된다.
 Static  parameter : log_buffer ...                       : 명령으로 수정 가능 -> scope=spfile 옵션을 붙여서 수정한 뒤 restartup

 cf.Startup 할 경우의 파라미터 파일 우선 순위

   SQL> startup         --> $ORACLE_HOME/dbs/spfilesid.ora
                        --> $ORACLE_HOME/dbs/spfile.ora
                        --> $ORACLE_HOME/dbs/initsid.ora
                        --> 에러

   SQL> startup pfile = '/home/oracle/myinit.ora'

##################################################################################################

=================================
 Pfile을 사용할 경우
=================================

SQL> !rm $ORACLE_HOME/dbs/spfiletestdb.ora

SQL> startup force

SQL> show parameter

SQL> show parameter db_cache_size

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
db_cache_size                        big integer            64M

SQL> show parameter pool_size

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
global_context_pool_size             string
java_pool_size                       big integer            24M
large_pool_size                      big integer            0
olap_page_pool_size                  big integer            0
shared_pool_size                     big integer            72M
streams_pool_size                    big integer            0

SQL> alter system set large_pool_size=4m;

alter system set large_pool_size=4m
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-04033: Insufficient memory to grow pool

SQL> alter system set java_pool_size=16m;
SQL> alter system set large_pool_size=4m;

SQL> show parameter pool_size

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
global_context_pool_size             string
java_pool_size                       big integer            16M
large_pool_size                      big integer            4M
olap_page_pool_size                  big integer            0
shared_pool_size                     big integer            72M
streams_pool_size                    big integer            0

SQL> show parameter log_buffer

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- -------------------
log_buffer                           integer                29276

SQL> alter system set log_buffer=4m;

alter system set log_buffer=4m
                 *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified         

SQL> !vi $ORACLE_HOME/dbs/inittestdb.ora

# 다음 파라미터를 가장 마지막 라인에 추가하세요.

log_buffer = 4194304

SQL> startup force

=================================
 spfile을 사용할 경우
=================================

(1) spfile 생성 : 반드시 pfile이 있어야 가능

SQL> !ls -l $ORACLE_HOME/dbs

-rw-r-----  1 oracle oinstall      3584  1월 14 09:56 spfileorcl.ora
-rw-r--r--  1 oracle oinstall       399  1월 14 11:54 inittestdb.ora

SQL> select instance_name from v$instance;

INSTANCE_NAME
--------------------------------
testdb

SQL> create spfile from pfile;   --> 기본위치의 기본 pfile로 기본위치에 기본 spfile을 생성

SQL> !ls -l $ORACLE_HOME/dbs

-rw-r-----  1 oracle oinstall      3584  1월 14 09:56 spfileorcl.ora
-rw-r--r--  1 oracle oinstall       399  1월 14 11:54 inittestdb.ora
-rw-r-----  1 oracle oinstall      1536  1월 14 12:09 spfiletestdb.ora

SQL> show parameter spfile

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
spfile                               string

SQL> startup force               --> pfile과 spfile이 모두 있으므로, spfile을 이용해서 startup 된다.

SQL> show parameter spfile

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
spfile                               string                 /u01/app/oracle/product/10.2.0
                                                            /db_1/dbs/spfiletestdb.ora

SQL> show parameter pool_size

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
global_context_pool_size             string
java_pool_size                       big integer            24M
large_pool_size                      big integer            0
olap_page_pool_size                  big integer            0
shared_pool_size                     big integer            72M
streams_pool_size                    big integer            0

SQL> alter system set java_pool_size=16m;      --> spfile을 이용할 경우 이 명령은 파라미터 파일도 수정한다.
SQL> alter system set large_pool_size=4m;

SQL> startup force              

SQL> show parameter pool_size

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
global_context_pool_size             string
java_pool_size                       big integer            16M
large_pool_size                      big integer            4M
olap_page_pool_size                  big integer            0
shared_pool_size                     big integer            72M
streams_pool_size                    big integer            0

(2) spfile을 사용하면서 dynamic 파라미터 변경

SQL> alter system set large_pool_size=4m scope=both;        --> both가 디폴트이며 memory와 spfile이 모두 변경된다.
SQL> alter system set large_pool_size=4m scope=memory;      --> memory만 변경된다. 효과는 즉시 발휘된다. 하지만 restartup하면 이 변경은 사라진다.
SQL> alter system set large_pool_size=4m scope=spfile;      --> spfile만 변경된다. 효과는 restarup을 해야 발휘된다.

(3) spfile을 사용하면서 static 파라미터 변경

SQL> alter system set log_buffer = 4194304 scope=both;      --> 에러
SQL> alter system set log_buffer = 4194304 scope=memory;    --> 에러
SQL> alter system set log_buffer = 4194304 scope=spfile;    --> restartup을 해야 한다.

    cf.pfile을 재료로 spfile 생성

      SQL> create spfile='/home/oracle/my.ora' from pfile;               
      SQL> create spfile='/home/oracle/my.ora' from pfile='/etc/day.txt';

    cf.spfile을 재료로 pfile 생성

      SQL> create pfile from spfile;               


===============================================
 원하는 파라미터 파일을 이용해서 starup 하기
===============================================

(1) 원하는 pfile로 시작

SQL> !cp $ORACLE_HOME/dbs/inittestdb.ora /home/oracle/myday.ora

SQL> !vi /home/oracle/myday.ora

  # 다음 파라미터의 값을 100에서 20으로 수정

  processes     = 20

SQL> shutdown abort

SQL> startup pfile='/home/oracle/myday.ora'

SQL> show parameter processes

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------

processes                            integer                20


(2) 원하는 spfile로 시작

SQL> create spfile='/home/oracle/myspday.ora' from pfile='/home/oracle/myday.ora';

SQL> shutdown abort

SQL> startup pfile='/home/oracle/myspday.ora'       -- 에러 : ORA-01078: failure in processing system parameters
SQL> startup spfile='/home/oracle/myspday.ora'      -- 에러 : SP2-0714: invalid combination of STARTUP options

SQL> !vi /home/oracle/a.txt
 
  spfile=/home/oracle/myspday.ora

SQL> startup pfile='/home/oracle/a.txt' 

SQL> show parameter spfile

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
spfile                               string                 /home/oracle/myspday.ora

 

반응형