您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Oracle相關(guān)數(shù)據(jù)字典分析”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Oracle相關(guān)數(shù)據(jù)字典分析”吧!
問(wèn)題描述:alert日志發(fā)現(xiàn)報(bào)錯(cuò)主鍵沖突
ORA-12012: 自動(dòng)執(zhí)行作業(yè) 24 出錯(cuò)
ORA-00001: 違反唯一約束條件 (ADDEDTAXUSER.PK_PT_INOUTFLOW)
ORA-06512: 在 "DWETL.SP_ETL_CONTROL", line 519
ORA-06512: 在 line 7
通過(guò)報(bào)錯(cuò)可以看出,是違反了ADDEDTAXUSER用戶下的PK_PT_INOUTFLOW主鍵,并且是在執(zhí)行DWETL用戶下的SP_ETL_CONTROL東西的時(shí)候報(bào)錯(cuò)的;
那么接下來(lái)通過(guò)數(shù)據(jù)字典查出相關(guān)對(duì)象到底是什么,以及他們的創(chuàng)建語(yǔ)句:
1.首先查詢出這個(gè)主鍵屬于哪個(gè)表?
SQL> select OWNER,CONSTRAINT_NAME,TABLE_NAME from dba_constraints where CONSTRAINT_NAME='PK_PT_INOUTFLOW';
OWNER CONSTRAINT_NAME TABLE_NAME
------------------------------------------------------------ ------------------------------ -----------------------------ADDEDTAXUSER PK_PT_INOUTFLOW PT_INOUTFLOW
2.查詢這個(gè)主鍵在哪個(gè)表的那個(gè)字段上,可以通過(guò)dba_ind_columns 或者dba_cons_columns
SQL> select INDEX_OWNER,INDEX_NAME,TABLE_NAME,COLUMN_NAME from dba_ind_columns where INDEX_NAME='PK_PT_INOUTFLOW';
INDEX_OWNER INDEX_NAME COLUMN_NAME TABLE_NAME
------------------------------ ------------------------------ ------------------------------ ------------------------------
ADDEDTAXUSER PK_PT_INOUTFLOW PT_INOUTFLOW PK_INOUTFLOW
或者
SQL> select owner,CONSTRAINT_NAME,table_name,COLUMN_NAME from dba_cons_columns where CONSTRAINT_NAME='PK_PT_INOUTFLOW';
OWNER CONSTRAINT_NAME TABLE_NAME COLUMN_NAME
------------------------------ ------------------------------ ------------------------------
ADDEDTAXUSER PK_PT_INOUTFLOW PT_INOUTFLOW PK_INOUTFLOW
3.然后查看DWETL用戶下的SP_ETL_CONTROL 是個(gè)什么東西?
可以看出是存儲(chǔ)過(guò)程,如下:
SQL> select OWNER,OBJECT_NAME,OBJECT_TYPE from dba_objects where OBJECT_NAME='SP_ETL_CONTROL';
OWNER OBJECT_NAME OBJECT_TYPE
------------------------------ --------------------------------------------------------------------------------------------
DWETL SP_ETL_CONTROLPROCEDURE
4.查看這個(gè)存儲(chǔ)過(guò)程的創(chuàng)建語(yǔ)句,借助dbms_metadata程序包的get_ddl函數(shù):
set line 200
set pagesize 0
set long 99999
select dbms_metadata.get_ddl('PROCEDURE','SP_ETL_CONTROL','DWETL') from dual;
至此查出了報(bào)錯(cuò)的所有的信息,可以給開(kāi)發(fā)溝通了。。。。
通過(guò)這個(gè)問(wèn)題,順便總結(jié)下,常用的查詢語(yǔ)句:
一:查詢對(duì)象的創(chuàng)建語(yǔ)句:
select dbms_metadata.get_ddl('TABLE','TABLE_NAME','TABLE_OWNER') from dual;
select dbms_metadata.get_ddl('INDEX','INDEX_NAME','INDEX_OWNER') from dual;
select dbms_metadata.get_ddl('VIEW','VIEW_NAME','VIEW_OWNER') from dual;
select dbms_metadata.get_ddl('PROCEDURE','PROCEDURE_name','PROCEDURE_owner') from dual;
select dbms_metadata.get_ddl('FUNCTION','FUNCTION_NAME','FUNCTION_OWNER') from dual;
二:查詢出數(shù)據(jù)庫(kù)中的有l(wèi)og字段的信息,通過(guò)DBA_TAB_COLUMNS和dba_lobs數(shù)據(jù)字典查詢:
SQL>select owner ,table_name ,COLUMN_NAME from dba_lobs where rownum<10;
SQL> select OWNER,TABLE_NAME,COLUMN_NAME,DATA_TYPE from DBA_TAB_COLUMNS where DATA_TYPE like '%LOB%' and rownum<10;
SYS VIEWCON$ CON_TEXT CLOB
SYS ECOL$ BINARYDEFVAL BLOB
SYS JIREFRESHSQL$ SQLTEXT CLOB
四:以及一些常用的數(shù)據(jù)字典小結(jié):
DBA_TABLES:描述數(shù)據(jù)庫(kù)中所有相關(guān)的表。
DBA_ALL_TABLES:描述數(shù)據(jù)庫(kù)中所有的對(duì)象以及相關(guān)的表。
USER_TABLES:描述數(shù)據(jù)庫(kù)中當(dāng)前用戶擁有的相關(guān)的表。
USER_ALL_TABLES:描述數(shù)據(jù)庫(kù)中當(dāng)前用戶擁有的對(duì)象以及相關(guān)的表。
ALL_TABLES:描述數(shù)據(jù)庫(kù)中所有的用戶可以訪問(wèn)的相關(guān)的表。
ALL_ALL_TABLES:描述數(shù)據(jù)庫(kù)中所有的用戶可以訪問(wèn)的對(duì)象以及相關(guān)的表。
DBA_TAB_COLUMNS:描述數(shù)據(jù)庫(kù)中所有表的列屬性。
USER_TAB_COLUMNS:描述數(shù)據(jù)庫(kù)中當(dāng)前用戶擁有的表的列屬性。
ALL_TAB_COLUMNS:描述數(shù)據(jù)庫(kù)中所有用戶可以訪問(wèn)的表的列屬性。
DBA_CONSTRAINTS:描述數(shù)據(jù)庫(kù)中所有表的約束和屬性。
DBA_CONS_COLUMNS:包含在DBA_CONSTRAINTS約束定義中的可訪問(wèn)的列的信息。
ALL_CONSTRAINTS:描述數(shù)據(jù)庫(kù)中所有用戶可以訪問(wèn)的表的約束和屬性。
ALL_CONS_COLUMNS:包含在ALL_CONSTRAINTS約束定義的可訪問(wèn)的列的信息。
USER_CONSTRAINTS:描述數(shù)據(jù)庫(kù)中所有當(dāng)前用戶擁有的表的約束的屬性。
USER_CONS_COLUMNS:包含在USER_CONSTRAINTS約束定義的可訪問(wèn)的列的信息。
DBA_SEQUENCES:數(shù)據(jù)庫(kù)中所有序列的描述。
ALL_SEQUENCES:描述數(shù)據(jù)庫(kù)中所有用戶可以訪問(wèn)的序列的描述。
USER_SEQUENCES:描述數(shù)據(jù)庫(kù)中所有當(dāng)前用戶擁有的序列的描述。
DBA_INDEXES:描述數(shù)據(jù)庫(kù)中所有的索引的屬性。
ALL_INDEXES:描述數(shù)據(jù)庫(kù)中所有用戶可以訪問(wèn)的索引的屬性。
USER_INDEXES:描述數(shù)據(jù)庫(kù)中所有當(dāng)前用戶擁有的索引的屬性。
最后介紹下:
1)ALL_TABLES、user_tables和dba_tables的區(qū)別?
dba_tables : 系統(tǒng)里所有的表的信息,需要DBA權(quán)限才能查詢的視圖(數(shù)據(jù)字典視圖)
all_tables : 當(dāng)前用戶有權(quán)限的表的信息(只要對(duì)某個(gè)表有任何權(quán)限,即可在此視圖中看到表的相關(guān)信息)
user_tables: 當(dāng)前用戶名下的表的信息
所以以上3個(gè)視圖中,user_tables的范圍最小,all_tables看到的東西稍多一些,而dba_tables看到最多的信息;
2)數(shù)據(jù)字典視圖(dba_)和動(dòng)態(tài)性能視圖(v$)的區(qū)別?
數(shù)據(jù)字典視圖反映了數(shù)據(jù)庫(kù)的信息,如數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)和邏輯結(jié)構(gòu)信息,用戶和權(quán)限信息以及
數(shù)據(jù)庫(kù)對(duì)象的信息,如表、視圖、索引、存儲(chǔ)程序、約束等,這些信息不會(huì)隨著數(shù)據(jù)庫(kù)的運(yùn)行而改變,除非人為操作,數(shù)據(jù)字典視圖中的信息是靜態(tài)的,來(lái)自數(shù)據(jù)字典基表,它反映的是數(shù)據(jù)庫(kù)的信息,這些信息不會(huì)因?yàn)閿?shù)據(jù)庫(kù)服務(wù)器的關(guān)閉而消失。
而動(dòng)態(tài)性能視圖則主要反映了實(shí)例的信息,并且動(dòng)態(tài)性能視圖中的信息則是動(dòng)態(tài)變化的,它反映了實(shí)例的實(shí)際運(yùn)行情況,這些信息來(lái)自SGA或者控制文件,隨著實(shí)例的關(guān)閉和重新啟動(dòng),這些信息將重新產(chǎn)生。
到此,相信大家對(duì)“Oracle相關(guān)數(shù)據(jù)字典分析”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。