檢視Oracle當前連線數

2022-11-27 00:17:32 字數 3945 閱讀 8323

sql> select count(*) from v$session #當前的連線數

sql> select count(*) from v$session where status='active' #併發連線數

sql> select value from v$parameter where name = 'processes' --資料庫允許的最大連線數

sql> select value from v$parameter where name ='processes' #最大連線 

sql> select username,count(username) from v$session where username is not null group by username; #檢視不同使用者的連線數

#修改最大連線數:

alter system set processes = 300 scope = spfile;

#重啟資料庫:

shutdown immediate;

startup;

--檢視當前有哪些使用者正在使用資料

select osuser, a.username,cpu_time/executions/1000000||'s', sql_fulltext,machine 

from v$session a, v$sqlarea b

where a.sql_address =b.address order by cpu_time/executions desc;select count(*) from v$session #連線數

select count(*) from v$session where status='active' #併發連線數

show parameter processes #最大連線

alter system set processes = value scope = spfile;重啟資料庫 #修改連線 oracle日誌檢視

一.oracle日誌的路徑:

登入:sqlplus "/as sysdba"

檢視路徑:sql> select * from v$logfile;

sql> select * from v$logfile;(#日誌檔案路徑)

二.oracle日誌檔案包含哪些內容:(日誌的數量可能略有不同)

control01.ctl example01.dbf redo02.log sysaux01.dbf undotbs01.dbf

control02.ctl redo03.log system01.dbf users01.dbf

control03.ctl redo01.log shttest.dbf temp01.dbf

三.oracle日誌的檢視方法:

sql>select * from v$sql (#檢視最近所作的操作)

sql>select * fromv $sqlarea(#檢視最近所作的操作)

oracle 資料庫的所有更改都記錄在日誌中,從目前來看,分析oracle日誌的唯一方法就是使用oracle公司提供的logminer來進行,因為原始的日誌資訊我們根本無法看懂,oracle8i後續版本中自帶了logminer,而logminer就是讓我們看懂日誌資訊的工具,通過這個工具可以:查明資料庫的邏輯更改,偵察並更正使用者的誤操作,執行事後審計,執行變化分析。

四.logminer的使用:

1、建立資料字典檔案(data-dictionary)

1).首先在init.ora初始化引數檔案中,新增一個引數utl_file_dir,該引數值為伺服器中放置資料字典檔案的目錄。如:utl_file_dir = ($oracle_home\logs) ,重新啟動資料庫,使新加的引數生效:

sql> shutdown;

sql>startup;

2).然後建立資料字典檔案

sql> connect /as sysdba

sql> execute dbms_logmnr_d.build(dictionary_filename => 'dict.ora',dictionary_location => '/data1/oracle/logs');

pl/sql procedure successfully completed

2、建立要分析的日誌檔案列表

1).建立分析列表,即所要分析的日誌

sql>execute dbms logmnr.add logfile(logfilename => '/data1/oracle/oradata/akazamdb/redo01.log',options => dbms_logmnr.new);

pl/sql procedure successfully completeds 

2).新增分析日誌檔案,一次新增1個為宜

sql>execute dbms_ logmnr.add_ logfile(logfilename => '/data1/oracle/oradata/akazamdb/redo01.log',options => dbms_logmnr.addfile);

pl/sql procedure successfully completed

3、使用logminer進行日誌分析(具體要查詢什麼內容可以自己修改)

(1)無限制條件

sql> execute dbms_logmnr.start_logmnr(

dictfilename=>'/data1/oracle/logs/v816dict.ora ');

(2)有限制條件

通過對過程dbms_ logmnr.start_logmnr中幾個不同引數的設定,可以縮小要分析日誌檔案的範圍。通過設定起始時間和終止時間引數我們可以限制只分析某一時間範圍的日誌。如下面的例子,我們僅僅分析2007年9月18日的日誌:

sql> execute dbms_logmnr.start_logmnr(

dictfilename => ' /data1/oracle/logs/ v816dict.ora ',

starttime => to_date('2007-9-18 00:00:00','yyyy-mm-dd hh24:mi:ss')

endtime => to_date(''2007-9-18 23:59:59','yyyy-mm-dd hh24:mi:ss '));

也可以通過設定起始scn和截至scn來限制要分析日誌的範圍:

sql> execute dbms_logmnr.start_logmnr(

dictfilename => ' /data1/oracle/logs/ v816dict.ora ',

startscn => 20,

endscn => 50);

4、觀察分析結果(v$logmnr_contents)

到現在為止,我們已經分析得到了重作日誌檔案中的內容。動態效能檢視v$logmnr_contents包含logminer分析得到的所有的資訊。

select sql_redo from v$logmnr_contents;

如果我們僅僅想知道某個使用者對於某張表的操作,可以通過下面的sql查詢得到,該查詢可以得到使用者db_zgxt對錶sb_djjl所作的一切工作。

sql> select sql_redo from v$logmnr_contents where username='db_zgxt' and tablename='sb_djjl';

需要強調一點的是,檢視v$logmnr_contents中的分析結果僅在我們執行過程'dbms_logmrn.start_logmnr'這個會話的生命期中存在。這是因為所有的logminer儲存都在pga記憶體中,所有其他的程序是看不到它的,同時隨著程序的結束,分析結果也隨之消失。

最後,使用過程dbms_logmnr.end_logmnr終止日誌分析事務,此時pga記憶體區域被清除,分析結果也隨之不再存在。

5、檢視logminer工具分析結果

sql> select * from dict t where t.table_name like '%logmnr%';-看所有與logmnr相關的檢視