Oracle数据字典专题研究成果物.doc

上传人:laozhun 文档编号:2395020 上传时间:2023-02-17 格式:DOC 页数:77 大小:1.86MB
返回 下载 相关 举报
Oracle数据字典专题研究成果物.doc_第1页
第1页 / 共77页
Oracle数据字典专题研究成果物.doc_第2页
第2页 / 共77页
Oracle数据字典专题研究成果物.doc_第3页
第3页 / 共77页
Oracle数据字典专题研究成果物.doc_第4页
第4页 / 共77页
Oracle数据字典专题研究成果物.doc_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《Oracle数据字典专题研究成果物.doc》由会员分享,可在线阅读,更多相关《Oracle数据字典专题研究成果物.doc(77页珍藏版)》请在三一办公上搜索。

1、Oracle数据字典专题研究成果物目 录Oracle数据字典专题研究成果物1目 录11oracle数据字典基础31.1数据字典的重要性31.2oracle数据库体系结构简介31.3oracle数据库的启动流程简介51.4数据字典的概念61.5数据字典中保存了哪些信息61.6数据字典的主要用途61.7数据字典的组成61.8数据字典的实质71.9数据字典是如何生成的71.10user_*、all_*、dba_*三类数据字典视图使用71.11数据库在不同状态下可访问的数据字典81.12权限操作基础知识81.13触发器基础知识92数据字典实例92.1数据字典相关数据字典视图92.1.1dictiona

2、ry92.1.2DICT_COLUMNS112.2数据库基础知识112.2.1GLOBAL_NMAE112.2.2ALL_CATALOG122.2.3ALL_DEPENDENCIES122.2.4ALL_ERRORS152.2.5ALL_OBJECTS182.2.6DBA_TS_QUOTAS202.2.7DBA_OBJECT_SIZE232.2.8V$ACCESS242.2.9V$INSTANCE252.2.10V$VERSION262.2.11V$NLS_PARAMETERS272.2.12V$PARAMETER282.2.13V$SESSION302.3安全性342.3.1ALL_USER

3、S342.3.2DBA_ROLES342.3.3DBA_ROLE_PRIVS352.3.4DBA_SYS_PRIVS352.3.5DBA_TAB_PRIVS352.3.6TABLE_PRIVILEGES362.4表(table)、视图(view)、列(column)和约束(constraints)372.4.1ALL_TABLES372.4.2ALL_TAB_COLUMNS402.4.3ALL_TAB_COMMENTS412.4.4ALL_TAB_PRIVS422.4.5ALL_VIEWS442.4.6ALL_COL_COMMENTS452.4.7ALL_CONSTRAINTS462.4.8A

4、LL_CONS_COLUMNS472.5dblink,索引、序列、同义词、代码、触发器482.5.1ALL_DB_LINKS482.5.2ALL_INDEXES482.5.3ALL_SEQUENCES512.5.4ALL_SYNONYMS522.5.5ALL_SOURCE522.5.6ALL_TRIGGERS532.5.7ALL_TRIGGER_COLS552.6物理存储562.6.1DBA_DATA_FILES562.6.2V$BACKUP572.6.3V$DATABASE592.6.4V$DATAFILE602.6.5V$DBFILE612.6.6V$LOG612.6.7V$LOGFILE

5、622.6.8V$LOGHIST632.7逻辑存储632.7.1DBA_FREE_SPACE632.7.2DBA_EXTENTS682.7.3DBA_SEGMENTS712.7.4DBA_TABLESPACES722.8性能和内存信息742.8.1USER_RESOURCE_LIMITS742.8.2V$SGA742.8.3V$SGASTAT751 oracle数据字典基础1.1 数据字典的重要性 oracle的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生,随着数据库的变化而变化,所以他保存着数据库的基本信息以及运行情况。如果你希望更好的了解数据库,了解数据库的运行状态从而更好

6、的去优化你的数据库,那么了解数据字典那是必不可少的。 1.2 oracle数据库体系结构简介 该部分主要是通过oracle数据库体系结构来了解数据库存在哪些方面的数据字典。Oracle数据库的总体结构包括三大部分:内存结构、进程结构和存储结构。总体结构内存结构进程结构存储结构pgaSga数据高速缓存日志高速缓存共享池大池Java池服务进程排序区堆栈区会话区DBWR、PMON、SNPn、RECO、LGWR、SMON、CKPT、ARCH逻辑存储结构物理存储结构Oracle数据库表空间(tablespace)段(segment)区(extent)块(block)控制文件、重做日志文件数据文件OS块逻

7、辑存储结构物理存储结构1.3 oracle数据库的启动流程简介 Oracle数据库启动过程包括三个方面,nomount、mount和open,在不同的阶段我们可以访问的数据字典是不一样的,所以了解oracle数据库的启动过程是非常必要的。Oracle数据库的启动主要包括三步。步骤一:创建并启动例程(nomount)例程由一组逻辑内存结构和一系列后台服务进程组成。当启动例程时,这些内存结构和服务进程得到分配、初始化和启动,以便用户能够与数据库进行通信。但是,此时的例程还没有与一个确定的数据库相联系,或者说数据库是否是否存在对例程的启动并没有影响。在启动例程的过程中只会使用startup语句中指定

8、的(或使用默认的)初始化参数文件。如果初始化参数文件或参数文件设置有误,则无法启动例程。步骤二:装载数据库(mount)装载数据库时,例程将打开数据库的控制文件,根据初始化参数control_files的设置找到控制文件,并从中获取数据库名称、数据文件的位置或名称等关于数据库物理结构的信息,为下一步打开数据库做好准备。在装载阶段,例程并不会打开数据库的物理文件,即数据文件和重做日志文件,所以数据库时处于关闭状态的。只有数据库管理员可以通过部分命令修改数据库,而用户还无法与数据库建立连接或会话。如果控制文件损坏,例程将无法装载数据库。步骤三:打开数据库(open)只有将数据库设置为打开状态后,数

9、据库才处于正常运行状态,这时用户才能够与数据库建立连接或会话,以存取数据库中的信息。综上所述,在启动数据库的过程中,文件的使用顺序是:参数文件,控制文件,数据文件和重做日志文件。只有这些文件都被正常读取和使用后,数据库才能正常启动,用户才能使用数据库。1.4 数据字典的概念 数据字典是oracle数据库的核心组件,他由一系列只读的数据字典表和数据字典视图组成。数据字典表中记录了数据库的系统信息(如方案对象的信息)、例程运行的性能信息(如例程的状态、SGA区的信息)。数据字典表的所有者为SYS用户,其数据字典表和数据字典视图都被保存在SYSTEM表空间中。所以,为了性能和安全的原因,oracle

10、建议不要在SYSTEM表空间中创建其他方案对象。1.5 数据字典中保存了哪些信息 数据字典中主要保存了如下信息:A、各种方案对象的定义信息,如表、视图、索引、同义词、绪论、存储过程、函数、包、触发器和各种对象。B、存储空间的分配信息,如为某个对象分配了多少存储空间,该对象使用了多少存储空间。C、安全信息,如账户、权限、角色、完整性约束信息。D、例程运行是的性能和统计信息。E、其他数据库本身的基本信息。1.6 数据字典的主要用途 A、Oracle通过查询数据字典表或数据字典视图来获取有关用户、方案对象、对象的定义信息,以及其他存储结构的信息,以便确认权限、方案对象的存在性和正确性。B、在每次执行

11、DDL语句修改方案和对象后,oracle都在数据字典中记录下所作的修改。C、用户可以从数据字典的只读视图中,获取各种与方案和对象有关的信息。D、DBA可以从数据字典的动态性能视图中,监视例程的运行状态,为性能调整提供依据。1.7 数据字典的组成 数据字典包括静态数据字典和动态数据字典。静态数据字典主要由两部分组成,基表和视图。基表(base table):用于存储相关的数据库信息。只有 Oracle 才能读写这些表。用户很少直接访问她们,因为这些表是规范化的(normalized),且其中的大部分数据的含义是普通用户无法理解的。他们属于sys用户,通过在创建数据库时自动运行SQL.BSQ脚本来

12、创建数据字典基表。大部分数据字典表的名称中都包含$这样的特殊符号。比如用户信息基表user$。SQL.BSQ脚本保存在oracle_homeRDBMSADMIN目录下。用户访问视图 (user-accessible view) :用于对数据字典基表内存储的数据进行汇总与展示。这些视图利用连接(join)及 WHERE 子句简化基表中的数据,将其解码(decode)为用户可理解的信息,例如用户名,表名等。大多数数据库用户只能访问这些视图,而不能访问基表。在创建数据库时,通过自动运行catalog.sql脚本来创建数据字典视图。Catalog.sql保存在oracle_homeRDBMSADMIN

13、目录下。 动态数据字典主要由动态性能表和动态性能视图组成在例程的运行过程中,oracle会再数据字典中维护一些列虚拟的表,在其中记录与数据库活动相关的性能统计信息,这些表就称为动态性能表。这些虚拟的表不是固定的表。即在例程启动时被创建,并将向其中添加信息,而当例程消亡时,这些表也就被删除了。动态性能视图属于SYS用户。Oracle自动在动态性能表上创建了一些视图,即动态性能视图。所有动态性能视图都以V_$开头。Oracle为这些视图创建了公用同义词。这些同义词都以V$开头,因此动态性能视图也被称为“V$视图”。1.8 数据字典的实质 见数据字典的组成。1.9 数据字典是如何生成的 见数据字典的

14、组成。1.10 user_*、all_*、dba_*三类数据字典视图使用对于同一类信息的数据字典视图,这三类不同前缀的数据字典视图的不同之处在于他们所包含内容的范围不同。User_*为用户视图,即包含的是该用户自己拥有对象的信息;All_*为扩展用户视图,即包含的是该用户可以访问的所有对象的信息;Dba_*为数据库管理员视图,包含全部数据库对象的信息。只有具有dba权限的用户,才能访问dba_*视图。如果我们以集合的思维来理解的话就是user_*是all_*的子集,all_*是dba_*的子集。如下图:DBA_视图,全部数据库对象的信息ALL_视图,该用户可以访问的所有对象的信息USER_视图

15、,该用户方案对象的信息除此以外,三类数据字典还存在一点区别就是:USER_*数据字典视图通常不存在owner列,DBA_*和ALL_*一般存在owner列,用于标识其所属的用户。1.11 数据库在不同状态下可访问的数据字典数据库在nomount状态时可访问的数据字典:V$PARAMETER V$SGA V$OPTION V$PROCESS V$SESSIONV$VERSION V$INSTANCE数据库在mount状态时可访问的数据字典:V$THREAD V$CONTROLEFILEV$DATABASE V$DATAFILEV$DATAFILE_HEADER V$LOGFILE数据库在OPEN

16、状态时可访问的数据字典:V$FILESTAT V$SESSION_WAITV$WAITSTAT 所有的静态数据字典1.12 权限操作基础知识所谓赋权,即赋予权限,使某一用户有权限进行某一项操作。这里面涉及到对操作、角色、用户的理解以及他们之间的相互关系。操作:即我们日常对数据库对象的行为,如:select、update、delete、create、drop、execute等等;角色:即被赋予了一种或多种操作的一个集合,如:我们可以将多个操作赋予同一个角色,那么这个角色就同时拥有多种操作的能力,并且可以将这个角色赋予多个用户;用户:即我们日常登陆的用户。这三者之间的关系我们下面以一个例子进行说明

17、。比如我们有两个用户scott和kusch,我们要使kusch用户能够对scott用户下的emp表进行select、update和delete。要达到这个目的有两个方法:法一:直接将select、update和delete权限赋给kuschgrant select,update,delete on scott.emp to kusch;法二:先创建一个角色,把这三种操作权限都赋给该角色,然后将这个角色赋予kuschcreate role role_emp ;grant select,update,delete on scott.emp to role_emp;这样做的好处在于我们可以用角色来很

18、好的管理这些操作,并且如果要个其他用户赋予这三个操作权限的话,不用每次都写所有权限,直接赋予角色即可(对于操作比较多的时候,这种方法尤为重要)。两个重要参数说明with admin option 用于系统权限授权,with grant option 用于对象授权。这两个参数都只能用于对用户授权时使用,对角色授权时是不能使用的。给一个用户授予系统权限带上with admin option 时,此用户可把此系统权限授予其他用户或角色,但收回这个用户的系统权限时,这个用户已经授予其他用户或角色的此系统权限不会因传播无效,如授予A系统权限create session with admin option

19、,然后A又把create session权限授予B,但管理员收回A的create session权限时,B依然拥有create session的权限,但管理员可以显式收回B create session的权限,即直接revoke create session from B。with grant option用于对象授权,使用该参数授权时,被授予的用户也可把此对象权限授予其他用户或角色,不同的是但管理员收回用with grant option授权的用户对象权限时,权限会因传播而失效,如grant select on table with grant option to A,A用户把此权限授予B,

20、但管理员收回A的权限时,B的权限也会失效,但管理员不可以直接收回B的SELECT ON TABLE 权限。1.13 触发器基础知识触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。并且,触发器不能接收参数。所以运行触发器就叫触发。其中事件指的是对数据库的表或对视图进行类似的操作。触发器的种类有DML触发器、替代触发器、系统触发器。触发器的组成由:触INSERT、UPDATE及DELETE操作发事件、触发时间、触发操作、触发对象、触发条件、触发频率。触发器可以在做了DML操

21、作如:INSERT、UPDATE及DELETE操作、或oracle数据库的启动与关闭、而且触发器常用来完成由数据库的完整性约束难以完成的复杂业务规则的约束,或用来监视对数据库的各种操作,实现审计的功能等等,对于触发器的语法、具体用法、触发器的使用注意事项和技巧可以通过oracle书籍和网上资料来学习。2 数据字典实例2.1 数据字典相关数据字典视图2.1.1 dictionary描述:DICTIONARY其同义词为dict。是对数据库字典表和视图的说明。我们可以通过该视图来查询我们需要的数据字典以及了解某个数据字典的作用。Dictionary(dict)列名注释备注TABLE_NAME数据字典

22、名称COMMENTS注释应用一:知道某数据字典的大概拼写,但记不全,可以通过查询该表来获取正确的数据字典名称。如:我们希望查看当前数据库的全局名,但是我只记得该数据字典拼写的一部分global。select * from dict where table_name like %GLOBAL%;select * from dictionary where table_name like %GLOBAL%;查询结果如下:这样我们就可以查找到需要的数据字典对象了。注意/技巧:如果你知道的是数据字典对象的开始几个字母,那么可以直接拼写,然后系统会进行智能提示,你直接选择就可以了。应用二:知道数据字典名

23、称,不知道其作用,也可以通过查询dictionary来了解。如:我想知道IND的作用select * from dictionary where table_name=IND;查询结果如下:所以通过注释我们可以了解到,IND是USER_INDEXES的同义词。2.1.2 DICT_COLUMNSDICT_COLUMNS对数据库字典表和视图中的列的说明。我们可以通过该数据字典视图来了解数据字典中每一列的含义。DICT_COLUMNS对象结构如下:DICT_COLUMNS列名注释备注TABLE_NAME数据字典视图名COLUMN_NAME列名COMMENTS注释应用一:当我们在使用一个数据字典视图

24、的时候,对其中的一列不知道是什么含义,这个时候我们可以通过该视图进行了解。如:我想知道数据字典视图DICT_COLUMNS的table_name列的含义。select comments from DICT_COLUMNS where table_name=DICT_COLUMNS AND COLUMN_NAME=TABLE_NAME;查询结果如下:这用法通常是用在sqlplus中,如果是pl/sql工具的话,是完全没有必要进行这样的询的,因为pl/sql会进行智能提示。2.2 数据库基础知识2.2.1 GLOBAL_NMAEGLOBAL_NAME显示的是当前数据库的全局名。用来唯一确定一个数据

25、库的,因为同一个网络中的多个数据库SID可能相同,通过全局数据库名就可以区分开这些数据库。GLOBAL_NMAE对象结构如下:GLOBAL_NMAE列名注释备注GLOBAL_NAME数据库全局名应用举例:A、可以查询当前数据库的全局名:Select * from global_name;B、可以修改全局数据库名:alter database rename global_name to XXXX;2.2.2 ALL_CATALOGALL_CATALOG主要是保存用户可存取的全部表、视图和序列、同义词的信息。该数据字典视图还存在USER_CATALOG和DBA_CATALOG两种形式。USER_C

26、ATALOG的同义词为CAT。ALL_CATALOG的对象结构如下:ALL_CATALOG列名注释备注OWNER对象的所有者表、视图、序列或同义词的所有者TABLE_NAME对象的名称表、视图、序列或同义词的名称TABLE_TYPE对象的类型表、视图、序列或同义词的类型应用举例:知道某表、视图或同义词的大概拼写,可以通过查询该表来获取该类型的数据字典所属用户及具体名称。列如:当想查找当前数据库中所有者名以“M”结尾、类型为“TABLE”、表名以“D”开头的所属用户信息和具体表名时,可以通过下列语句查询:SELECT owner,table_name from all_catalog where

27、 table_type=TABLE and table_name like D% and owner like %M;查询如下:2.2.3 ALL_DEPENDENCIESALL_DEPENDENCIES,主要保存的是用户可存取的对象之间的从属关系。该数据字典视图还存在USER_DEPENDENCIES和DBA_DEPENDENCIES两种形式。ALL_ DEPENDENCIES的对象结构如下:ALL_DEPENDENCIES列名注释备注OWNER对象的所有者当前对象的所有者NAME对象的名称当前对象的名称TYPE对象的类型当前对象的类型REFERENCED_OWNER被引用对象的所有者当前对

28、象依赖的对象的所有者REFERENCED_NAME被引用对象的名称当前对象依赖的对象的名称REFERENCED_TYPE被引用对象的类型当前对象依赖的对象的类型REFERENCED_LINK_NAME被引用对象是远程连接时的数据库的名字DEPENDENCY_TYPE从属的类型应用举例:下面我们以包、过程以及调用过程来对该数据字典视图进行说明:-过程pro_test,用于验证过程和表之间的依赖关系以及其调用关系在数据字典视图ALL_DEPENDENCIES中的记录信息create or replace procedure pro_testAS e_name varchar(60);begin s

29、elect e.ename into e_name from EMP e ;end;-创建包pkg1,此处只有包体,包说明已略,用于验证其他过程调用包依赖关系,以及在数据字典视图中的记录信息CREATE OR REPLACE PACKAGE BODY pkg1 IS-包pkg1中定义的过程1:pro1PROCEDURE pro1as n_count number(38,0);begin select count(*) into n_count from EMP; pro_test(); end;-包pkg1中定义的过程2:pro2,PROCEDURE pro2as n_count number

30、(38,0);begin select count(*) into n_count from DEPT;end;END pkg1;-过程pro_invoke_pkg,用来调用上面的packagecreate or replace procedure pro_invoke_pkgASbegin pkg1.pro1();-调用pkg1.pro1end;-查看all_dependencies记录,来验证其调用依赖关系SELECT * FROM all_DEPENDENCIES WHERE NAME=PRO_INVOKE_PKG AND referenced_owner!=SYS;补充说明:ALL_D

31、EPENDENCIES 仅仅是进入了依赖关系树中的一层。为充分判定依赖关系,必须在模式中创建递归的依赖关系跟踪对象。要创建这些对象,需要运行utldtree.sql 脚本(通常位于Oracle 主目录下的/rdbms/admin 子目录中)。此脚本创建两个可以查询的对象:DEPTREE 和IDEPTREE。虽然它们包含相同的信息(虽然它们的列定义不同),但是由于IDEPTREE 基于伪列级别缩进排列,因此更容易阅读和解释。相关问题以及解答问题一:DEPENDENCY_TYPE 列和REFERENCED_LINK_NAME 列的说明?问题二:如果一个过程调用的是一个包中定义的过程,如何查看其依赖

32、关系问题解答:首先需要了解一点,我们在定义对象的时候,通常会引用其他的对象,那么我们就称该对象为依赖对象(dependent object),那么被引用的对象我们称为引用对象(referenced object)。注意,不管是依赖对象还是引用对象,都是针对的对象。问题一:关于两个字段的说明 REFERENCED_LINK_NAME 列该列的值是数据链的名称,即db_link的名称,意思是当我们的引用对象是通过数据链进行引用的时候,那么该列就会有值,否则这列是为空的。 DEPENDENCY_TYPE 列该列的意思是依赖类型,存在两种值:hard和ref。关于两种值是如何划分的,这个没进行研究,但

33、是通常情况下该列的值都是hard类型的。问题二:如果一个过程调用的是一个包中定义的过程,如何查看其依赖关系在包中定义的存储过程或者是函数,在object视图中是不存在的。所以我们说一个过程调用了一个包中的某一过程,其实他调用的对象是那个包,调用的内容是包中定义的过程。2.2.4 ALL_ERRORSALL_ERRORS视图,主要包含在用户可存取对象上的当前错误的相关信息。该类数据字典视图还存在USER_ERRORS和DBA_ERRORS两种形式。ALL_ERRORS的结构如下:ALL_ERRORS列名注释备注OWNER出错对象的所有者NAME出错对象的名称TYPE出错对象的类型对象类型(PRO

34、CEDURE 、FUNCTION 、PACKAGE 、PACKAGE BODY、TRIGGER、TYPE、TYPE BODY、VIEW、JAVA CLASS 或 JAVA SOURCE)SEQUENCE出错对象的序列号行序列号,在查询的order by 子句中使用LINE发生的错误所在行号出现错误的源代码的行号POSITION当前发生的错误所在行的具体位置行中出现错误的位置TEXT错误的文本描述错误消息的文本ATTRIBUTE错误的属性MESSAGE_NUMBER信息编号应用举例:当某个对象编译错误时,此时可以通过ALL_ERRORS及其对象名称来查看具体错误信息:Select * from

35、ALL_ERRORS a where a.OWNER = and a.NAME = ;举例:-写了一个测试package,如下create or replace procedure pro_testAS e_name varchar(60);begin select e.ename into e_name from EMP e ;end;CREATE OR REPLACE PACKAGE BODY pkg1 ISPROCEDURE pro1as n_count number(38,0);begin select count(*) into n_count from EMP; pro_test4

36、(); end;点击“F8”运行后,就出现编译错误,对象PKG上出现红叉叉。此时,只要通过ALL_ERRORS 视图、当前用户及编译错误的对象名称即可查询到该错误。select * from ALL_ERRORS a where a.OWNER=SCOTT ;错误信息如下:SCOTTPKG1PACKAGE BODY179PLS-00201: 必须声明标识符 PRO_TEST4ERROR201SCOTTPKG1PACKAGE BODY279PL/SQL: Statement ignoredERROR0操作一:此时,若再运行下面语句:再次查询不通过具体的对象名,查询结果如下,我们会发现对象“PKG

37、1”和“PRO_INVOKE_PKG”都存在错误。操作二:此时,若再运行下面语句:再次查询不通过具体的对象名,查询结果如下,我们会发现对象“PKG1”和“PRO_INVOKE_PKG”都存在错误。比较操作二和操作一中的语句及其查询结果,注意变化的地方和没有变化的地方,以此来理解ALL_ERRORS各列的含义。操作三:在操作二的语句基础上插入一条语句pkg1.pro6();-然后再写了一个测试procedure,用来调用上面的package再次查询不通过具体的对象名,查询结果如下,我们会发现对象“PKG1”和“PRO_INVOKE_PKG”都存在错误。操作四:与下面比较一下,只是移动了2行的位置

38、已经一条语句缩进了2个空格,发现SEQUENCE和LINE的值发生了变化,另外缩进2空格的那条语句错误信息中POSITION的值也相应变化了。操作五:在操作四的基础上再进行下面操作:添加一行,添加的pro7对象也是未定义的。比较操作三和操作四的查询结果可以得出下面结论:同一种类型的编号相同,具体编号信息对应的错误类型信息怎样一一对应还不清楚。遗留问题及解答1、ATTRIBUTE 属性列中,目前我遇上的值都是ERROR,不知道除了这个还有没有别的属性。2、同一种错误类型的MESSAGE_NUMBER相同,但具体MESSAGE_NUMBER对应的错误类型信息怎样一一对应还不清楚。解答1、 ATTR

39、IBUTE 属性列中,目前我遇上的值都是ERROR,不知道除了这个还有没有别的属性值? 这个就目前我也只遇到过ERROR一个值,有待进一步探索和发现。 经查看网络资料,发现*_ERRORS 视图中的ATTRIBUTE 列原来是个标志列,主要指出该行是错误(ERROR),还是警告(WARNING),故它有这个两个值,一般情况下遇到ERROR的情况较多些!但在PL/SQL中测试时却始终没有遇到警告(WARNING)这种情况,不知有没有同事遇到过此情况。2、同一种错误类型的MESSAGE_NUMBER相同,但具体MESSAGE_NUMBER对应的错误类型信息怎样一一对应还不清楚?这个如果记的话肯定是

40、记不完的,如果需要的话,可以进行查找,附件是关于oracle10g所有的错误代码和错误信息。请下载后了解。登陆事业部论坛可以下载。2.2.5 ALL_OBJECTSALL_CATALOG 目录只显示表、视图、序列和同义词的信息。要检索关于所有用户所有对象类型的信息,可查询ALL_OBJECTS 视图。该类数据字典视图还存在DBA_OBJECTS和USER_OBJECTS两种形式,其中OBJ是USER_OBJECTS的公有同义词。ALL_OBJECTS 视图,包含可访问数据库对象的所有者及其类型和名称。可以使用该视图查找许多类型的对象,包括群集、数据库链接、目录、函数、索引、库、程序包、程序包体

41、、Java 类、抽象数据类型、资源计划、序列、同义词、表、触发器、物化视图、LOB 和视图。ALL_OBJECTS视图的结构如下:ALL_ OBJECTS列名注释备注OWNER所属用户OBJECT_NAME对象的名称SUBOBJECT_TYPE子对象的类型比如分区OBJECT_ID对象的ID该对象在系统中唯一的标识DATA_OBJECT_ID数据对象的IDOBJECT_TYPE对象的类型CREATED对象的创建日期LAST_DDL_TIME上一次更改对象的时间TIMESTAMP时间戳记录DDL变更的日期STATUS对象的状态分为有效(VALID)和无效(INVALID)TEMPORARY是否是

42、临时表英文解释:Can the current session only see data that it placed in this object itself?GENERATED这个对象的名称是否由系统生成的SECONDARY该对象是否是作为域索引的一部分而创建的二次对象英文解释:Is this a secondary object created as part of icreate for domain indexes?NAMESPACE对象的命名空间EDITION_NAME编辑名称应用举例:ALL_OBJECTS包含了几条重要的信息,这些信息在其他数据字典视图中找不到。它记录了对象

43、的创建日期(Created 列)和上次更改对象的时间(Last_DDL_Time 列)。在试图协调同一应用程序中不同的对象组时,这些列非常有用。 可以通过下列语句来查询所有拥有的对象及其信息: select * from ALL_OBJECTS;遗留问题及解答问题:1、oracle时间戳到底表示哪个字段的时间?在网上查询到:时间戳是指文件属性里的创建、修改、访问时间,在一张表上加上时间戳字段,并做索引,可以比较好的得到表写入的顺序,基本上也可以保证唯一性。问题描述:如下所示图所示,是通过select * from all_objects;语句查询出来的结果:仔细观察发现,对象ALL_OBJEC

44、TS 里的TIMESTAMP (时间戳)列,有些既不是对象创建时间也不是上一次修改时间,那对象里TIMESTAMP(时间戳)列到底指的是对象进行什么操作的时间呢?解决方案:timestamp是一个时间类型,他的格式可以通过如下几种方式获取:1、SQLSHOW PARAMETER NLS_TIMESTAMP_FORMAT; 2、通过查询如下几个数据字典可以了解该参数的值:-当前会话时间戳格式select * from NLS_SESSION_PARAMETERS where parameter=NLS_TIMESTAMP_FORMAT;当前实例的时间戳格式select * from NLS_INSTANCE_PARAMETERS where parameter=NLS_TIMESTAMP_FORMAT; 当前数据库的时间戳格式 select * from NLS_DATABASE_PARAMETERS where parameter=NLS_TIMESTAMP_FORMAT;对于all_objects中的timestamp列,通过实验,通过创建表、修改表等操作表明,对表进行ddl操作的时候,才会修改该值,如果只是dml操

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号