OS환경 : Oracle Linux 5.8 (64bit)
DB 환경 : Oracle Database 10.2.0.5
방법 : 오라클 파라미터 뷰, 파일 관련 정리 spfile, v$parameter, v$parameter2, v$spparameter 비교
scope 옵션 정리
scope=memory : 현재 Open된 db에서만 영향을 미치며 db가 재기동되면 변경 이전값으로 돌아감
scope=spfile : 변경 내용을 spfile에만 저장하고 현재 db에는 영향을 미치지 않게함
static parameter의 경우는 이 scope만이 지정가능함
즉, spfile을 사용하더라도 static parameter에 대해서는 db 운영중에 바로 값을 변경하여 재기동없이 반영하는 것은 불가능
scope=both : 변경 내용을 현재상태에도 바로 반영하고, spfile에도 반영시켜, 이후 재기동시에도 영향을 미치도록 함
v$parameter, v$parameter2, v$spparameter 뷰의 의미
v$parameter
v$parameter, v$parameter2 주요 컬럼 설명
alter system, alter session 의미
alter system
현재 사용하고 있는 데이터베이스 인스턴스를 동적으로 변경
mount 단계에서 부터 사용가능
alter session
현재 데이터베이스에 영향을 미치는 조건이나 parameter 설정
alter session으로 설정할수 있는 parameter는 v$parameter에서 isses_modifiable 컬럼을 보고 확인할수있음
현재 session이 종료 될때까지 유효함
파라미터 적용 테스트1
alter system set 명령으로 undo_retention 파라미터 변경 테스트를 해보겠음
파라미터 파일 확인
1 2 3 4 5 6 7 | SQL> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string /oracle/app/oracle/produ ct/10.2.0/db_1/dbs/spfileORCL1 0.ora |
현재 spfile 로 기동되어 있음
기존 v$spparameter, v$parameter, v$parameter2 확인
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 | SQL> col name for a20 col value for a20 select name, value from v$spparameter where name in ('undo_retention'); NAME VALUE -------------------- -------------------- undo_retention 900 SQL> select name, value from v$parameter where name in ('undo_retention'); NAME VALUE -------------------- -------------------- undo_retention 900 SQL> select name, value from v$parameter2 where name in ('undo_retention'); NAME VALUE -------------------- -------------------- undo_retention 900 |
파라미터를 scope=memory로 변경
1 2 3 | SQL> alter system set undo_retention=1000 scope=memory; System altered. |
v$spparameter, v$parameter, v$parameter2 확인
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 | SQL> col name for a20 col value for a20 select name, value from v$spparameter where name in ('undo_retention'); NAME VALUE -------------------- -------------------- undo_retention 900 SQL> select name, value from v$parameter where name in ('undo_retention'); NAME VALUE -------------------- -------------------- undo_retention 1000 SQL> select name, value from v$parameter2 where name in ('undo_retention'); NAME VALUE -------------------- -------------------- undo_retention 1000 |
v$spparameter는 변경되지 않고 v$parameter, v$parameter2 의 value 만 변경되었음
파라미터를 scope=both로 변경
1 2 3 | SQL> alter system set undo_retention=1100 scope=both; System altered. |
v$spparameter, v$parameter, v$parameter2 확인
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 | SQL> col name for a20 col value for a20 select name, value from v$spparameter where name in ('undo_retention'); NAME VALUE -------------------- -------------------- undo_retention 1100 SQL> select name, value, display_value from v$parameter where name in ('undo_retention'); NAME VALUE -------------------- -------------------- undo_retention 1100 SQL> select name, value, display_value from v$parameter2 where name in ('undo_retention'); NAME VALUE -------------------- -------------------- undo_retention 1100 |
v$spparameter, v$parameter, v$parameter2 의 value, display_value 모두 변경되었음
파라미터를 scope=spfile로 변경
1 2 3 | SQL> alter system set undo_retention=1200 scope=spfile; System altered. |
v$spparameter, v$parameter, v$parameter2 확인
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 | SQL> col name for a20 col value for a20 select name, value from v$spparameter where name in ('undo_retention'); NAME VALUE -------------------- -------------------- undo_retention 1200 SQL> select name, value from v$parameter where name in ('undo_retention'); NAME VALUE -------------------- -------------------- undo_retention 1100 SQL> select name, value from v$parameter2 where name in ('undo_retention'); NAME VALUE -------------------- -------------------- undo_retention 1100 |
v$spparameter만 변경되고 v$parameter, v$parameter2 의 value 는 변경되지 않았음
재기동 이후에 v$parameter, v$parameter2에 적용되어 보임
파라미터 적용 테스트2
alter session set 명령으로 db_file_multiblock_read_count 파라미터 변경 테스트를 해보겠음
파라미터 파일 확인
1 2 3 4 5 6 7 | SQL> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string /oracle/app/oracle/produ ct/10.2.0/db_1/dbs/spfileORCL1 0.ora |
현재 spfile 로 기동되어 있음
세션1에서 v$spparameter, v$parameter, v$parameter2 확인
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 | SQL> col name for a40 col value for a20 select name, value from v$spparameter where name in ('db_file_multiblock_read_count'); NAME VALUE ---------------------------------------- -------------------- db_file_multiblock_read_count 16 SQL> select name, value from v$parameter where name in ('db_file_multiblock_read_count'); NAME VALUE ---------------------------------------- -------------------- db_file_multiblock_read_count 16 SQL> select name, value from v$parameter2 where name in ('db_file_multiblock_read_count'); NAME VALUE ---------------------------------------- -------------------- db_file_multiblock_read_count 16 |
세션1에서 scope를 붙여서 변경
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | SQL> alter session set db_file_multiblock_read_count=32 scope=memory; alter session set db_file_multiblock_read_count=32 scope=memory * ERROR at line 1: ORA-02248: invalid option for ALTER SESSION SQL> alter session set db_file_multiblock_read_count=32 scope=both; alter session set db_file_multiblock_read_count=32 scope=both * ERROR at line 1: ORA-02248: invalid option for ALTER SESSION SQL> alter session set db_file_multiblock_read_count=32 scope=spfile; alter session set db_file_multiblock_read_count=32 scope=spfile * ERROR at line 1: ORA-02248: invalid option for ALTER SESSION |
alter session 에선 scope 명령이 불가능
세션1에서 scope를 붙이지 않고 변경
1 2 3 | SQL> alter session set db_file_multiblock_read_count=32; Session altered. |
세션1에서 v$spparameter, v$parameter, v$parameter2 확인
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 | SQL> col name for a40 col value for a20 select name, value from v$spparameter where name in ('db_file_multiblock_read_count'); NAME VALUE ---------------------------------------- -------------------- db_file_multiblock_read_count 16 SQL> select name, value from v$parameter where name in ('db_file_multiblock_read_count'); NAME VALUE ---------------------------------------- -------------------- db_file_multiblock_read_count 32 SQL> select name, value from v$parameter2 where name in ('db_file_multiblock_read_count'); NAME VALUE ---------------------------------------- -------------------- db_file_multiblock_read_count 32 SQL> select name, value from v$system_parameter2 where name in ('db_file_multiblock_read_count'); NAME VALUE ---------------------------------------- -------------------- db_file_multiblock_read_count 16 |
spfile에 적용되는 spparameter의 값은 변경되지 않고 v$parameter, v$parameter2의 값만 변경됨
또한 본문에 작성한 내용처럼 새로운 세션은 v$system_parameter2 뷰에서 파라미터 값을 상속받음(16)
세션2를 새로 접속해서 v$spparameter, v$parameter, v$parameter2 확인
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 | SQL> col name for a40 col value for a20 select name, value from v$spparameter where name in ('db_file_multiblock_read_count'); NAME VALUE ---------------------------------------- -------------------- db_file_multiblock_read_count 16 SQL> select name, value from v$parameter where name in ('db_file_multiblock_read_count'); NAME VALUE ---------------------------------------- -------------------- db_file_multiblock_read_count 16 SQL> select name, value from v$parameter2 where name in ('db_file_multiblock_read_count'); NAME VALUE ---------------------------------------- -------------------- db_file_multiblock_read_count 16 |
새로운 세션은 32가 아닌 16이 적용되어 있음
세션 1에서 v$parameter이나 v$parameter2에 있는 ismodified 컬럼을 이용해
변경이 일어난 파라미터 확인
1 2 3 4 5 | SQL> select name, value, ismodified from v$parameter2 where ismodified !='FALSE'; NAME VALUE ISMODIFIED ---------------------------------------- -------------------- ---------- db_file_multiblock_read_count 32 MODIFIED |
참조 :
http://database.sarang.net/?inc=read&aid=12528&criteria=oracle&subcrit=&id=&limit=&keyword=&page=
https://tawool.tistory.com/267
https://techgoeasy.com/difference-vsystem_parameter-vparameter/
https://docs.oracle.com/cd/B19306_01/server.102/b14237/dynviews_2012.htm#REFRN30176
https://docs.oracle.com/cd/B19306_01/server.102/b14237/dynviews_2014.htm#REFRN30177
https://docs.oracle.com/cd/B19306_01/server.102/b14237/dynviews_2112.htm
'ORACLE > Admin' 카테고리의 다른 글
오라클 유저에게 기본적으로 주는 롤 connect와 resource 에 포함된 권한 확인 (0) | 2020.02.28 |
---|---|
오라클 redo log switch 와 first_change#, resetlogs_change# (0) | 2020.02.28 |
오라클 control file 경로 변경 및 이중화 (0) | 2020.02.11 |
오라클 audit 정리 및 테스트 (3) | 2020.02.01 |
오라클 undo tablespace 재생성 (0) | 2020.02.01 |