일반 DB인 경우
AWS Oracle RDS 에서는 X$ 테이블에 접근할 수 있는 권한이 없어, 기존에 hidden parameter 를 조회했던 아래 SQL 이 수행되지 않습니다. sys 계정으로 조회해야 하나, AWS Oracle RDS DB로 sys 계정 접근이 불가합니다.
AWS RDS가 아닌 일반 DB인 경우 아래 query를 수행하여 hidden parameter 를 조회합니다. hidden_parameter_name 부분에 조회를 원하는 파라미터명을 입력하면 됩니다.
SELECT KSPPINM
, KSPPSTVL
FROM X$KSPPI X, X$KSPPCV Y
WHERE X.INDX = Y.INDX
AND X.KSPPINM LIKE '%hidden_parameter_name%'
AND SUBSTR(X.KSPPINM, 1, 1) = '_'
AWS Oracle RDS hidden parameter 조회
dbms_utility.get_parameter_value function을 이용해서 AWS Oracle RDS hidden parameter를 조회하는 프로시저입니다. 프로시저를 실행하면 hidden 파라미터 입력 프롬프트가 나타나고 원하는 hidden 파라미터명을 입력하면 hidden 파라미터값(value)이 출력됩니다.
set serveroutput on
set lines 200
prompt Enter a value for parameter
DECLARE
intval BINARY_INTEGER;
strval VARCHAR2(256);
partyp BINARY_INTEGER;
intval2 VARCHAR2(12);
BEGIN
dbms_output.put_line(chr(13));
dbms_output.put_line('+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-');
partyp := dbms_utility.get_parameter_value('&1',intval, strval);
IF partyp = 1 THEN
dbms_output.put('parameter value is: ');
dbms_output.put_line(strval);
dbms_output.put_line('parameter type is: STRING/FILE parameter');
dbms_output.put('parameter value length is: ');
dbms_output.put_line(intval);
ELSE
dbms_output.put('parameter value is: ');
IF intval=0 THEN intval2:='FALSE';
dbms_output.put_line(intval||'/'||intval2);
dbms_output.put_line('parameter type is: INTEGER/BOOLEAN parameter');
ELSIF intval=1 THEN intval2:='TRUE';
dbms_output.put_line(intval||'/'||intval2);
dbms_output.put_line('parameter type is: INTEGER/BOOLEAN parameter');
ELSE
dbms_output.put_line(intval);
dbms_output.put_line('parameter type is: INTEGER/BOOLEAN parameter');
END IF;
END IF;
dbms_output.put_line('+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-');
END;
/
간단한 프로시져로 v_parnam 에 조회하고자 하는 파라미터명을 입력한다.
아래 프로시저는 hidden 파라미터인 _cursor_obsolete_threshold 를 조회하는 예제이다.
declare
v_parnam varchar2(100) := '_cursor_obsolete_threshold' ;
v_intval binary_integer ;
v_strval varchar2(100) ;
v_ret varchar2(1000);
begin
v_ret := dbms_utility.get_parameter_value (
parnam => v_parnam,
intval => v_intval,
strval => v_strval
);
dbms_output.put_line(v_parnam||' : ');
dbms_output.put_line(' Type : '||v_ret);
dbms_output.put_line(' INT Val : '||v_intval);
dbms_output.put_line(' STR Val : '||v_strval);
end;
/