oracle的一些操作

2021-09-22 09:41:39 字數 1570 閱讀 5917

1.select count(*) from v$session; 

select count(*) from v$process; 

檢視當前總會話數和程序數,這兩個檢視就是跟會話及程序有關的重要檢視啦,資訊都是從這裡面取的。

2.查詢那些應用的連線數此時是多少 

select  b.machine, b.program , count(*) from v$process a, v$session b where a.addr = b.paddr and  b.username is not null   group by  b.machine  , b.program order by count(*) desc;

3.查詢是否有死鎖 

select * from v$locked_object; 

如果查詢結果為no rows selected,說明資料庫中沒有死鎖。否則說明資料庫中存在死鎖。

接下來說明一下會話的狀態: 

1.active 處於此狀態的會話,表示正在執行,處於活動狀態。 

2.killed 處於此狀態的會話,表示出現了錯誤,正在回滾,當然,也是占用系統資源的。還有一點就是,killed的狀態一般會持續較長時間,而且用windows下的工具pl/sql developer來kill掉,是不管用的,要用命令:alter system kill session 'sid,serial#' ; 

3.inactive 處於此狀態的會話表示不是正在執行的,比如select語句已經完成。我一開始以為,只要是inactive狀態的會話,就是該殺,為什麼不釋放呢。其實,inactive對資料庫本身沒有什麼影響,但是如果程式沒有及時commit,那麼就會造成占用過多會話。解決inactive的方法最好的就是在oracle中直接設定超時時間,也是有兩種方法,區別暫時還不清楚:

1.修改sqlnet.ora檔案,新增expire_time=x(單位是分鐘)   

我的sqlnet.ora位置在d:\oracle\ora92\network\admin

2.通過alter profile default limit idle_time 10; 命令修改,記得重啟下oracle。

***************

另外一種解決方法:

select a.sid,b.spid,a.serial#,a.lockwait,a.username,a.osuser,a.logon_time,a.last_call_et/3600 last_hour,a.status, 

'orakill '||sid||' '||spid host_command,

'alter system kill session '''||a.sid||','||a.serial#||'''' sql_command

from v$session a,v$process b where a.paddr=b.addr and sid>6

-----

你是不是覺得你的寫sql語句時,過了一會兒不寫了,你的再寫sql語句時,就發現你的登陸失效了?是因為oracle設定了乙個時間當你到了這個時間還沒有對視窗做響應的話,oracle就把你的登陸退出(這個時間也就是下面提到的session時間,你可以自己設定,就方便了)

ORACLE 的一些操作

檢視表建立時間 select ao.from all objects ao where object name module and object type table select from user tables select username,count username from v ses...

oracle的一些操作

dba可以檢視資料庫有多少個使用者 select username from dba users dba如何檢視oracle有多少個表空間。select tablespace name from dba tablespaces 檢視乙個表空間有多少張表,而且表空間名字是字串,區分大小寫 select...

ORACLE 一些操作語句

查詢表的外來鍵 包括名稱,引用表的表名和對應的鍵名,下面是分成多步查詢 select from user constraints c where c.constraint type r and c.table name 要查詢的表 查詢外來鍵約束的列名 select from user cons c...