의문 1:
ASM도 기존 DB와 같은 형식으로 pfile과 spfile파일이 사용될까?




과정 :

1. 현재 ASM은 spfile로 OPEN된 상태이다.

+ASM> show parameter spfile

NAME        TYPE     VALUE
--------- ------   -------------------------------------------
spfile         string    /home/oracle/product/10g/dbs/spfile+ASM.ora



2. OS에서 검사를 해봐도,

$ ls -l
-rw-r-----  1 oracle dba    1536 Feb 28 17:03 spfile+ASM.ora

spfile만 있는 상태 (SID이름이 +ASM이다.) 


3. pfile을 만들어 보았다.

+ASM> create pfile from spfile;
File created.


$ ls -l

-rw-r-----  1 oracle dba    1536 Feb 28 17:03 spfile+ASM.ora
-rw-r--r--  1 oracle dba     320 Feb 29 02:49 init+ASM.ora
▶ 이상없이 만들어짐.



4.  pfile 적용시키기위해 DB내리고 spfile 삭제후 OPEN

+ASM> shutdown immediate;
ASM diskgroups dismounted
ASM instance shutdown


$ rm spfile+ASM.ora


+ASM> startup
ASM instance started

Total System Global Area   83886080 bytes
Fixed Size                  1272120 bytes
Variable Size              57448136 bytes
ASM Cache                  25165824 bytes
ASM diskgroups mounted

+ASM> show parameter spfile

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

예상대로 ASM이 pfile로 open 되었다.



결론 :
ASM instance도 ORACLE DB와 마찬가지로 pfile 과 spfile 모두 사용 가능하다.


※ 참고
ASM의 spfile : binary 파일. @@@@많음

ASM의 pfile 내용

$ vi init+ASM.ora
*.asm_diskgroups='DATA','FRA'
+ASM.asm_diskgroups='DATA','FRA','NEW_ASM'#Manual Mount
*.background_dump_dest='/home/oracle/admin/+ASM/bdump'
*.core_dump_dest='/home/oracle/admin/+ASM/cdump'
*.instance_type='asm'
*.large_pool_size=12M
*.remote_login_passwordfile='SHARED'
*.user_dump_dest='/home/oracle/admin/+ASM/udump'

앞에서 보았던  파라미터 들이 들어있다. 
2012/02/28 - [Study/Oracle - 백업&복구] - 백업 & 복구 37 - ASM : 개념 : 마지막 ※ 참고 부분 참조







 

의문 2:
ASM 기반에서 pfile과 spfile은 어떻게 사용 되는가?




과정 :


1. 현재 testdb는 spfile로 open된 상태이다.

SQL> show parameter spfile;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      +DATA/testdb/spfiletestdb.ora




2. OS상에서 확인해보니 pfile밖에 존재하지 않는다. 

$ ls -l

-rw-r-----  1 oracle dba    39 Feb 27 17:37 inittestdb.ora




3. 내용을 보면..

$ vi inittestdb.ora
SPFILE='+DATA/testdb/spfiletestdb.ora'

사실 ASM이 관리하는 파일의 spfile을 참조해 오는 것을 알 수 있다.



4. spfile에서 pfile 생성

SQL> create pfile from spfile;

File created.

 

5. OS 상에는 pfile 새로 생성 되었다. (시간으로 확인가능)

$ ls -l

-rw-r-----  1 oracle dba   960 Feb 29 03:19 inittestdb.ora



$ vi inittestdb.ora
testdb.__db_cache_size=184549376
testdb.__java_pool_size=4194304
testdb.__large_pool_size=4194304
testdb.__shared_pool_size=88080384
testdb.__streams_pool_size=0
*.audit_file_dest='/home/oracle/admin/testdb/adump'
*.background_dump_dest='/home/oracle/admin/testdb/bdump'
*.compatible='10.2.0.5.0'
*.control_files='+DATA/testdb/controlfile/current.256.776365293','+FRA/testdb/controlfile/current.256.776365293'
*.core_dump_dest='/home/oracle/admin/testdb/cdump'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='testdb'
*.db_recovery_file_dest='+FRA'
*.db_recovery_file_dest_size=2147483648
*.job_queue_processes=10
*.nls_language='KOREAN'
*.nls_territory='KOREA'
*.open_cursors=300
*.pga_aggregate_target=94371840
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=285212672
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/home/oracle/admin/testdb/udump'

▶ pfile 의 내용이 바뀌어 있다. 




6. . DB를 shutdown 시키고  다시 OPEN후 확인하기

SQL> shutdown immediate;

SQL> startup

SQL> show parameter spfile;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string
▶ pfile로 open 되었다.




7. 이상태에서 spfile 생성후 OS에서 파일 확인

SQL> create spfile from pfile;

File created.


$ ls -l

-rw-r-----  1 oracle dba   960 Feb 29 03:19 inittestdb.ora
-rw-r-----  1 oracle dba  2560 Feb 29 03:25 spfiletestdb.ora
▶ ASM 내부에 spfile이 생성되지 않고,
    기존 pfile이 있던 $ORACLE_HOME/dbs 경로에 spfile이 생성된다.




8. shutdown 후 open하면 이상없이 spfile로 open된다.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup
ORACLE instance started.
Database mounted.
Database opened.
 
SQL> show parameter spfile;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /home/oracle/product/10g/dbs/spfiletestdb.ora





결론 : 
ASM기반에서 기본적으로 spfile이 사용된다.
하지만 특이한 점이 있는데, 실제 $ORACLE_HOME/dbs에는 pfile밖에 없다는 점이다.
 

DB를 올리는 과정에서 이 pfile을 읽어오게 되는데,  pfile은 기존 file system 기반의 기본 pfile의 내용과 조금 다르다.
SPFILE='+DATA/testdb/spfiletestdb.ora'  이러한 내용으로 인해 ASM 기반에서 관리하는 spfile파일을 읽어 오는 것이다.

create pfile from spfile 명령으로 pfile을 생성하면, 기존 pfile을 덮어 써 버리고 우리가 아는 pfile이 생성된다.
이상태에서 다시 create spfile from pfile을 하면, ASM과는 상관없이 기존 방식대로 pfile ↔ spfile 상호간에 교환이 일어난다.

이후 기존과 같은 방법으로 파라미터 파일을 관리하면 된다.
ASM상의 spfile은 무시해도 되는 상황이 된 것이다. 
Posted by 딩구르
,