溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Oracle相關(guān)數(shù)據(jù)字典分析

發(fā)布時(shí)間:2021-11-11 15:23:33 來(lái)源:億速云 閱讀:386 作者:iii 欄目:關(guān)系型數(shù)據(jù)庫(kù)

本篇內(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í)!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI