1.查看物件參考關系
(1)以DBA方式查詢
--查詢參考物件SELECT * FROM dba_dependencies WHERE referenced_name = '<object_name>';--查詢參考的相關陳述句SELECT * FROM dba_source WHERE text like '%<object_name>%';
(2)以普通資料庫用戶形式查詢
--查詢參考物件SELECT * FROM all_dependencies WHERE referenced_name = '<object_name>'; --查詢參考的相關陳述句SELECT * FROM user_source WHERE text like '%<object_name>%';
2.查看/編譯失效物件
--檢查失效物件SELECT * FROM dba_objects WHERE status = 'INVALID';SELECT * FROM dba_invalid_objects;
--編譯失效物件BEGIN dbms_utility.compile_schema('<username>', false);END;
--查詢編譯報錯資訊SELECT * FROM dba_errors WHERE owner = '<username>';
3.查看被鎖的物件和解鎖
--查看被鎖的物件
SELECT b.owner,b.object_name,a.session_id,a.locked_mode FROM v$locked_object a,dba_objects b WHERE b.object_id = a.object_id;
--查看哪個用戶哪個行程造成死鎖
SELECT b.username,b.sid,b.serial#,logon_time FROM v$locked_object a,v$session b WHERE a.session_id = b.sid order by b.logon_time;
--查看連接的行程
SELECT sid, serial#, username, osuser FROM v$session;
--查出鎖定物件的sid, serial#,os_user_name, machine_name, terminal,鎖的type,mode
SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,s.terminal, s.logon_time, l.typeFROM v$session s, v$lock lWHERE s.sid = l.sidAND s.username IS NOT NULLORDER BY sid;
這個陳述句將查找到資料庫中所有的DML陳述句產生的鎖,還可以發現,任何DML陳述句其實產生了兩個鎖,一個是表鎖,一個是行鎖。
--殺掉行程 sid,serial#
ALTER system kill session 'sid,serial#' immediate; --sid與serial#為上面查詢出的值
4.存盤程序編譯卡死
解決方法如下:
(1)查V$DB_OBJECT_CACHE
SELECT * FROM V$DB_OBJECT_CACHE WHERE name='XXXX_PKG' AND LOCKS!='0';
注意:XXXX_PKG 為存盤程序的名稱。
發現 locks=2
(2)按物件查出sid的值
SELECT /*+ rule*/ SID from V$ACCESS WHERE object='XXXX_PKG';
注意:XXXX_PKG 為存盤程序的名稱。
(3)查sid,serial#
SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='剛才查到的SID';
(4)殺session
ALTER system kill session 'sid值,serial#值' immediate;
5.Oracle表空間相關
查詢表空間使用情況:
SELECT a.tablespace_name, a.bytes / 1024 / 1024 "sum MB", (a.bytes - b.bytes) / 1024 / 1024 "used MB", b.bytes / 1024 / 1024 "free MB", round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "used%" FROM (SELECT tablespace_name, sum(bytes) bytes FROM dba_data_files GROUP BY tablespace_name) a, (SELECT tablespace_name, sum(bytes) bytes, max(bytes) largest FROM dba_free_space GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name ORDER BY ((a.bytes - b.bytes) / a.bytes) DESC;
表空間擴展:
(1)查看表空間的名字及檔案所在位置:
SELECT tablespace_name, file_id, file_name, round(bytes / (1024 * 1024), 0) total_space FROM sys.dba_data_files ORDER BY tablespace_name
(2)通過增大所需表空間資料檔案大小來擴展表空間
ALTER database datafile '表空間位置' resize 新的尺寸
例如:
ALTER database datafile '\oracle\oradata\xxx_data10.dbf' resize 4000m
(3)通過增加表空間資料檔案個數來擴展表空間
ALTER tablespace 表空間名稱 add datafile '新的資料檔案地址' size 資料檔案大小
例如:
ALTER tablespace ESPS_2008 add datafile '\oracle\oradata\xxx_data11.dbf' size 1000m
(4)設定表空間自動擴展
ALTER database datafile '資料檔案位置' autoextend on next 自動擴展大小 maxsize 最大擴展大小
例如:
ALTER database datafile '\oracle\oradata\xxx_data11.dbf' autoextend on next 100m maxsize 10000m
6.查看資料庫連接數
SELECT count(*) FROM v$session;
7.用戶鎖定
--查詢資料庫用戶狀態
SELECT username,account_status FROM dba_users b WHERE b.username=upper('<username>');
--解鎖
ALTER user <username> account unlock;
--解開EXPIRED
ALTER user <username> identified by sh;ALTER user <username> identified by '&pw';
uj5u.com熱心網友回復:
mark
uj5u.com熱心網友回復:
感謝分享,建議記錄在博客中。
uj5u.com熱心網友回復:
正準備要整理自己的博客呢,對CSDN還不太熟悉。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/21212.html
標籤:基礎和管理
上一篇:緊急求助
下一篇:update中if判斷復核用
