Oracle相关数据字典分析

46次阅读
没有评论

共计 3925 个字符,预计需要花费 10 分钟才能阅读完成。

本篇内容主要讲解“Oracle 相关数据字典分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让丸趣 TV 小编来带大家学习“Oracle 相关数据字典分析”吧!

问题描述:alert 日志发现报错主键冲突

ORA-12012: 自动执行作业 24 出错

ORA-00001: 违反唯一约束条件 (ADDEDTAXUSER.PK_PT_INOUTFLOW)

ORA-06512: 在 DWETL.SP_ETL_CONTROL , line 519

ORA-06512: 在 line 7

通过报错可以看出,是违反了 ADDEDTAXUSER 用户下的 PK_PT_INOUTFLOW 主键,并且是在执行 DWETL 用户下的 SP_ETL_CONTROL 东西的时候报错的;

那么接下来通过数据字典查出相关对象到底是什么,以及他们的创建语句:

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. 查看这个存储过程的创建语句,借助 dbms_metadata 程序包的 get_ddl 函数:

set line 200

set pagesize 0

set long 99999

select dbms_metadata.get_ddl(PROCEDURE , SP_ETL_CONTROL , DWETL) from dual;

至此查出了报错的所有的信息,可以给开发沟通了。。。。

通过这个问题,顺便总结下,常用的查询语句:

一:查询对象的创建语句:

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;

二:查询出数据库中的有 log 字段的信息,通过 DBA_TAB_COLUMNS 和 dba_lobs 数据字典查询:

SQL select  owner ,table_name ,COLUMN_NAME from  dba_lobs where  rownum

SQL  select  OWNER,TABLE_NAME,COLUMN_NAME,DATA_TYPE  from  DBA_TAB_COLUMNS where  DATA_TYPE like   %LOB% and rownum

SYS       VIEWCON$      CON_TEXT     CLOB

SYS       ECOL$      BINARYDEFVAL     BLOB

SYS       JIREFRESHSQL$      SQLTEXT     CLOB

四:以及一些常用的数据字典小结:

DBA_TABLES:描述数据库中所有相关的表。

DBA_ALL_TABLES:描述数据库中所有的对象以及相关的表。

USER_TABLES:描述数据库中当前用户拥有的相关的表。

USER_ALL_TABLES:描述数据库中当前用户拥有的对象以及相关的表。

ALL_TABLES:描述数据库中所有的用户可以访问的相关的表。

ALL_ALL_TABLES:描述数据库中所有的用户可以访问的对象以及相关的表。

DBA_TAB_COLUMNS:描述数据库中所有表的列属性。

USER_TAB_COLUMNS:描述数据库中当前用户拥有的表的列属性。

ALL_TAB_COLUMNS:描述数据库中所有用户可以访问的表的列属性。

DBA_CONSTRAINTS:描述数据库中所有表的约束和属性。

DBA_CONS_COLUMNS:包含在 DBA_CONSTRAINTS 约束定义中的可访问的列的信息。

ALL_CONSTRAINTS:描述数据库中所有用户可以访问的表的约束和属性。

ALL_CONS_COLUMNS:包含在 ALL_CONSTRAINTS 约束定义的可访问的列的信息。

USER_CONSTRAINTS:描述数据库中所有当前用户拥有的表的约束的属性。

USER_CONS_COLUMNS:包含在 USER_CONSTRAINTS 约束定义的可访问的列的信息。

DBA_SEQUENCES:数据库中所有序列的描述。

ALL_SEQUENCES:描述数据库中所有用户可以访问的序列的描述。

USER_SEQUENCES:描述数据库中所有当前用户拥有的序列的描述。

DBA_INDEXES:描述数据库中所有的索引的属性。

ALL_INDEXES:描述数据库中所有用户可以访问的索引的属性。

USER_INDEXES:描述数据库中所有当前用户拥有的索引的属性。

最后介绍下:

1)ALL_TABLES、user_tables 和 dba_tables 的区别?

dba_tables : 系统里所有的表的信息,需要 DBA 权限才能查询的视图(数据字典视图)

all_tables : 当前用户有权限的表的信息(只要对某个表有任何权限,即可在此视图中看到表的相关信息)

user_tables: 当前用户名下的表的信息

所以以上 3 个视图中,user_tables 的范围最小,all_tables 看到的东西稍多一些,而 dba_tables 看到最多的信息;

2)数据字典视图 (dba_)和动态性能视图(v$) 的区别?

数据字典视图反映了数据库的信息,如数据库的物理结构和逻辑结构信息,用户和权限信息以及

数据库对象的信息,如表、视图、索引、存储程序、约束等,这些信息不会随着数据库的运行而改变,除非人为操作,数据字典视图中的信息是静态的,来自数据字典基表,它反映的是数据库的信息,这些信息不会因为数据库服务器的关闭而消失。

而动态性能视图则主要反映了实例的信息,并且动态性能视图中的信息则是动态变化的,它反映了实例的实际运行情况,这些信息来自 SGA 或者控制文件,随着实例的关闭和重新启动,这些信息将重新产生。

到此,相信大家对“Oracle 相关数据字典分析”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-20发表,共计3925字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)