本文的運行環境
SQL> select BANNER_FULL from v$version; BANNER_FULL ---------------------------------------------------------------------------------------------------------------------------------------------------------------- Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0
1.參數的分類
1.1 推導參數Derived Parameters
例子: SESSIONS = (1.5 * PROCESSES) + 22
缺省的每個PROCESSes 在共享池中分配8 Bytes 注冊空間
驗證:
SQL> select name,value from v$parameter where name in ('processes','sessions'); NAME VALUE ------------- ---------------------------------------------------------- processes 800 sessions 1224 SQL> select * from v$sgastat where name='processes'; POOL NAME BYTES CON_ID -------------- -------------------- ---------- ---------- shared pool processes 6400 1
alter system set processes=500 scope=spfile; SQL> select name,value from v$parameter where name in ('processes','sessions'); NAME VALUE ------------- -------- processes 500 sessions 772 SQL> select * from v$sgastat where name='processes'; POOL NAME BYTES CON_ID -------------- -------------------- ---------- ---------- shared pool processes 4000 1
1.2 操作系統依賴參數
1.3 可變參數
1.4 動態參數和靜態參數
1.5 顯示參數和隱含參數
1.6 廢棄參數
SQL> select count(*) from V$OBSOLETE_PARAMETER; COUNT(*) ---------- 172
廢棄參數的來源x$ksppo
SQL> select view_definition from v$fixed_view_definition where view_name='GV$OBSOLETE_PARAMETER'; VIEW_DEFINITION ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- select inst_id,kspponm,decode(ksppoval,0,'FALSE','TRUE'), con_id from x$ksppo
1.7 初始化參數
1.7.1 Oracle 初始化參數可以查詢 V$PARAMETER
show parameter 如何實現的
SQL> select tracefile from v$process where addr in (select paddr from v$session where sid in (select sid from v$mystat));TRACEFILE ----------------------------------------------------------------------------------------------------------------------------------------- /oracle/D4C/diag/rdbms/d4cdb/D4C/trace/D4C_ora_9707.trc SQL> alter session set sql_trace=true; Session altered. SQL> show parameter sga NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ allow_group_access_to_sga boolean FALSE lock_sga boolean FALSE pre_page_sga boolean TRUE sga_max_size big integer 8G sga_min_size big integer 0 sga_target big integer 0 unified_audit_sga_queue_size integer 1048576 SQL> alter session set sql_trace=false; Session altered.
trace 的內容
====================================================================================================================== SELECT NAME NAME_COL_PLUS_SHOW_PARAM,DECODE(TYPE,1,'boolean',2,'string',3,'integer',4,'file',5,'number',6,'big integer', 'unknown') TYPE, DISPLAY_VALUE VALUE_COL_PLUS_SHOW_PARAM FROM V$PARAMETER WHERE UPPER(NAME) LIKE UPPER(:NMBIND_SHOW_OBJ) ORDER BY NAME_COL_PLUS_SHOW_PARAM,ROWNUM ======================================================================================================================
1.7.2 SQL*Plus個性化設定
啟動SQL*Plus工具時,會自動調用$ORACLE_HOME/sqlplus/admin/glogin.sql 文件執行一系列的參數設置
set sqlprompt "_user @ _connect_identifier>" --登陸 SQL*Plus 就會自動在ᨀ示符前顯示用戶名和實例信息 set sqlprompt "&_user> " set sqlprompt "_user _privilege> "
1.7.3 V$PARAMETER的定義
SQL> select VIEW_DEFINITION from V$FIXED_VIEW_DEFINITION where view_name like 'GV$PARAMETER'; VIEW_DEFINITION --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- select /*+ use_hash(x y) */ x.inst_id, x.indx+1, ksppinm, ksppity, ksppstvl, ksppstdvl, ksppstdfl, ksppstdf, decode(bitand(ksppiflg/256,1),1,'TRUE','FALSE'), decode(bitand(ksppiflg/65536,3),1,'IMMEDIATE',2,'DEFERRED',3,'IMMEDIATE','FALSE'), decode(bitand(ksppiflg/524288,1),1,'TRUE','FALSE'), decode(bitand(ksppiflg,4),4,'FALSE',decode(bitand(ksppiflg/65536,3), 0, 'FALSE', 'TRUE')), decode(bitand(ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE'), decode(bitand(ksppstvf,2),2,'TRUE','FALSE'), decode(bitand(ksppilrmflg/64,1), 1, 'TRUE', 'FALSE'), decode(bitand(ksppilrmflg/268435456, 1), 1, 'TRUE', 'FALSE'), ksppdesc, ksppstcmnt, ksppihash, y.con_id from x$ksppi x, x$ksppcv y where (x.indx = y.indx) and bitand(ksppiflg,268435456) = 0 and ((translate(ksppinm,'_','$') not like '$$%') and ((translate(ksppinm,'_','$') not like '$%') or (ksppstdf = 'FALSE') or (bitand(ksppstvf,5) > 0)))
以“_”開頭的初始化參數通常被稱為隱含參數,Oracle 通常不建議修改這些參數,但是因為某些隱含參數有着特殊的功能,V$PARAMETER 視圖的創建語句中我們可以發現,這個視圖實際上是建立在兩個底層數據字典表X$KSPPI和X$KSPPCV 之上的。
通過以下查詢我們可以從內部表直接獲得所有參數及其述信息:
SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.KSPPDESC PDESC FROM SYS.x$ksppi x, SYS.x$ksppcv y WHERE x.indx = y.indx AND x.ksppinm LIKE '%&par%';
比較常用的幾個隱含參數有:
NAME VALUE PDESC
------------------------------ ---------- ------------------------------------------------
_allow_resetlogs_corruption FALSE allow resetlogs even if it will cause corruption
_offline_rollback_segments offline undo segment list
_corrupted_rollback_segments corrupted undo segment list
1.7.4 參數的可選值
V$PARAMETER_VALID_VALUES
SQL> col NUM for 9999 SQL> col name for A50 SQL> col value for A20 SQL> select * from V$PARAMETER_VALID_VALUES where name like '%cursor%'; NUM NAME ORDINAL VALUE ISDEFAULT CON_ID ----- -------------------------------------------------- ---------- -------------------- ---------------------------------------------------------------- ---------- 3458 cursor_sharing 1 FORCE FALSE 0 3458 cursor_sharing 2 EXACT TRUE 0 3458 cursor_sharing 3 SIMILAR FALSE 0 3946 cursor_bind_capture_destination 1 OFF FALSE 0 3946 cursor_bind_capture_destination 2 MEMORY FALSE 0 3946 cursor_bind_capture_destination 3 MEMORY+DISK FALSE 0 4389 cursor_invalidation 1 DEFERRED FALSE 0 4389 cursor_invalidation 2 IMMEDIATE TRUE 0 8 rows selected. col view_name for A30 select VIEW_NAME,VIEW_DEFINITION from V$FIXED_VIEW_DEFINITION where view_name like '%V$PARAMETER_VALID_VALUES'; VIEW_NAME VIEW_DEFINITION ------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- GV$PARAMETER_VALID_VALUES SELECT INST_ID, PARNO_KSPVLD_VALUES, NAME_KSPVLD_VALUES, ORDINAL_KSPVLD_VALUES, VALUE_KSPVLD_VALUES, ISDEFAULT_KSPVLD_VALUES, CON_ID FROM X$KSPVLD_VALUES WHERE TRANSLATE(NAME_KSPVLD_VALUES,'_','#') NOT LIKE '#%' V$PARAMETER_VALID_VALUES select num, name, ordinal, value, isdefault, con_id from GV$PARAMETER_VALID_VALUES where INST_ID = USERENV('Instance')
可以由以下SQL查詢參數的可選值
SELECT INST_ID, PARNO_KSPVLD_VALUES pvalid_par#, NAME_KSPVLD_VALUES pvalid_name, VALUE_KSPVLD_VALUES pvalid_value, DECODE(ISDEFAULT_KSPVLD_VALUES, 'FALSE', '', 'DEFAULT' ) pvalid_default FROM X$KSPVLD_VALUES WHERE LOWER(NAME_KSPVLD_VALUES) LIKE LOWER('%&1%') ORDER BY pvalid_par#,pvalid_default,pvalid_Value;