使用SQL來分析資料庫引數(一)(r10筆記第68天)

yuntui發表於2016-11-03

對於10g,11g,12c中的引數變化有時候感覺就是使不上勁,因為引數好像很多,但是瞭解的又很少。隱含引數經常是碰到問題的時候關聯思考發現有這麼一個隱含引數,有些問題可能有意識還會主動去查查,如果恍惚一下就算了。如此一來,其實對於資料庫引數而言我們很多人也還是一知半解。

怎麼得到去分析資料庫引數的變化情況呢,突然想到使用SQL來分析是個不錯的方法。比如我現在希望解決下面的問題。

正式引數和隱含引數的資料情況
哪些引數是11g新增的?
那些是12c新增的?
哪些11g的隱含引數,在12c正式引入?

哪些是11g的隱含引數,在12c中被廢棄?

哪些是10g的隱含引數,在11g被廢棄?

哪些是10g的隱含引數,在11g被正式引入?
哪些是10g預設的引數,在11g有所變化?
哪些是11g預設的引數,在12c中有所變化?

看來我提出了不少的問題,但是解決起來純手工那是遙遙無期,還是使用SQL吧。

首先我們需要做一些基本的鋪墊,怎麼得到對應的資料。

如果想得到一份完成的引數列表,可以參考v$parameter這個是正式公佈的引數,還有一部分是隱含引數。他們的差別其實就是欄位的過濾條件不同,基表是相同的,都是x$的記憶體表。

可以使用如下的SQL得到完整的引數列表,包含隱含引數和正式引數

spool all_param.lst
set pages 0
set linesiz 200
select
   (select version from v$instance)||'|'||'ALL'||'|'||x.ksppinm||'|'||y.ksppstvl ||'|'||y.ksppstdf||'|'||decode(bitand(ksppilrmflg / 64, 1), 1, 'TRUE', 'FALSE')||'|'||ksppdesc
from
  sys.x$ksppi x,
  sys.x$ksppcv y
where
  x.inst_id = userenv('Instance') and
  y.inst_id = userenv('Instance') and
  x.indx = y.indx 
order by
  translate(x.ksppinm, ' _', ' ');
spool off  

可以使用如下的SQL得到公開的正式引數

spool db_param.lst        
set pages 0
set linesize 200
select (select version from v$instance)||'|'||'GENERAL'||'|'||name||'|'||value||'|'||isdefault||'|'||isdeprecated||'|'||description from v$parameter ;                                        
spool off

然後可以找幾個有針對性的環境,比如10g我是參考10.2.0.5.0,11g參考11.2.0.4.0,12c參考12.1.0.2.0

簡單的一個資料分佈情況如下:

10g版本

共1620 個引數
供260 個公開引數,即v$parameter中可以查到的。

11g版本

共2914個引數
供352個公開引數,即v$parameter中可以查到的。

12c版本

共3978個引數
供382個公開引數,即v$parameter中可以查到的。

得到了引數的列表,我們可以匯入到一個表中統一管理分析。可以建立一個表如下:

create table db_param_all (db_version varchar2(10),param_type varchar2(10),name varchar2(80),value varchar(512),isdefault varchar2(9),isdeprecated varchar2(5),description varchar2(255)); 

而怎麼匯入資料呢,還是SQL*Loader吧。

load data
infile *
append into table db_param_all
fields terminated by '|'
(db_version,param_type,name,value,isdefault,isdeprecated,description))

完成以上的步驟,就可以做一些基本的資料分析了,至少很多不確定的問題都可以自己找到答案。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30633755/viewspace-2127713/,如需轉載,請註明出處,否則將追究法律責任。

相關文章