本篇內(nèi)容主要講解“Oracle相關(guān)數(shù)據(jù)字典分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Oracle相關(guān)數(shù)據(jù)字典分析”吧!
在靖州等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、成都做網(wǎng)站 網(wǎng)站設(shè)計制作按需求定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),全網(wǎng)整合營銷推廣,成都外貿(mào)網(wǎng)站制作,靖州網(wǎng)站建設(shè)費用合理。
問題描述:alert日志發(fā)現(xiàn)報錯主鍵沖突
ORA-12012: 自動執(zhí)行作業(yè) 24 出錯
ORA-00001: 違反唯一約束條件 (ADDEDTAXUSER.PK_PT_INOUTFLOW)
ORA-06512: 在 "DWETL.SP_ETL_CONTROL", line 519
ORA-06512: 在 line 7
通過報錯可以看出,是違反了ADDEDTAXUSER用戶下的PK_PT_INOUTFLOW主鍵,并且是在執(zhí)行DWETL用戶下的SP_ETL_CONTROL東西的時候報錯的;
那么接下來通過數(shù)據(jù)字典查出相關(guān)對象到底是什么,以及他們的創(chuàng)建語句:
1.首先查詢出這個主鍵屬于哪個表?
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.查詢這個主鍵在哪個表的那個字段上,可以通過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 是個什么東西?
可以看出是存儲過程,如下:
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.查看這個存儲過程的創(chuàng)建語句,借助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;
至此查出了報錯的所有的信息,可以給開發(fā)溝通了。。。。
通過這個問題,順便總結(jié)下,常用的查詢語句:
一:查詢對象的創(chuàng)建語句:
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ù)庫中的有l(wèi)og字段的信息,通過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ù)庫中所有相關(guān)的表。
DBA_ALL_TABLES:描述數(shù)據(jù)庫中所有的對象以及相關(guān)的表。
USER_TABLES:描述數(shù)據(jù)庫中當(dāng)前用戶擁有的相關(guān)的表。
USER_ALL_TABLES:描述數(shù)據(jù)庫中當(dāng)前用戶擁有的對象以及相關(guān)的表。
ALL_TABLES:描述數(shù)據(jù)庫中所有的用戶可以訪問的相關(guān)的表。
ALL_ALL_TABLES:描述數(shù)據(jù)庫中所有的用戶可以訪問的對象以及相關(guān)的表。
DBA_TAB_COLUMNS:描述數(shù)據(jù)庫中所有表的列屬性。
USER_TAB_COLUMNS:描述數(shù)據(jù)庫中當(dāng)前用戶擁有的表的列屬性。
ALL_TAB_COLUMNS:描述數(shù)據(jù)庫中所有用戶可以訪問的表的列屬性。
DBA_CONSTRAINTS:描述數(shù)據(jù)庫中所有表的約束和屬性。
DBA_CONS_COLUMNS:包含在DBA_CONSTRAINTS約束定義中的可訪問的列的信息。
ALL_CONSTRAINTS:描述數(shù)據(jù)庫中所有用戶可以訪問的表的約束和屬性。
ALL_CONS_COLUMNS:包含在ALL_CONSTRAINTS約束定義的可訪問的列的信息。
USER_CONSTRAINTS:描述數(shù)據(jù)庫中所有當(dāng)前用戶擁有的表的約束的屬性。
USER_CONS_COLUMNS:包含在USER_CONSTRAINTS約束定義的可訪問的列的信息。
DBA_SEQUENCES:數(shù)據(jù)庫中所有序列的描述。
ALL_SEQUENCES:描述數(shù)據(jù)庫中所有用戶可以訪問的序列的描述。
USER_SEQUENCES:描述數(shù)據(jù)庫中所有當(dāng)前用戶擁有的序列的描述。
DBA_INDEXES:描述數(shù)據(jù)庫中所有的索引的屬性。
ALL_INDEXES:描述數(shù)據(jù)庫中所有用戶可以訪問的索引的屬性。
USER_INDEXES:描述數(shù)據(jù)庫中所有當(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)限的表的信息(只要對某個表有任何權(quán)限,即可在此視圖中看到表的相關(guān)信息)
user_tables: 當(dāng)前用戶名下的表的信息
所以以上3個視圖中,user_tables的范圍最小,all_tables看到的東西稍多一些,而dba_tables看到最多的信息;
2)數(shù)據(jù)字典視圖(dba_)和動態(tài)性能視圖(v$)的區(qū)別?
數(shù)據(jù)字典視圖反映了數(shù)據(jù)庫的信息,如數(shù)據(jù)庫的物理結(jié)構(gòu)和邏輯結(jié)構(gòu)信息,用戶和權(quán)限信息以及
數(shù)據(jù)庫對象的信息,如表、視圖、索引、存儲程序、約束等,這些信息不會隨著數(shù)據(jù)庫的運行而改變,除非人為操作,數(shù)據(jù)字典視圖中的信息是靜態(tài)的,來自數(shù)據(jù)字典基表,它反映的是數(shù)據(jù)庫的信息,這些信息不會因為數(shù)據(jù)庫服務(wù)器的關(guān)閉而消失。
而動態(tài)性能視圖則主要反映了實例的信息,并且動態(tài)性能視圖中的信息則是動態(tài)變化的,它反映了實例的實際運行情況,這些信息來自SGA或者控制文件,隨著實例的關(guān)閉和重新啟動,這些信息將重新產(chǎn)生。
到此,相信大家對“Oracle相關(guān)數(shù)據(jù)字典分析”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!