【檢視】深入探究 V$PARAMETER的底層查詢內幕
查詢資料庫系統引數可以使用“show parameter”,也可以使用V$PARAMETER檢視進行查詢。本文我們使用v$fixed_view_definition檢視輔助獲得V$PARAMETER檢視真正獲得途徑(即探索構造這個檢視的真實的SQL語句和訪問的底層檢視)。
1.使用desc命令檢視一下V$PARAMETER“檢視”列基本資訊
sys@ora10g> desc V$PARAMETER
Name Null? Type
------------------------- -------- ------------------------------
NUM NUMBER
NAME VARCHAR2(80)
TYPE NUMBER
VALUE VARCHAR2(512)
DISPLAY_VALUE VARCHAR2(512)
ISDEFAULT VARCHAR2(9)
ISSES_MODIFIABLE VARCHAR2(5)
ISSYS_MODIFIABLE VARCHAR2(9)
ISINSTANCE_MODIFIABLE VARCHAR2(5)
ISMODIFIED VARCHAR2(10)
ISADJUSTED VARCHAR2(5)
ISDEPRECATED VARCHAR2(5)
DESCRIPTION VARCHAR2(255)
UPDATE_COMMENT VARCHAR2(255)
HASH NUMBER
2.使用v$fixed_view_definition檢視得到V$PARAMETER檢視的查詢語句
sys@ora10g> col VIEW_DEFINITION for a70
sys@ora10g> select view_definition from v$fixed_view_definition a where a.VIEW_NAME='V$PARAMETER';
VIEW_DEFINITION
----------------------------------------------------------------------
select NUM , NAME , TYPE , VALUE , DISPLAY_VALUE, ISDEFAULT , ISSES_M
ODIFIABLE , ISSYS_MODIFIABLE , ISINSTANCE_MODIFIABLE, ISMODIFIED , ISA
DJUSTED , ISDEPRECATED, DESCRIPTION, UPDATE_COMMENT, HASH from GV$PAR
AMETER where inst_id = USERENV('Instance')
格式化這個SQL語句後的結果:
SELECT NUM,
NAME,
TYPE,
VALUE,
DISPLAY_VALUE,
ISDEFAULT,
ISSES_MODIFIABLE,
ISSYS_MODIFIABLE,
ISINSTANCE_MODIFIABLE,
ISMODIFIED,
ISADJUSTED,
ISDEPRECATED,
DESCRIPTION,
UPDATE_COMMENT,
HASH
FROM GV$PARAMETER
WHERE inst_id = USERENV ('Instance')
/
可見,V$PARAMETER是透過GV$PARAMETER建立的。
3.繼續追溯GV$PARAMETER的建立語句
sys@ora10g> select view_definition from v$fixed_view_definition a where a.VIEW_NAME='GV$PARAMETER';
VIEW_DEFINITION
----------------------------------------------------------------------
select x.inst_id,x.indx+1,ksppinm,ksppity,ksppstvl, ksppstdvl, ksppstd
f, decode(bitand(ksppiflg/256,1),1,'TRUE','FALSE'), decode(bitand(ks
ppiflg/65536,3),1,'IMMEDIATE',2,'DEFERRED',
3,'IMMEDIATE','FALSE'), decode(bitand(ksppiflg,4),4,'FALSE',
decode(bitand(ksppiflg/65536,3), 0,
'FALSE', 'TRUE')), decode(bitand(ksppstvf,7),1,'MODIFIED',4,'SYST
EM_MOD','FALSE'), decode(bitand(ksppstvf,2),2,'TRUE','FALSE'), decod
e(bitand(ksppilrmflg/64, 1), 1, 'TRUE', 'FALSE'), ksppdesc, ksppstcmn
t, ksppihash from x$ksppi x, x$ksppcv y where (x.indx = y.indx) and
((translate(ksppinm,'_','#') not like '##%') and ((translate(ksppin
m,'_','#') not like '#%') or (ksppstdf = 'FALSE') or (bitand
(ksppstvf,5) > 0)))
格式化後的SQL:
SELECT x.inst_id,
x.indx + 1,
ksppinm,
ksppity,
ksppstvl,
ksppstdvl,
ksppstdf,
DECODE (BITAND (ksppiflg / 256, 1), 1, 'TRUE', 'FALSE'),
DECODE (BITAND (ksppiflg / 65536, 3),
1, 'IMMEDIATE',
2, 'DEFERRED',
3, 'IMMEDIATE',
'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'),
ksppdesc,
ksppstcmnt,
ksppihash
FROM x$ksppi x, x$ksppcv y
WHERE (x.indx = y.indx)
AND ( (TRANSLATE (ksppinm, '_', '#') NOT LIKE '##%')
AND ( (TRANSLATE (ksppinm, '_', '#') NOT LIKE '#%')
OR (ksppstdf = 'FALSE')
OR (BITAND (ksppstvf, 5) > 0)))
/
4.寶貴結果
圖窮匕見,幕後“魁首”終於出現,它們就是“x$ksppi”和“x$ksppcv”兩個X$表。
使用“x$ksppi”和“x$ksppcv”兩個X$表可以完成更多的任務,在下一篇文章中給大家展示一下使用這兩個X$表獲得隱含引數及其描述資訊。
5.日常訪問到的V$PARAMETER是“表”?“檢視”?還是“同名”?
真實身份是“同名”。
論據請檢視catalog.sql建立指令碼中關於該檢視的建立過程。
相關內容引用在此,供參考。
create or replace view v_$parameter as select * from v$parameter;
create or replace public synonym v$parameter for v_$parameter;
grant select on v_$parameter to select_catalog_role;
6.小結
v$fixed_view_definition檢視是研究檢視定義的有效工具,本文透過該檢視追溯到了V$PARAMETER的底層查詢表。
有興趣的朋友可以進一步去研究其他檢視的查詢定義。
Good luck.
secooler
10.03.26
-- The End --
1.使用desc命令檢視一下V$PARAMETER“檢視”列基本資訊
sys@ora10g> desc V$PARAMETER
Name Null? Type
------------------------- -------- ------------------------------
NUM NUMBER
NAME VARCHAR2(80)
TYPE NUMBER
VALUE VARCHAR2(512)
DISPLAY_VALUE VARCHAR2(512)
ISDEFAULT VARCHAR2(9)
ISSES_MODIFIABLE VARCHAR2(5)
ISSYS_MODIFIABLE VARCHAR2(9)
ISINSTANCE_MODIFIABLE VARCHAR2(5)
ISMODIFIED VARCHAR2(10)
ISADJUSTED VARCHAR2(5)
ISDEPRECATED VARCHAR2(5)
DESCRIPTION VARCHAR2(255)
UPDATE_COMMENT VARCHAR2(255)
HASH NUMBER
2.使用v$fixed_view_definition檢視得到V$PARAMETER檢視的查詢語句
sys@ora10g> col VIEW_DEFINITION for a70
sys@ora10g> select view_definition from v$fixed_view_definition a where a.VIEW_NAME='V$PARAMETER';
VIEW_DEFINITION
----------------------------------------------------------------------
select NUM , NAME , TYPE , VALUE , DISPLAY_VALUE, ISDEFAULT , ISSES_M
ODIFIABLE , ISSYS_MODIFIABLE , ISINSTANCE_MODIFIABLE, ISMODIFIED , ISA
DJUSTED , ISDEPRECATED, DESCRIPTION, UPDATE_COMMENT, HASH from GV$PAR
AMETER where inst_id = USERENV('Instance')
格式化這個SQL語句後的結果:
SELECT NUM,
NAME,
TYPE,
VALUE,
DISPLAY_VALUE,
ISDEFAULT,
ISSES_MODIFIABLE,
ISSYS_MODIFIABLE,
ISINSTANCE_MODIFIABLE,
ISMODIFIED,
ISADJUSTED,
ISDEPRECATED,
DESCRIPTION,
UPDATE_COMMENT,
HASH
FROM GV$PARAMETER
WHERE inst_id = USERENV ('Instance')
/
可見,V$PARAMETER是透過GV$PARAMETER建立的。
3.繼續追溯GV$PARAMETER的建立語句
sys@ora10g> select view_definition from v$fixed_view_definition a where a.VIEW_NAME='GV$PARAMETER';
VIEW_DEFINITION
----------------------------------------------------------------------
select x.inst_id,x.indx+1,ksppinm,ksppity,ksppstvl, ksppstdvl, ksppstd
f, decode(bitand(ksppiflg/256,1),1,'TRUE','FALSE'), decode(bitand(ks
ppiflg/65536,3),1,'IMMEDIATE',2,'DEFERRED',
3,'IMMEDIATE','FALSE'), decode(bitand(ksppiflg,4),4,'FALSE',
decode(bitand(ksppiflg/65536,3), 0,
'FALSE', 'TRUE')), decode(bitand(ksppstvf,7),1,'MODIFIED',4,'SYST
EM_MOD','FALSE'), decode(bitand(ksppstvf,2),2,'TRUE','FALSE'), decod
e(bitand(ksppilrmflg/64, 1), 1, 'TRUE', 'FALSE'), ksppdesc, ksppstcmn
t, ksppihash from x$ksppi x, x$ksppcv y where (x.indx = y.indx) and
((translate(ksppinm,'_','#') not like '##%') and ((translate(ksppin
m,'_','#') not like '#%') or (ksppstdf = 'FALSE') or (bitand
(ksppstvf,5) > 0)))
格式化後的SQL:
SELECT x.inst_id,
x.indx + 1,
ksppinm,
ksppity,
ksppstvl,
ksppstdvl,
ksppstdf,
DECODE (BITAND (ksppiflg / 256, 1), 1, 'TRUE', 'FALSE'),
DECODE (BITAND (ksppiflg / 65536, 3),
1, 'IMMEDIATE',
2, 'DEFERRED',
3, 'IMMEDIATE',
'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'),
ksppdesc,
ksppstcmnt,
ksppihash
FROM x$ksppi x, x$ksppcv y
WHERE (x.indx = y.indx)
AND ( (TRANSLATE (ksppinm, '_', '#') NOT LIKE '##%')
AND ( (TRANSLATE (ksppinm, '_', '#') NOT LIKE '#%')
OR (ksppstdf = 'FALSE')
OR (BITAND (ksppstvf, 5) > 0)))
/
4.寶貴結果
圖窮匕見,幕後“魁首”終於出現,它們就是“x$ksppi”和“x$ksppcv”兩個X$表。
使用“x$ksppi”和“x$ksppcv”兩個X$表可以完成更多的任務,在下一篇文章中給大家展示一下使用這兩個X$表獲得隱含引數及其描述資訊。
5.日常訪問到的V$PARAMETER是“表”?“檢視”?還是“同名”?
真實身份是“同名”。
論據請檢視catalog.sql建立指令碼中關於該檢視的建立過程。
相關內容引用在此,供參考。
create or replace view v_$parameter as select * from v$parameter;
create or replace public synonym v$parameter for v_$parameter;
grant select on v_$parameter to select_catalog_role;
6.小結
v$fixed_view_definition檢視是研究檢視定義的有效工具,本文透過該檢視追溯到了V$PARAMETER的底層查詢表。
有興趣的朋友可以進一步去研究其他檢視的查詢定義。
Good luck.
secooler
10.03.26
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-630542/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【VIEW】Oracle如何查詢固定檢視的定義或底層sql語句ViewOracleSQL
- 利用檢視 V$FIXED_VIEW_DEFINITION 可以檢視Oracle很多底層的東西ViewOracle
- [譯] SQLite 底層查詢原理SQLite
- RunLoop底層原理探究OOP
- 從oracle v$version檢視中查詢os的資訊Oracle
- 底層原理探究(二)RunLoopOOP
- iOS底層原理探究-RunloopiOSOOP
- v$session/v$process檢視涉及的相關會話資訊的查詢Session會話
- iOS底層原理探究-RuntimeiOS
- 探究JS V8引擎下的“陣列”底層實現JS陣列
- MySQL 查詢的成本的檢視MySql
- 檢視查詢報錯
- 【MySQL】檢視&子查詢MySql
- oracle 常用查詢檢視Oracle
- iOS底層原理 - Block本質探究iOSBloC
- SGA中Latch 的分類和查詢--結合v$latch檢視
- MG--探究KVO的底層實現原理
- 使用DBMS_UTILITY.get_parameter_value檢視session的parameterSession
- [20210418]查詢v$檢視問題.txt
- JDK內建鎖深入探究JDK
- 檢視慢查詢進度
- 使用物化檢視查詢重寫 優化對於 UNION ALL檢視的CONNECT BY查詢優化
- Runtime底層原理探究(二) --- 訊息傳送機制(慢速查詢)
- 查詢基表的相關檢視
- 資料庫的查詢與檢視資料庫
- 儲存過程中查詢資料字典檢視(v$或dba)儲存過程
- Swift-方法排程-類的普通方法底層探究Swift
- 【PDB】Oracle跨PDB檢視查詢Oracle
- OushuDB 檢視查詢執行情況
- 【MV】物化檢視查詢重寫
- sql查詢檢視列備註SQL
- 【parameter】oracle的隱含引數的檢視Oracle
- 探究MySQL中SQL查詢的成本MySql
- user_source檢視使用&&查詢包和過程中的特定內容
- 什麼是遊戲性? 從內因層面的四個維度深入探究遊戲
- 【SQL】Oracle查詢轉換之物化檢視查詢重寫SQLOracle
- django的檢視層Django
- Mysql技術內幕之InnoDB鎖探究MySql