a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > Oracle > 正文

用show parameter直接顯示Oracle隱含參數

2024-08-29 13:52:16
字體:
來源:轉載
供稿:網友
Oracle數據庫的啟動用到了初始化參數,一般情況下可以在sqlplus里用show parameter 來獲得。而Oracle數據庫為了debug 或者解決一些特殊的問題,還提供了一些以“_”開頭的隱含參數。 網絡上有一些script可以讓我們輕松檢查這些隱含參數. 下面我們來詳細介紹一下如何直接在sqlplus 用show parameter來獲取隱含參數?

用sqlplus里的show parameter來直接查看Oracle隱含參數:

1.首先,我們需要了解sqlplus是如何通過show parameter獲得參數的。大家只需通過sql_trace的方式可以發現。

sqlplus serol/luo

alter session set sql_trace=true;

show parameter optimizer

NAME TYPE VALUE

-------------------- -----------------

optimizer_dynamic_sampling integer 1

optimizer_features_enable string 9.2.0.1

optimizer_index_caching integer 0

optimizer_index_cost_adj integer 1

optimizer_max_permutations integer 2000

optimizer_mode string RULE

exit

到udump底下找到trace文件,里面的最主要的語句是:

SELECT NAME name_col_plus_show_param,DECODE(TYPE,1,'boolean',2,'string',3,'integer',4,'file',6,'big

integer','unknown') TYPE,VALUE value_col_plus_show_param FROM V$PARAMETER WHERE UPPER(NAME) LIKE UPP

ER('%optimizer%') ORDER BY name_col_plus_show_param,ROWNUM

可以看到,sqlplus的show parameter實際上就是查詢V$PARAMETER .

2.再來看一下v$parameter的定義。

SELECT * FROM v$fixed_view_definition

WHERE view_name = 'V$PARAMETER';

select NUM , NAME , TYPE , VALUE , ISDEFAULT , ISSES_MODIFIABLE , ISSYS_MODIFIABLE , ISMODIFIED , ISADJUSTED , DESCRIPTION, UPDATE_COMMENT from GV$PARAMETER where inst_id = USERENV('Instance')

SELECT * FROM v$fixed_view_definition

WHERE view_name = 'GV$PARAMETER';

select x.inst_id,x.indx+1,ksppinm,ksppity,ksppstvl,ksppstdf,

decode(bitand(ksppiflg/256,1),1,'TRUE','FALSE'),

decode(bitand(ksppiflg/65536,3),1,'IMMEDIATE',2,'DEFERRED',

3,'IMMEDIATE','FALSE'), decode(bitand(ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE'),

decode(bitand(ksppstvf,2),2,'TRUE','FALSE'), ksppdesc, ksppstcmnt

from x$ksppi x, x$ksppcv y

where (x.indx = y.indx) and ( (translate(ksppinm,'_','#') not like '#%') or (ksppstdf = 'FALSE') )

看到上面最關鍵的 (translate(ksppinm,'_','#') not like '#%')的條件了嗎?,就是它把開頭為"_" 的隱含參數給過濾掉了。當然,ksppstdf = 'FALSE' 的條件是為了保證如果已經手動改過隱含參數,show parameter還會顯示改隱含參數。

3.我們可以偽造一個v$parameter, 去掉過濾"_"的條件,就可以成功了。

注意:由于是改動系統的內部設置,所以大家一定要特別留意。

一定要以一個僅用于數據庫管理,不會參加任何程序活動的管理性數據庫用戶來偽造這個v$parameter,以免發生意外。而且,最好是在測試環境中玩,而不要跑到生產環境里面。下面假設這個用戶名為:rollingpig.

以sys 登陸

connect / as sysdba

create view my_v$parameter_with_hidden (NUM,NAME , TYPE , Value , ISDEFAULT , ISSES_MODIFIABLE , ISSYS_MODIFIABLE ,ISMODIFIED , ISADJUSTED, DESCRIPTION, UPDATE_COMMENT)

as

select x.indx+1,ksppinm,ksppity,ksppstvl,ksppstdf,

decode(bitand(ksppiflg/256,1),1,'TRUE','FALSE'),

decode(bitand(ksppiflg/65536,3),1,'IMMEDIATE',2,'DEFERRED',

3,'IMMEDIATE','FALSE'), decode(bitand(ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE'),

decode(bitand(ksppstvf,2),2,'TRUE','FALSE'), ksppdesc, ksppstcmnt

from x$ksppi x, x$ksppcv y

where (x.indx = y.indx);

grant select on my_v$parameter_with_hidden to rollingpig;

以 rollingpig 用戶連接,創建同義詞:

create synonym v$parameter for sys.my_v$parameter_with_hidden ;

4.現已成功,我們來測試一下。

以rollingpig 用戶登陸:

show parameter optimizer

SQL> show parameter optimizer

NAME TYPE VALUE

---------------------------------- -------------------------------- _optimizer_adjust_for_nulls boolean TRUE

_optimizer_choose_permutation integer 0

_optimizer_cost_model string CHOOSE

_optimizer_degree integer 0

_optimizer_dyn_smp_blks integer 32

_optimizer_join_sel_sanity_check boolean FALSE

_optimizer_mode_force boolean TRUE

_optimizer_new_join_card_computation boolean TRUE

_optimizer_percent_parallel integer 101

_optimizer_search_limit integer 5

_optimizer_skip_scan_enabled boolean TRUE

_optimizer_sortmerge_join_enabled boolean TRUE

_optimizer_system_stats_usage integer 0

_optimizer_undo_changes boolean FALSE

_optimizer_undo_cost_change string 9.2.0.1

optimizer_dynamic_sampling integer 1

optimizer_features_enable string 9.2.0.1

optimizer_index_caching integer 0

optimizer_index_cost_adj integer 1

optimizer_max_permutations integer 2000

optimizer_mode string RULE

以"_"開頭的隱含參數一個給跑出來了,optimizer開頭的還真不少 :D

還有一些明顯是測試用的hidden parameter

SQL> show parameter test

NAME TYPE VALUE

------------------------- --------------------------------

_ipc_test_failover integer 0

_ipc_test_mult_nets integer 0

_test_ksusigskip integer 5

_test_param_1 integer 25

_test_param_2 string

_test_param_3 string

_test_param_4 string

_test_param_5 integer 25

_test_param_6 big integer 0

注意:本文中的示例僅在測試環境中實現,請大家不要在生產環境中嘗試。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 在线免费观看视频黄 | 免费在线看a | 中文字幕在线免费视频 | 亚洲视频在线看 | 偷拍亚洲精品 | 99久久日韩精品视频免费在线观看 | 美女黄色毛片视频 | 一区二区三区观看视频 | 日韩精品一区二区三区第95 | 日韩1区 | t66y最新地址一地址二69 | 日韩一级网站 | 国产精品欧美一区二区三区 | gav成人免费播放视频 | 在线亚洲不卡 | 欧美xxxx网站 | 亚洲 欧美日韩 国产 中文 | 国产在线1区 | 欧美精品国产精品 | 欧美日韩在线观看中文字幕 | 国产精品三级在线 | 国产精品视频久久 | 欧美日韩黄 | 欧美国产一区二区 | 天堂在线www | www.日韩大片 | 久久久99日产| 日本三级做a全过程在线观看 | 波多野结衣 一区二区 | 久久久久国产 | 国产精品一区二区三区不卡视频 | 日韩在线三级 | 精品国产一二 | 91精品国产一区二区三区蜜臀 | gav成人免费播放视频 | 亚洲综合精品 | av中文在线 | 色婷婷综合久久久中文字幕 | 在线免费观看毛片 | 欧美成人一区二免费视频软件 | 国产永久免费观看 |