oracle數據字典
1.概念
數據字典是oracle數據庫用來存儲數據庫結構信息的地方。
數據字典是用來描述數據庫數據的組織方式的,由表和視圖組成。
數據字典基表是在任何 Oracle 數據庫中建立的第一批對象。
全部數據庫的數據字典表和視圖都存儲在SYSTEM表空間中。
因爲當數據庫打開時,SYSTEM 表空間始終處於聯機狀態 ,因此當數據庫打開時,數據字典老是可用的。
Oracle數據庫的SYS用戶,擁有數據字典中的全部基表和用戶可訪問視圖。
數據字典基表中的數據,對於Oracle 數據庫發揮正常功能是必要的。
所以,只應當由數據庫寫入或更改數據字典信息。
不管什麼時候,任何數據庫用戶都不該改變SYS模式中的錶行或模式對象,由於這種行爲可能會危及數據完整性。
安全管理員必須嚴格控制這個最重要的賬戶。
修改或操做數據字典表中的數據,可能會永久性地對數據庫操做形成負面影響。
在數據庫運行期間,數據庫讀取數據字典,以肯定存在模式對象,且用戶對它們具備適當的訪問權限。
Oracle 數據庫也會不斷地更新數據字典,以反映對數據庫結構、審計、受權、和數據等所作的更改。
系統提供的DICTIONARY視圖包含全部數據字典視圖的名稱和簡短說明。
select * from dictionary order by table_name; --2553sql
2.分類
數據字典視圖分爲3類:
2.1 user_*(當前用戶所擁有對象的有關信息)
包括用戶所建立的模式對象的元數據,只顯示與該用戶相關的行,
除隱含的OWNER列外,與其餘視圖具備相同的列。
select count(1) from dictionary where table_name like 'USER_%'; --375數據庫
2.2 all_*(當前用戶可訪問對象的信息)
包括用戶自己擁有的模式對象以外,還包括該用戶經過公共或顯式授予的特權及角色所能訪問的模式對象信息。
select count(1) from dictionary where table_name like 'ALL_%'; --356express
2.3 dba_*(數據庫中全部對象的信息)
具備DBA_前綴的視圖顯示在整個數據庫中的全部相關信息。DBA_ 視圖僅用於管理員。
select count(1) from dictionary where table_name like 'DBA_%'; --705c#
查詢數據字典數據時使用大寫字母。可用upper\lower函數轉換。
一下以user_*實例舉例(如沒有user_*,則依次以all_*、dba_*舉例)。緩存
3.類別
3.1 表、視圖
user_tables 關係表
user_tab_cols 列
user_tab_columns 表列
user_tab_comments 表的註釋
user_col_comments 表和視圖的列的註釋
user_updatable_columns 表和視圖中的列是否能夠被DML
user_views 視圖 安全
3.2 約束
user_constraints 表的約束
user_cons_columns 表的約束的列服務器
3.3 索引
user_indexes 索引
user_ind_columns 索引列
user_ind_expressions 索引的函數索引表達式
user_ind_statistics 索引統計信息session
3.4 子程序、觸發器
user_procedures 子程序名(包括過程、函數、包)
user_arguments 子程序參數(包括過程、函數、包)
user_triggers 觸發器
user_trigger_cols 觸發器的列
user_dependencies 對象間的依賴 oracle
3.5 源代碼和編譯錯誤
user_source 包,包體,函數,過程,對象類型,對象類型體的源代碼
user_errors 視圖和包,包體,函數,過程的編譯錯誤app
3.6 數據庫對象
user_sequences 序列
user_synonyms 替代名(同義詞)
user_jobs 數據庫任務
user_db_links 數據庫鏈接
all_directories 目錄
user_libraries 庫(字典)
3.7 集合、LOB、對象類型和對象表
user_coll_types 集合類型
user_lobs LOB
user_types 對象類型
user_type_attrs 對象類型的屬性
user_type_methods 對象類型的方法
user_object_tables 對象表
user_method_params 對象類型方法的參數
user_method_results 對象類型方法的返回值
3.8 分區和子分區
user_part_tables 已分區表
user_tab_partitions 表的分區
user_tab_subpartitions 表的子分區
user_part_indexes 已分區索引
user_ind_partitions 索引分區
user_ind_subpartitions 索引子分區
user_part_lobs 表中的LOB數據分區
user_lob_partitions LOB分區
user_lob_subpartitions LOB子分區
user_part_key_columns 已分區對象的分區關鍵字列
user_subpart_key_columns 使用組合範圍/散列法分區的表的子分區關鍵字列
user_part_col_statistics 表分區統計和其餘信息
user_subpart_col_statistics 表子分區的列統計
user_part_histograms 表的分區的直方圖
user_subpart_histograms 表的子分區的直方圖
3.9 權限和受權
user_sys_privs 用戶系統權限
user_tab_privs 授予做爲擁有者、受權者、權限受讓者對象的權限
user_tab_privs_made 授予當前用戶對象的權限
all_tab_privs_recd 授予做爲權限受讓者的用戶對象的權限
user_col_privs 授予做爲擁有者、受權者、或受讓者的用戶的可授訪問表或視圖列的權限
user_col_privs_made 授予當前用戶表或視圖列的權限
user_col_privs_recd 授予做爲權限受讓者用戶表或視圖列權限
3.10 統計和審計
user_tab_col_statistics 表列的統計
user_tab_histograms 表和視圖的直方圖
audit_actions 審計跟蹤類型碼的說明
oracle動態性能視圖
1.定義
在Oracle數據庫的操做過程當中,它會維護一組記錄當前數據庫活動的虛擬表(視圖),這些視圖稱爲動態性能視圖。
動態性能視圖在數據庫處於打開狀態和使用過程當中會不斷更新。
動態性能視圖以V$做爲前綴。
動態性能視圖包含如下信息:
系統和會話參數;
內存使用和分配;
文件狀態(包括RMAN備份文件);
工做和任務的進度;
SQL運行;
統計和度量。
2.動態性能視圖用途:
Oracle 企業管理器使用這些視圖,來獲取有關數據庫的信息。
管理員可使用這些視圖,用於性能監控和調試。
https://localhost:1158/em
3.動態性能視圖分類
動態性能視圖不能被數據庫管理員更改或刪除,只能執行查詢操做。
針對於單實例數據庫和數據庫集羣,動態性能視圖分爲兩類:
3.1 V$ 用於單實例數據庫
select count(1) from dictionary where table_name like 'V$%'; --600
3.2 GV$ 用於數據庫集羣
在 Oracle 應用集羣 (Oracle RAC)中,查詢GV$ 視圖會從全部合適的數據庫實例中檢索其 V$ 視圖信息。
對幾乎全部的 V$ 視圖,都存在一個相應的GV$ 視圖。
select count(1) from dictionary where table_name like 'GV$%'; --478
使用數據庫配置助手 (DBCA) 建立數據庫時, Oracle 會自動建立數據字典。
Oracle 數據庫將自動運行catalog.sql 腳本,其中包含用於動態性能視圖的視圖和公共同義詞的定義。
E:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\catalog.sql
4.動態性能視圖的存儲
動態性能視圖基於從數據庫內存結構生成的虛擬表。所以,他們不是存儲在數據庫中的常規表。
因爲數據是動態更新的,因此不能保證視圖的讀一致性。
由於動態性能視圖並非真正的表,其數據取決於數據庫和實例的狀態。
例如,當數據庫已啓動但未裝入時,能夠查詢 v$instance和 v$bgprocess。
可是,直到數據庫已裝入時,才能查詢v$datafile。
4.1 數據庫服務的啓動
startup nomount --加載參數文件
alter database mount
alter database open
startup mount dbname --加載控制文件
alter database open
startup open dbname --加載數據文件
startup
4.2 數據庫服務的關閉
shutdown immediate
5.舉例
5.1 v$version
查詢數據庫版本信息
select * from v$version;
5.2 v$sgainfo
查詢sga中的相關信息
select * from v$sgainfo
5.3 v$parameter
查詢初始化參數相關信息
select * from v$parameter
5.4 v$statname統計名(及分類)
select distinct class from v$statname
class取值解釋:
1 表明事例活動
select * from v$statname where class="1";
2 表明redo buffer活動
select * from v$statname where class="2";
4 表明鎖
select * from v$statname where class="4";
8 表明數據緩衝活動
select * from v$statname where class="8";
--16 表明os活動
select * from v$statname where class="16";
32 表明並行活動
select * from v$statname where class="32";
33 32+1
select * from v$statname where class="33";
40 32+8
select * from v$statname where class="40";
64 表明表訪問
select * from v$statname where class="64";
72 64+8
select * from v$statname where class="72";
128 表明調試信息
select * from v$statname where class="128";
192 128+64
select * from v$statname where class="192";
select * from v$sesstat where statistic#=6 and value>0;
5.5 v$instance
這個v$視圖顯示當前實例的狀態。
select * from v$instance;
系統總的運行時間:
select (sysdate - startup_time)*24*60*60 as seconds from v$instance;
5.6 v$datafile 數據文件
視圖包含有關數據文件的信息。
select * from v$datafile
v$tempfile 臨時文件
select * from v$tempfile;
v$filestat 數據文件統計信息
select * from v$filestat;
v$tempstat 臨時文件統計信息
select * from v$tempstat;
v$segstat 段統計信息
select * from v$segstat where obj#=(select object_id from dba_objects where object_name='EMP' and owner='SCOTT');
5.7 v$fixed_table
動態性能表信息
select * from v$fixed_table where type='TABLE';
動態性能視圖信息
select * from v$fixed_table where type='VIEW';
5.8 執行計劃相關視圖
v$sql_plan , v$sql_plan_statistics, v$sqltext_with_newlines
5.11 v$session和v$session_wait
v$session視圖記錄了當前鏈接的session的信息,
包括:用戶名、鏈接主機、session正在執行的sql的sql_address、sql_hash_value等信息。
select * from v$session where program='plsqldev.exe' and username='SYS'
v$session_wait視圖記錄當前鏈接session正在等待的資源信息
select * from v$session_wait
5.12 v$sesstat 和 v$sysstat
v$sesstat視圖記錄session的統計信息,包括session的邏輯數據讀取、物理數據讀取、排序操做等。
v$sysstat視圖記錄記錄的是整個數據庫系統的統計信息。
select * from v$sesstat where statistic#=6 and value>0;
select * from v$sysstat where statistic#=6 and value>0;
5.13 v$session_event 和 v$system_event
v$session_event視圖記錄了當前鏈接session的等待事件。
v$system_event視圖記錄整個數據庫系統自啓動以來的等待事件彙總。
select * from v$session_event
select * from v$system_event
事件名稱
select * from v$event_name
select * from v$event_name where name='db file scattered read';
當前session的累計等待:
select * from v$session_event where sid =(select sid from v$mystat where rownum<2)
v$session_wait是正在等待,當session結束後,等待事件被記入v$session_event 。
5.14 v$process
oracle相關進程
select * from v$process
進程解釋:
ARC0 archive:--歸檔操做
做用:發生日誌切換時把寫滿的聯機日誌文件拷貝到歸檔目錄中。
LGWR寫日誌寫到須要覆蓋重寫的時候,觸發ARCH進程去轉移日誌文件,複製出去造成歸檔日誌文件,以避免日誌丟失。
觸發條件:日誌切換時被LGWR喚醒。
設置:經過參數LOG_ARCHIVE_MAX_PROCESSES設置oracle的ARCH個數。
CKPT checkpoint:--檢查點事件
做用:維護數據庫一致性狀態。
檢測點時刻保持數據文件與SGA中的內容一致,這須要和DBW0、LGWR 一塊兒工做。
DBWR寫入髒數據,同時觸發LGWR進程。
CKPT更新控制文件中的檢查點記錄。
經過設置FAST START MTTR TARGET參數調整來控制CKPT的觸發時間。
觸發條件:日誌切換(log switch)會觸發檢查點。
D000 --共享服務器調度器(Dnnn)
DBRM
DBW0 database write--數據寫入
做用:把SGA中被修改的數據同步到磁盤文件中,保證Buffer Cache中有足夠的空閒數據塊數量。
若是LGWR出現故障,DBWR不會遵從CKPT命令罷工,
由於Oracle在將數據緩存區數據寫到磁盤前,會先進行日誌緩衝區寫進日誌文件的操做,
並耐心的等待其先完成,纔會去完成這個內存刷到磁盤的動做。
觸發條件: 一、檢查點CKPT
二、一個服務進程在設定的時間內沒有找到空閒塊
三、每三秒自動喚醒一次。
設置:DB_WRITER_PROCESS用來定義DBWn進程數量。
(commit命令只是把記錄修改寫入日誌文件,不是把修改後的數據寫入數據文件)
DIA0
DIAG --可診斷性守護(Diagnosabilitydaemon,DIAG)進程
DIAG 只能用於RAC 環境中。它負責監視實例的整體「健康狀況」,並捕獲處理實例失敗時所需的信息。
GENO
CJQ0 job queue coordinator:--做業隊列協調器(CJQ0)
CJQ0 在做業隊列表中看到須要運行的做業時,會啓動Jnnn 進程。
J000 --做業隊列進程
做業隊列進程監視一個做業表,這個做業表告訴它什麼時候須要刷新系統中的各個快照。
LGWR log write:--日誌文件寫入
做用:把log buffer中的日誌內容寫入聯機的日誌文件中,釋放log用戶buffer空間。
觸發條件:
一、用戶發出commit命令,把redo log buffer中的記錄寫入日誌文件,寫入一條提交的記錄
二、三秒定時喚醒。
三、日誌緩衝區log buffer超過1/3,或日誌數量超過1M。
四、DBWR進程觸發:DBWn視圖將髒數據塊寫入磁盤先檢測他的相關redo記錄是否寫入聯機日誌文件,
若是沒有就通知LGWR進程。在oracle中稱爲提早寫機制,redo記錄先於數據記錄被寫入磁盤
五、聯機日誌文件切換也將觸發LGWR。
MMAN memory manager--自動內存管理
做用:MMAN 進程用於協調共享內存中各組件(默認緩衝區池、共享池、Java 池和大池)的大小設置和大小調整。
每分鐘都檢查AWR性能信息,並根據這些信息來決定SGA組件最佳分佈。
設置:STATISTICS_LEVEL統計級別
SGA_TARGET:SGA總大小
MMNL manageability monitor light--輕量級的MMON
MMNL進程會根據調度從SGA 將統計結果刷新輸出至數據庫表。
MMON manageability monitor--AWR主要的進程
做用:一、收集AWR必須的統計數據,把統計數據寫入磁盤。
二、生成server--generated報警
每小時把shared pool中的統計信息寫入磁盤,或者shared pool佔用超過15%。
PMON process monitor--維護用戶進程 進程監控器
做用:一、發現用戶進程異常終止,並進行清理。釋放佔用資源。(清理異常終止用戶使用的鎖)
二、向監聽程序動態的註冊實例。
觸發條件:定時被喚醒,其餘進程也會主動喚醒它。
PSP0
Q000
QMNC
RECO Distributed Database Recovery -- 用於分佈式數據庫的恢復
某個應用跨越多個數據庫,須要都提交成功,事務纔會成功,不然所有回滾。
S000 --共享服務器(Snnn)進程
SMCO
SMON system monitor--實例維護進程 系統監控器
做用:一、負責實例恢復,前滾(Roll Forward)恢復到實例關閉的狀態,使用最後一次檢查點後的日誌進程重作。
這時包括提交和未提交的事務。打開數據庫,進行回滾(Roll Back):回滾未提交的事務。
二、負責清理臨時段,以釋放空間
觸發條件:按期被喚醒或者被其餘事務主動喚醒。
VKRM
VKTM
W000
LCKn 僅適用於RAC數據庫,最多可有10個進程(LCK0,LCK1,...,LCK9),用於實例間的封鎖。
RVWR --恢復寫入器(Recovery Writer)
負責維護閃回恢復區中塊的「前」映像,要與FLASHBACKDATABASE 命令一塊兒使用。
CTWR --修改跟蹤進程(Change Tracking Process)
做用:跟蹤數據塊的變化,把數據塊地址記錄到 change_tracking file文件中。
RMAN的增量備份將使用這個文件來肯定那些數據塊發生了變化,並進行備份。
5.15 v$sql 和v$sqltext SQL執行信息
select * from v$sql where parsing_schema_name='SCOTT' and sql_text like '%emp%';
select * from v$sqlarea where sql_id='ab5j0f528hk26'
5.17 v$lock 鎖等待信息
select * from v$lock;
select * from v$enqueue_stat;
select * from v$enqueue_lock;
5.18 v$latch_children 閂競爭信息
select * from v$latch;
select * from v$latch_children;
5.19 v$bh buffer信息
select * from v$bh where file#=4 and block#=
(select header_block from dba_segments where owner='SCOTT' and segment_name='EMP');
6.oracle性能檢測sql語句
6.1. 監控事例的等待
select event,sum(decode(wait_time,0,0,1)) prev,sum(decode(wait_time,0,1,0)) curr,count(*) tot
from v$session_wait group by event order by 4;
註解:order by 4 指按第4列進行排序,
session在數據庫中當前正在等待什麼,每個鏈接到實例的session都對應一條記錄。
6.2 回滾段的爭用狀況
select name, waits, gets, waits/gets ratio
from v$rollstat a, v$rollname b
where a.usn = b.usn;
6.3 監控表空間的 I/O 比例
select df.tablespace_name name,df.file_name,f.phyrds pyr,f.phyblkrd pbr,f.phywrts pyw, f.phyblkwrt pbw
from v$filestat f, dba_data_files df
where f.file# = df.file_id
order by df.tablespace_name;
6.4 監控文件系統的 I/O 比例
select substr(a.file#,1,2) "#", substr(a.name,1,30) "Name",a.status, a.bytes, b.phyrds, b.phywrts
from v$datafile a, v$filestat b
where a.file# = b.file#;
6.5 監控 SGA 的命中率
select a.value + b.value "logical_reads", c.value "phys_reads",round(100 * ((a.value+b.value)-c.value) / (a.value+b.value)) "BUFFER HIT RATIO"
from v$sysstat a, v$sysstat b, v$sysstat c
where a.statistic# = 38 and b.statistic# = 39 and c.statistic# = 40;
6.6 監控 SGA 中字典緩衝區的命中率
select parameter,gets,Getmisses,getmisses/(gets+getmisses)*100 "miss ratio",(1-getmisses/(gets+getmisses))*100 "Hit ratio"
from v$rowcache
where gets+getmisses <>0
group by parameter,gets,getmisses;
6.7 監控 SGA 中共享緩存區的命中率,應該小於1%
select sum(pins) "Total Pins", sum(reloads) "Total Reloads",sum(reloads)/sum(pins) *100 libcache from v$librarycache;
6.8 顯示全部數據庫對象的類別和大小
select count(name) num_instances ,type,sum(source_size) source_size,sum(parsed_size) parsed_size ,sum(code_size) code_size ,sum(error_size) error_size,
sum(source_size) +sum(parsed_size) +sum(code_size) +sum(error_size) size_required
from dba_object_size
group by type order by 2;
6.9 監控 SGA 中重作日誌緩存區的命中率,應該小於1%
SELECT name, gets, misses, immediate_gets, immediate_misses,Decode(gets,0,0,misses/gets*100) ratio1,
Decode(immediate_gets+immediate_misses,0,0,immediate_misses/(immediate_gets+immediate_misses)*100) ratio2
FROM v$latch
WHERE name IN ('redo allocation', 'redo copy');
6.10 監控內存和硬盤的排序比率,最好使它小於 .10,增長 sort_area_size
SELECT name, value FROM v$sysstat WHERE name IN ('sorts (memory)', 'sorts (disk)');
6.11 監控當前數據庫誰在運行什麼SQL語句
SELECT osuser, username, sql_text from v$session a, v$sqltext b
where a.sql_address =b.address order by address, piece;
6.12 監控 MTS
select busy/(busy+idle) "shared servers busy" from v$dispatcher;
此值大於0.5時,參數需加大
6.13 找ORACLE字符集(也能夠用來查看日期格式)
select * from sys.props$ where name='NLS_CHARACTERSET';
6.14 在某個用戶下找全部的索引
select user_indexes.table_name, user_indexes.index_name,uniqueness,column_name
from user_ind_columns, user_indexes
where user_ind_columns.index_name = user_indexes.index_name and user_ind_columns.table_name = user_indexes.table_name
order by user_indexes.table_type,user_indexes.table_name,user_indexes.index_name, column_position;
6.15 表、索引的存儲狀況檢查
select segment_name,sum(bytes),count(*) ext_cnt
from dba_extents
where owner='SCOTT' and segment_type='TABLE'
group by owner,segment_name;
select segment_name,sum(bytes),count(*) ext_cnt
from dba_extents
where owner='SCOTT' and segment_type='INDEX'
group by segment_name;
6.16. 碎片程度
select tablespace_name,count(tablespace_name) from dba_free_space
group by tablespace_name having count(tablespace_name)>10;
select * from
(select tablespace_name,block_id,bytes,blocks,'free space' segment_name from dba_free_space where tablespace_name='USERS'
union all
select tablespace_name,block_id,bytes,blocks,segment_name from dba_extents where tablespace_name='USERS')
order by block_id
7.oracle性能查證sql語句
--一、耗時長sql查證:--
select * from
(select sql_text,round(elapsed_time/1000000,2),
round(elapsed_time/1000000/executions,2) perelapsed_time,executions
from (select * from v$sql order by elapsed_time desc) where rownum<26)
order by perelapsed_time desc;
--二、佔用cpu時間長的sql查證:--
select * from
(select sql_text,round(cpu_time/1000000,2),
round(cpu_time/1000000/executions,2) percpu_time,executions
from (select * from v$sql order by cpu_time desc) where rownum<26)
order by percpu_time desc;
--三、磁盤讀數據量大sql查證:--
select sql_text,disk_reads,executions
from (select * from v$sqlarea order by disk_reads desc) where rownum<26;
--四、獲取超時sql--
select username,sid,opname, round(sofar*100 / totalwork,0) progress, time_remaining,sql_text
from v$session_longops,v$sql where sql_address = address and sql_hash_value = hash_value
order by start_time;
--五、查看錶空間大小和使用狀況all--
查看錶空間使用狀況的SQL語句:
select a.tablespace_name "表空間名",total 表空間大小,free 表空間剩餘大小,
(total-free) 表空間使用大小, round((total-free)/total,4)*100 "使用率 %",
(select file_name from dba_data_files where tablespace_name=a.tablespace_name and rownum<2) "文件名"
from
(select tablespace_name,sum(bytes) free from dba_free_space group by tablespace_name) a,
(select tablespace_name,sum(bytes) total from dba_data_files group by tablespace_name) b
where a.tablespace_name=b.tablespace_name
--建立表空間及數據文件
create tablespace iests datafile 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\IES_1.DBF' size 200m reuse autoextend on next 50m;
--給表空間添加數據文件
alter tablespace iests add datafile 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\IES_2.DBF' size 200m reuse autoextend on next 50m;
--擴展已有數據文件的大小
alter database datafile 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\SYSTEM01.DBF' resize 600M;
--六、查看臨時表空間狀況--
SELECT d.status "Status", d.tablespace_name "Name", d.contents "Type", d.extent_management "Extent Management",
TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99,999,990.900') "Size (M)",
NVL(t.bytes, 0)/1024/1024 ||'/'||NVL(a.bytes/1024/1024, 0) "Used (M)",
TO_CHAR(NVL(t.bytes / a.bytes * 100, 0), '990.00') "Used %"
FROM sys.dba_tablespaces d,
(select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name) a,
(select tablespace_name, sum(bytes_cached) bytes from v$temp_extent_pool group by tablespace_name) t
WHERE d.tablespace_name = a.tablespace_name(+)
AND d.tablespace_name = t.tablespace_name(+)
AND d.extent_management like 'LOCAL'
AND d.contents like 'TEMPORARY';
--七、查證外鍵沒有建索引的狀況--
select table_name, constraint_name,
cname1 || nvl2(cname2,','||cname2,null) ||
nvl2(cname3,','||cname3,null) || nvl2(cname4,','||cname4,null) ||
nvl2(cname5,','||cname5,null) || nvl2(cname6,','||cname6,null) ||
nvl2(cname7,','||cname7,null) || nvl2(cname8,','||cname8,null)
columns
from ( select b.table_name,
b.constraint_name,
max(decode( position, 1, column_name, null )) cname1,
max(decode( position, 2, column_name, null )) cname2,
max(decode( position, 3, column_name, null )) cname3,
max(decode( position, 4, column_name, null )) cname4,
max(decode( position, 5, column_name, null )) cname5,
max(decode( position, 6, column_name, null )) cname6,
max(decode( position, 7, column_name, null )) cname7,
max(decode( position, 8, column_name, null )) cname8,
count(*) col_cnt
from (select substr(table_name,1,30) table_name,
substr(constraint_name,1,30) constraint_name,
substr(column_name,1,30) column_name,
position
from user_cons_columns ) a,
user_constraints b
where a.constraint_name = b.constraint_name
and b.constraint_type = 'R'
group by b.table_name, b.constraint_name
) cons
where col_cnt > ALL
( select count(*)
from user_ind_columns i
where i.table_name = cons.table_name
and i.column_name in (cname1, cname2, cname3, cname4,
cname5, cname6, cname7, cname8 )
and i.column_position <= cons.col_cnt
group by i.index_name
) order by table_name;
--八、檢查被鎖的對象--
select l.object_id,l.session_id,l.oracle_username,l.locked_mode,o.object_name
from v$locked_object l,dba_objects o
where l.object_id=o.object_id;
--9. 查看鎖等待
select l.object_id,l.session_id,l.oracle_username,l.locked_mode,o.object_name,t.serial#
from v$locked_object l,dba_objects o,v$session t
where l.object_id=o.object_id and l.session_id=t.sid;
alter system kill session 'session_id,t.serial#';alter system kill session '138,403';