【指令碼】隱含引數及註釋資訊的查詢方法
在文章《【檢視】深入探究V$PARAMETER的底層查詢內幕》http://space.itpub.net/519536/viewspace-630542中得到一個重要的結論:構造V$PARAMETER的查詢使用到了兩個X$表,它們是“x$ksppi”和“x$ksppcv”。
為什麼V$PARAMETER只能查詢到“一般”的引數,無法查詢到資料庫的隱含引數(Oracle的隱含引數是以下劃線開頭的引數)?
如何檢視那些隱含引數及它們的說明資訊?
深入研究“x$ksppi”和“x$ksppcv”後,我們便會得到有效地指導,並對上面的問題給出一一的解答。
1.透過“x$ksppi”和“x$ksppcv”構造V$PARAMETER的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)))
/
2.使用V$PARAMETER無法查詢到隱含引數的真實原因
注意觀察SQL語句中的Where子句中有如下的限制:
AND ( (TRANSLATE (ksppinm, '_', '#') NOT LIKE '##%')
AND ( (TRANSLATE (ksppinm, '_', '#') NOT LIKE '#%')
就是因為這個限制,導致以下劃線開頭的引數被過濾掉了。
3.查詢隱含引數及其說明資訊方法
既然知道了引數描述資訊的源頭是“x$ksppi”和“x$ksppcv”兩個X$表,我們便可以編寫一個指令碼,使用這個指令碼可以查詢到幾乎所有的系統引數(普通引數和隱含引數)。
簡單編寫指令碼如下:
$ cat parameter.sql
col name for a32
col value for a24
col description for a70
select a.ksppinm name,b.ksppstvl value,a.ksppdesc description
from x$ksppi a,x$ksppcv b
where a.inst_id = USERENV ('Instance')
and b.inst_id = USERENV ('Instance')
and a.indx = b.indx
and upper(a.ksppinm) LIKE upper('%¶m%')
order by name
/
4.指令碼使用效果
查詢一下包含“shared_pool”關鍵字的引數資訊
sys@ora10g> @parameter
Enter value for param: shared_pool
old 6: and upper(a.ksppinm) LIKE upper('%¶m%')
new 6: and upper(a.ksppinm) LIKE upper('%shared_pool%')
NAME VALUE DESCRIPTION
-------------------------------- ----------- ----------------------------------------------------------------------
__shared_pool_size 2466250752 Actual size in bytes of shared pool
_dm_max_shared_pool_pct 1 max percentage of the shared pool to use for a mining model
_enable_shared_pool_durations TRUE temporary to disable/enable kgh policy
_io_shared_pool_size 4194304 Size of I/O buffer pool from SGA
_shared_pool_max_size 0 shared pool maximum size when auto SGA enabled
_shared_pool_minsize_on FALSE shared pool minimum size when auto SGA enabled
_shared_pool_reserved_min_alloc 4400 minimum allocation size in bytes for reserved area of shared pool
_shared_pool_reserved_pct 5 percentage memory of the shared pool allocated for the reserved area
shared_pool_reserved_size 142606336 size in bytes of reserved area of shared pool
shared_pool_size 0 size in bytes of shared pool
10 rows selected.
5.小結
在瞭解原理的基礎上,深入一下,很多縈繞在心頭的問題便會迎刃而解,隨之而來的就是豁然開朗之悅。
想一想還有沒有其他的收穫。
Good luck.
secooler
10.03.27
-- The End --
為什麼V$PARAMETER只能查詢到“一般”的引數,無法查詢到資料庫的隱含引數(Oracle的隱含引數是以下劃線開頭的引數)?
如何檢視那些隱含引數及它們的說明資訊?
深入研究“x$ksppi”和“x$ksppcv”後,我們便會得到有效地指導,並對上面的問題給出一一的解答。
1.透過“x$ksppi”和“x$ksppcv”構造V$PARAMETER的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)))
/
2.使用V$PARAMETER無法查詢到隱含引數的真實原因
注意觀察SQL語句中的Where子句中有如下的限制:
AND ( (TRANSLATE (ksppinm, '_', '#') NOT LIKE '##%')
AND ( (TRANSLATE (ksppinm, '_', '#') NOT LIKE '#%')
就是因為這個限制,導致以下劃線開頭的引數被過濾掉了。
3.查詢隱含引數及其說明資訊方法
既然知道了引數描述資訊的源頭是“x$ksppi”和“x$ksppcv”兩個X$表,我們便可以編寫一個指令碼,使用這個指令碼可以查詢到幾乎所有的系統引數(普通引數和隱含引數)。
簡單編寫指令碼如下:
$ cat parameter.sql
col name for a32
col value for a24
col description for a70
select a.ksppinm name,b.ksppstvl value,a.ksppdesc description
from x$ksppi a,x$ksppcv b
where a.inst_id = USERENV ('Instance')
and b.inst_id = USERENV ('Instance')
and a.indx = b.indx
and upper(a.ksppinm) LIKE upper('%¶m%')
order by name
/
4.指令碼使用效果
查詢一下包含“shared_pool”關鍵字的引數資訊
sys@ora10g> @parameter
Enter value for param: shared_pool
old 6: and upper(a.ksppinm) LIKE upper('%¶m%')
new 6: and upper(a.ksppinm) LIKE upper('%shared_pool%')
NAME VALUE DESCRIPTION
-------------------------------- ----------- ----------------------------------------------------------------------
__shared_pool_size 2466250752 Actual size in bytes of shared pool
_dm_max_shared_pool_pct 1 max percentage of the shared pool to use for a mining model
_enable_shared_pool_durations TRUE temporary to disable/enable kgh policy
_io_shared_pool_size 4194304 Size of I/O buffer pool from SGA
_shared_pool_max_size 0 shared pool maximum size when auto SGA enabled
_shared_pool_minsize_on FALSE shared pool minimum size when auto SGA enabled
_shared_pool_reserved_min_alloc 4400 minimum allocation size in bytes for reserved area of shared pool
_shared_pool_reserved_pct 5 percentage memory of the shared pool allocated for the reserved area
shared_pool_reserved_size 142606336 size in bytes of reserved area of shared pool
shared_pool_size 0 size in bytes of shared pool
10 rows selected.
5.小結
在瞭解原理的基礎上,深入一下,很多縈繞在心頭的問題便會迎刃而解,隨之而來的就是豁然開朗之悅。
想一想還有沒有其他的收穫。
Good luck.
secooler
10.03.27
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-630549/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 常用指令碼:獲取隱含引數指令碼
- 如何在linux中建立特定的指令碼註釋資訊Linux指令碼
- oracle 使用sql查詢表註釋和列註釋及資料型別等OracleSQL資料型別
- 關於Solidity指令碼相關環境配置及指令碼資料的查詢Solid指令碼
- IDEA自定義類註釋和方法註釋(自定義groovyScript方法實現多行引數註釋)Idea
- [20190417]隱含引數_SPIN_COUNT.txt
- maven的指令及常用引數Maven
- 呼叫域名註冊api,查詢所有域名組合指令碼API指令碼
- Mybatis 傳入多個引數查詢資料 (3種方法)MyBatis
- Oracle direct path read相關隱含引數Oracle
- [20190401]隱含引數_mutex_spin_count.txtMutex
- Python字串的方法及註釋Python字串
- linux常用指令含義及使用方法Linux
- Jmeter的指令碼引數化JMeter指令碼
- Sql Server 的引數化查詢SQLServer
- Python中key引數的含義及用法Python
- Python 中 key 引數的含義及用法Python
- 【PARANETERS】Oracle異常恢復相關的隱含引數Oracle
- 使用隱含引數testMappingSpeed排查GoldenGate抽取慢的步驟APPGo
- join方法應用之—查詢航班資訊
- v$parameter gv$parameter 檢視 DDL 與隱含引數
- [20191206]隱含引數_db_always_check_system_ts.txt
- Oracle 11G 隱含引數“_controlfile_autobackup_delay”Oracle
- IDEA 利用groovy指令碼生成註釋Idea指令碼
- 日誌損壞時,加入隱含引數開啟資料庫的總結資料庫
- Sqlserver自動查詢缺失索引及拼出建立索引的語句的指令碼SQLServer索引指令碼
- Laravel同時接收路由引數和查詢字串中的引數Laravel路由字串
- 抽象SQL引數化查詢VK抽象SQL
- SQL Server 查詢表註釋和欄位SQLServer
- .NET 通用多條件動態引數查詢方法 - SqlSugar ORMSqlSugarORM
- [20210112]完善查詢繫結變數指令碼bind_cap.txt變數指令碼
- vbs指令碼獲取Am註冊路徑資訊指令碼
- 查詢表空間使用情況的指令碼指令碼
- [20200420]V$SES_OPTIMIZER_ENV 查不到剛修改的隱含引數.txt
- Golang:go-querystring將struct編碼為URL查詢引數的庫GolangStruct
- shell的引數和指令碼流程改進指令碼
- 如何實現引數級聯查詢
- Microsoft Graph for Office 365 - 查詢引數(二)ROS
- Microsoft Graph for Office 365 - 查詢引數(一)ROS