Oracle 파라미터 파일 변경사항 체크

 

파라미터 파일 변경사항 체크

PM을 해서 DB를 재구동해야 할때, 우선 체크해야 할 사항중에 하나인데, 인수인계 받은 DB인 경우 DB에 어떤 값이 설정되어 있는지 모를때나, 누군가 scope=memory를 이용해 임시로 조치를 해둔 것이 있는지 조회하는 방법입니다.

spfile을 사용할 때 사용하는 쿼리들입니다.

 

재구동 시 적용되는 파라미터

col name for a30
col "Current Value" for a30
col "Spfile Value" for a30
col "Online Modify" for a14

select p.NAME, p.display_value "Current Value", sp.display_value "Spfile Value"
from v$parameter p, v$spparameter sp
where p.name = sp.name
and p.display_value != sp.display_value
and p.name not in ('control_files','audit_trail')
/
  • current value는 현재 DB에서 보여지는 적용되어 있는 값.
  • spfile value는 spfile에 값이 들어가 있어 재구동후에 올라오는 값.

control_files를 제외한 이유는 바꾸지 않아도 서로의 경로가 다르게 나오기 때문입니다. 컨트롤 파일만 v$parameter와 v$spparameter의 값이 조금 다르게 나온는데 그 이유는 찾아보는중입니다.

audit_trail의 경우는 db, DB 대소문자 차이로 항상 나오다 보니 제외 했습니다.

해당 부분의 조회가 필요하다면 조건절을 주석 처리하면 됩니다.

 

Scope=memory 로 임시적용된 파라미터 찾기

col display_value for a30

select name, display_value, isdefault, ISSYS_MODIFIABLE, ISMODIFIED, ISBASIC, ISDEPRECATED
from v$parameter
where ISDEPRECATED='TRUE'
and ISMODIFIED='SYSTEM_MOD'
/

온라인중에 변경 가능한 파라미터중에 alter system set  scope=memory 옵션으로 임시조치 해둔 파라미터의 경우 memory 값으로 올려야 하는 경우도 있고, 재구동시 원복시켜야 하는 값이 있을수도 있습니다.

잘 찾아서 왜 적용해 놓았는지 확인 후에 변경하시면 됩니다.

 

변경된 파라미터 조회

col name for a20
col value for a70
select name, value from v$parameter
where name = 'spfile';

col time for a15
col parameter_name format a50
col old_value format a30
col new_value format a30
break on instance skip 3
select instance_number instance, snap_id, time, parameter_name, old_value, new_value from (
select a.snap_id,to_char(end_interval_time,'DD-MON-YY HH24:MI') TIME, a.instance_number, parameter_name, value new_value,
lag(parameter_name,1) over (partition by parameter_name, a.instance_number order by a.snap_id) old_pname,
lag(value,1) over (partition by parameter_name, a.instance_number order by a.snap_id) old_value ,
decode(substr(parameter_name,1,2),'__',2,1) calc_flag
from dba_hist_parameter a, dba_Hist_snapshot b , v$instance v
where a.snap_id=b.snap_id
and a.instance_number=b.instance_number
and parameter_name like nvl('&parameter_name',parameter_name)
and a.instance_number like nvl('&instance_number',v.instance_number)
)
where
new_value != old_value
order by 1,2;

변경전 값을 알고 싶을때 snap_id에서 조회하는 방법입니다.

파라미터 값을 변수로 선택하는데, 그냥 엔터로 넘어가면 변경된 모든 파라미터에 대해 조회 됩니다.

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다