一、概念:
1.数据字典(data dictionary)是 Oracle 数据库的一个重要组成部分,这是一组用于记录数据库信息的只读(read-only)表。
数据字典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图等。我们不能手工修改数据字典里的信息。当用户在对数据库中的数据进行操作时遇到困难就可以访问数据字典来查看详细的信息。
2.数据字典中的信息包含:
1.数据库中所有方案对象(schema object)的定义(包括表,视图,索引,簇,同义词,序列,过程,函数,包,触发器等等)
2.数据库为一个方案对象分配了多少空间,以及该对象当前使用了多少空间
3.列的默认值
4.完整性约束(integrity constraint)信息
5.数据库用户名
6.每个用户被授予(grant)的权限(privilege)与角色(role)
7.监控(audit)信息,例如哪个用户对某个方案对象进行了访问或更新操作
8.数据库中的其他概要信息
二、组成结构
1.基表(base table):用于存储相关的数据库信息。只有 Oracle 才能读写这些表。用户很少直接访问她们,因为这些表是规范化的(normalized),且其中的大部分数据的含义是普通用户无法理解的。
2.用户访问视图 (user-accessible view) :用于对数据字典基表内存储的数据进行汇总与展示。这些视图利用连接(join)及 WHERE 子句简化基表中的数据,将其解码(decode)为用户可理解的信息,例如用户名,表名等。大多数数据库用户只能访问这些视图,而不能访问基表。
Oracle 中的 SYS 用户拥有数据字典中的所有基表(base table)及用户访问视图(user-accessible view)。其他 Oracle 用户不应修改(UPDATE,DELETE,或 INSERT)SYS 方案中的对象定义及数据,否则将危害数据库的数据完整性(data integrity)。安全管理员必须严格控制此账户。
三、使用数据字典
数据字典有三个主要用途:
1、Oracle 利用数据字典来获取关于用户,方案对象,及存储结构(storage structure)的信息。
2、每当数据库中执行了 DDL 语句后,Oracle 将对数据字典进行修改。
3、所有 Oracle 用户都可以使用数据字典来获取关于数据库的信息。
1.Oracle 如何使用数据字典
1.1)在数据库运行期间,Oracle 通过数据字典内的信息来确定方案对象(schema object)是否存在,以及用户是否具备相应的权限。Oracle 会持续地更新数据字典,以便反映数据库在结构,数据,授权,监控(audit)等方面的变化。
1.2)Oracle 为许多数据字典视图创建了公共同义词(public synonym),以便用户能够方便地对其进行访问。安全管理员也可以为需要在全系统使用的方案对象(schema object)创建公共同义词。用户应防止自身的方案对象名与公共同义词名重复。
1.3)由于 Oracle 在数据库运行中需要不断地访问数据字典来验证用户权限及方案对象状态,大量的数据字典信息将被缓存到 SGA 的数据字典缓存(dictionary cache)内。这些数据将依据最近最少使用(least recently used,LRU)算法存储在内存中。
2.用户如何使用数据字典
Oracle中的数据字典有静态和动态之分。静态数据字典主要是在用户访问数据字典时不会发生改变的,但动态数据字典是依赖数据库运行的性能的,反映数据库运行的一些内在信息,所以在访问这类数据字典时往往不是一成不变的。以下分别就这两类数据字典来论述。
1. 静态数据字典
这类数据字典主要是由表和视图组成,应该注意的是,数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*、 all_*、 dba_*。
user_*
该视图存储了关于当前用户所拥有的对象的信息。(即所有在该用户模式下的对象)
all_*
该试图存储了当前用户能够访问的对象的信息。(与user_*相比,all_* 并不需要拥有该对象,只需要具有访问该对象的权限即可)
dba_*
该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)
从上面的描述可以看出,三者之间存储的数据肯定会有重叠,其实它们除了访问范围的不同以外(因为权限不一样,所以访问对象的范围不一样),其他均具有一致性。具体来说,由于数据字典视图是由SYS(系统用户)所拥有的,所以在却省情况下,只有SYS和拥有DBA系统权限的用户可以看到所有的视图。没有DBA权限的用户只能看到user_*和all_*视。如果没有被授予相关的SELECT权限的话,他们是不能看到 dba_*视图的。
下面以user_为例介绍几个常用的静态视图:
user_users视图
主要描述当前用户的信息,主要包括当前用户名、帐户id、帐户状态、表空间名、创建时间等。例如执行下列命令即可返回这些信息。
select * from user_users
user_tables视图
主要描述当前用户拥有的所有表的信息,主要包括表名、表空间名、簇名等。通过此视图可以清楚了解当前用户可以操作的表有哪些。执行命令为:select * from user_tables
user_objects视图
主要描述当前用户拥有的所有对象的信息,对象包括表、视图、存储过程、触发器、包、索引、序列等。该视图比user_tables视图更加全面。例如, 需要获取一个名为“package1”的对象类型和其状态的信息,可以执行下面命令:
select object_type,status
from user_objects
where object_name=upper(‘package1’);
这里需注意upper的使用,数据字典里的所有对象均为大写形式,而PL/SQL里不是大小写敏感的,所以在实际操作中一定要注意大小写匹配。
user_tab_privs视图
该视图主要是存储当前用户下对所有表的权限信息。比如,为了了解当前用户对table1的权限信息,可以执行如下命令:
select * from user_tab_privs where table_name=upper('connector')
了解了当前用户对该表的权限之后就可以清楚的知道,哪些操作可以执行,哪些操作不能执行。
前面的视图均为user_开头的,其实all_开头的也完全是一样的,只是列出来的信息是当前用户可以访问的对象而不是当前用户拥有的对象。对于dba_开头的需要管理员权限,其他用法也完全一样,这里就不再赘述了。
2. 动态数据字典
Oracle包含了一些潜在的由系统管理员如SYS维护的表和视图,由于当数据库运行的时候它们会不断进行更新,所以称它们为动态数据字典(或者是动态性能视图)。这些视图提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。
Oracle中这些动态性能视图都是以v$开头的视图,比如v$access。下面就几个主要的动态性能视图进行介绍。
v$access
该视图显示数据库中锁定的数据库对象以及访问这些对象的会话对象(session对象)。
运行如下命令:
select * from v$access
v$session
该视图列出当前会话的详细信息。由于该视图字段较多,这里就不列详细字段,为了解详细信息,可以直接在sql*plus命令行下键入:desc v$session即可。
v$active_instance
该视图主要描述当前数据库下的活动的实例的信息。依然可以使用select语句来观察该信息。
v$context
该视图列出当前会话的属性信息。比如命名空间、属性值等。
3.任何查找所需要的数据字典及各个字段的含义
dictionary 全部数据字典表的名称和解释,它有一个同义词dict
dict_columns 全部数据字典表里字段名称和解释
如果我们想查询跟索引有关的数据字典时,可以用下面这条SQL语句:
SQL>select * from dictionary where instr(comments,'index')>0;
如果我们想知道user_indexes表各字段名称的详细含义,可以用下面这条SQL语句:
SQL>select column_name,comments from dict_columns where table_name='USER_INDEXES';
依此类推,就可以轻松知道数据字典的详细名称和解释,不用查看ORACLE的其它文档资料了。
四、下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。
1、用户
查看当前用户的缺省表空间
SQL>select username,default_tablespace from user_users;
查看当前用户的角色
SQL>select * from user_role_privs;
查看当前用户的系统权限和表级权限
SQL>select * from user_sys_privs;
SQL>select * from user_tab_privs;
2、表
查看用户下所有的表
SQL>select * from user_tables;
查看名称包含log字符的表
SQL>select object_name,object_id from user_objects
where instr(object_name,'LOG')>0;
查看某表的创建时间
SQL>select object_name,created from user_objects where object_name=upper('CONNECTOR');
查看某表的大小
SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments
where segment_name=upper('CONNECTOR');
查看放在ORACLE的内存区里的表
SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;
3、索引
查看索引个数和类别
SQL>select index_name,index_type,table_name from user_indexes order by table_name;
查看索引被索引的字段
SQL>select * from user_ind_columns where index_name=upper('IDX_COLLAGE_INFOR_COMMENT_ID');
查看索引的大小
SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments
where segment_name=upper('&index_name');
4、序列号
查看序列号,last_number是当前值
SQL>select * from user_sequences;
5、视图
查看视图的名称
SQL>select view_name from user_views;
查看创建视图的select语句
SQL>select view_name,text_length from user_views;
SQL>select text from user_views where view_name=upper('&view_name');
6、同义词
查看同义词的名称
SQL>select * from user_synonyms;
7、约束条件
查看某表的约束条件
SQL>select constraint_name, constraint_type,search_condition, r_constraint_name
from user_constraints where table_name = upper('&table_name');
SQL>select c.constraint_name,c.constraint_type,cc.column_name
from user_constraints c,user_cons_columns cc
where c.owner = upper('&table_owner') and c.table_name = upper('&table_name')
and c.owner = cc.owner and c.constraint_name = cc.constraint_name
order by cc.position;
8、存储函数和过程
查看函数和过程的状态
SQL>select object_name,status from user_objects where object_type='FUNCTION';
SQL>select object_name,status from user_objects where object_type='PROCEDURE';
查看函数和过程的源代码
SQL>select text from all_source where owner=user and name=upper('&plsql_name');
9、触发器
查看触发器
select
'create or replace trigger "' ||
trigger_name || '"' || chr(10)||
decode( substr( trigger_type, 1, 1 ),
'A', 'AFTER', 'B', 'BEFORE', 'I', 'INSTEAD OF' ) ||
chr(10) ||
triggering_event || chr(10) ||
'ON "' || table_owner || '"."' ||
table_name || '"' || chr(10) ||
decode( instr( trigger_type, 'EACH ROW' ), 0, null,
'FOR EACH ROW' ) || chr(10) ,
trigger_body
from user_triggers;
------------------------------------------------------------------------------------------------------------------------
1.概念
数据字典是oracle数据库用来存贮数据库结构信息的地方。
数据字典是用来描述数据库数据的组织方式的,由表和视图组成。
数据字典由脚本$oracle_home/rdbms/admin/catalog.sql创建。
2.分类
视图有三种实例:user_*(当前用户所拥有对象的有关信息),all_*(当前用户可访问对象的信息),dba_*(数据库中所有对象的信息)。
查询数据字典数据时使用大写字母。可用upper\lower函数转换。
一下以user_*实例举例(如没有user_*,则依次以all_*、dba_*举例)。
3.类别
3.1 关系群集、表、视图
群集 user_clusters 群集
user_cluster_hash_expressions 群集使用的群集散列函数
user_clu_columns 表列到群集列的映射(无all_*)
表和视图 user_tables 关系表
user_all_tables 表(user_all_tables是user_tables与user_object_tables的集合)
user_tab_columns 表列
user_tab_comments 表的注释
user_col_comments 表和视图的列的注释
user_refs 对象类型列的属性和REF列
user_partial_drop_tabs 被部分放弃的表
user_unused_col_tabs 带有未使用列的表
user_updatable_columns 联合视图中更新的列
user_views 视图
3.2 集合、LOB、对象类型和对象表
集合 user_coll_types 集合类型
user_varrays varray数组类型
user_nested_tables 嵌套表
大型对象 user_lobs LOB
对象表类型user_types 对象类型
user_type_attrs 对象类型的属性
user_type_methods 对象类型的方法
user_object_tables 对象表
3.3 oracle视图
设备环境 all_conext(all_context) 设备环境
维数 user_dimensions 维数
user_dim_hierarchies 维数分层
user_dim_levels 维数的级别
user_dim_level_key 维数级别的列
user_dim_attributes 维数的相关列和维数级之间的关系
user_dim_child_of 维数级别之间的关系
user_dim_join_key 维数间的联合
操作符 user_operators 操作符的基本信息
user_opancillary 操作符的辅助信息
user_oparguments 操作符的参数
user_opbindings 操作符的绑定功能
摘要 user_outlines 摘要
user_outline_hints 摘要的提示
策略 user_policies 表和视图的策略
3.4 其他数据库对象
数据库任务 user_jobs 数据库任务
数据库连接 user_db_links 数据库连接
目录 all_directories 目录
库 user_libraries 库(字典)
序列 user_sequences 序列
替代名 user_synonyms 替代名(同义词)
3.5 分区和子分区
user_part_tables 已分区表
user_tab_partitions 表的分区
user_tab_subpartitions 表的子分区
user_part_indexes 已分区索引
user_ind_partitions 索引分区
user_ind_subpartitions 索引子分区
user_part_lobs 表中的LOB数据分区
user_lob_partitions LOB分区
user_lob_subpartitions LOB子分区
user_part_key_columns 已分区对象的分区关键字列
user_subpart_key_columns 使用组合范围/散列法分区的表的子分区关键字列
user_part_col_statistics 表分区统计和其他信息
user_subpart_col_statistics 表子分区的列统计
user_part_histograms 表的分区的直方图
user_subpart_histograms 表的子分区的直方图
3.6 索引
user_indexes 索引
user_ind_columns 索引列
user_ind_expressions 索引的函数索引表达式
user_indextypes 索引类型
user_indextype_operators 索引类型支持的操作符
3.7 实现视图、摘要、快照
实现视图 user_mviews 物化视图
user_mview_logs 物化视图日志
user_mview_comments 物化视图注释
user_mview_refresh_times 物化视图刷新时间
user_mview_analysis 物化视图的附加信息
user_mview_detail_relations 物化视图FROM列表的详细关系
user_mview_keys 物化视图列(或者 GROUP BY子句中的列)
user_mview_joins 物化视图WHERE子句中各列间的联合
user_mview_aggregates 物化视图选择列表中的成组功能
快照 user_refresh 快照刷新组
user_refresh_children 快照刷新组的对象
user_snapshots 快照
user_snapshot_logs 快照日志
user_snapshot_refresh_time 快照的刷新次数
user_registered_snapshots 已注册快照
all_refresh_dependencies 快照的从属或容器表 (只要all一种)
摘要 user_summaries 摘要
user_summary_detail_tables 摘要FROM列表的详细关系
user_summary_keys 摘要列(或者 GROUP BY子句中的列)
user_summary_joins 摘要WHERE子句中各列间的联合
user_summary_aggregates 摘要选择列表中的成组功能
3.8 子程序、方法、触发器
子程序 user_procedures 子程序名(包括过程、函数、包)
user_arguments 子程序参数(包括过程、函数、包)
方法 user_method_params 对象类型方法的参数
user_method_results 对象类型方法的返回值
触发器 user_triggers 触发器
user_trigger_cols 触发器的列
3.9 源代码和编译错误
源代码 user_source 包,包体,函数,过程,对象类型,对象类型体的源代码
编译错误 user_errors 视图和包,包体,函数,过程的编译错误
3.10 相关和限制
相关 user_dependencies 对象之间的相关(引用)
限制 user_constraints 表的限制(约束)
user_cons_columns 约束的列
user_cons_obj_columns
3.11 统计和审计
统计 user_ustats 对象的统计
user_tab_col_statistics 表列的统计
user_tab_histograms 表和视图的直方图
user_associations 数据库对象的用户自定义统计
审计 all_def_audit_opts 对象的默认审计选项
audit_actions 审计跟踪类型码的说明
3.12 权限和授权
系统权限 user_sys_privs 用户系统权限
表权限 user_tab_privs 授予作为拥有者、授权者、权限受让者对象的权限
user_tab_privs_made 授予当前用户对象的权限
all_tab_privs_recd 授予作为权限受让者的用户对象的权限
列权限 user_col_privs 授予作为拥有者、授权者、或受让者的用户的可授访问表或视图列的权限
user_col_privs_made 授予当前用户表或视图列的权限
user_col_privs_recd 授予作为权限受让者用户表或视图列权限
4.属性
表(视图)的属性(列)信息查看sql如下(以视图user_coll_types举例):
select lower(column_name) column_name,nullable,decode(data_type,'VARCHAR2',data_type||'('||char_length||')',data_type) data_type
from dba_tab_columns
where lower(table_name)='user_coll_types' order by column_id;
--》调整类型
select lower(column_name) column_name,nullable,data_type||'('||data_length||')' data_type
from dba_tab_columns
where lower(table_name)='user_coll_types' order by column_id;
4.1 集合、LOB、对象类型和对象表
1.集合
user_coll_types 集合类型
user_varrays varray数组类型
user_nested_tables 嵌套表
user_coll_types
列 是否为空 类型 说明
type_name N VARCHAR2(30) 集合名称
coll_type N VARCHAR2(30) 集合类型,可以是表或可变数组
upper_bound Y NUMBER 数组类型元素的最大上限
elem_type_mod Y VARCHAR2(7) 元素类型修改符(如REF)
elem_type_owner Y VARCHAR2(30) 元素类型的拥有者(只在与集合自身的拥有者不同时有效)
elem_type_name Y VARCHAR2(30) 元素类型的名称
length Y NUMBER 如果元素类型是CHAR或VARCHAR2,则为其长度
precision Y NUMBER 如果元素是NUMBER类型,则为精度
scale Y NUMBER 如果元素是NUMBER类型,则为比例
character_set_name Y VARCHAR2(44) 在说明了CHARCS或NCHARCS时为字符集名称。
elem_storage Y VARCHAR2(7) Oracle8i中使用的若干varray元素的存储字符。
nulls_stored Y VARCHAR2(3) Oracle8i中在存储了varray元素空信息时使用。
user_varrays
列 是否为空 类型 说明
parent_table_name Y VARCHAR2(30) 包括表的名称
parent_table_column Y VARCHAR2(4000) 带有集合的包括表的拥有者
type_owner Y VARCHAR2(30) 集合类型的拥有者
type_name Y VARCHAR2(30) 集合类型的名称
lob_name Y VARCHAR2(30) 如果在LOB中有集合的话,则为该LOB的名称
storage_spec Y VARCHAR2(30) 为DEFAULT或USER SPECIFIED。
return_type Y VARCHAR2(20) 列的返回类型
element_substitutable Y VARCHAR2(25)
user_nested_tables
列 是否为空 类型 说明
table_name Y VARCHAR2(30) 如果在LOB中有集合的话,则为该LOB的名称
table_type_owner Y VARCHAR2(30) 集合类型的拥有者
table_type_name Y VARCHAR2(30) 集合类型的名称
parent_table_name Y VARCHAR2(30) 包括表的名称
parent_table_column Y VARCHAR2(4000) 带有集合的包括表的拥有者
storage_spec Y VARCHAR2(30) 为DEFAULT或USER SPECIFIED。
return_type Y VARCHAR2(20) 列的返回类型
element_substitutable Y VARCHAR2(25)
2.大型对象
user_lobs LOB
列 是否为空 类型 说明
table_name Y VARCHAR2(30) 包括LOB的表的名称
column_name Y VARCHAR2(4000) LOB列或属性的名称
segment_name Y VARCHAR2(30) LOB段的名称
tablespace_name Y VARCHAR2(30) LOB所在表空间
index_name Y VARCHAR2(30) LOB索引的名称
chunk Y NUMBER 以字节为分配或操作单位的LOB块长度。
pctversion Y NUMBER 用于存储版本信息的LOB的最大百分比。
retention Y NUMBER
freepools Y NUMBER
cache Y VARCHAR2(10) 如果LOB可使用缓冲区为YES,否则为NO。
logging Y VARCHAR2(7) 如果记录了LOB的变更则为YES,否则为NO。
in_row Y VARCHAR2(3) 如果LOB使用基行存储的话为YES,否则为NO。
format Y VARCHAR2(15)
partitioned Y VARCHAR2(3)
3.对象表类型
user_types 对象类型
user_type_attrs 对象类型的属性
user_type_methods 对象类型的方法
user_object_tables 对象表
user_types
type_name N VARCHAR2(30) 对象类型的名称
type_oid N RAW(16) 类型的对象标识符(OID)
typecode Y VARCHAR2(30) 类型OBJECT,TABLE,VARCHAR2,NUMBER等的类型码
attributes Y NUMBER(22) 类型属性个数
methods Y NUMBER(22) 类型方法的个数
predefined Y VARCHAR2(3) 如果类型是预定义的则为YES,如果是用户定义的则为NO。
incomplete Y VARCHAR2(3) 如果类型不完整则为YES,否则为NO。
final Y VARCHAR2(3)
instantiable Y VARCHAR2(3)
supertype_owner Y VARCHAR2(30)
supertype_name Y VARCHAR2(30)
local_attributes Y NUMBER(22)
local_methods Y NUMBER(22)
typeid Y RAW(16)
user_type_attrs
type_name N VARCHAR2(30) 对象类型的名称
attr_name N VARCHAR2(30) 属性的名称
attr_type_mod Y VARCHAR2(7) 属性的类型修改符(如REF)
attr_type_owner Y VARCHAR2(30) 如果是用户定义的类型,则为属性类型的拥有者
attr_type_name Y VARCHAR2(30) 如果是用户定义的类型,则为属性类型的名称
length Y NUMBER CHAR或VARCHAR2属性的长度。
precision Y NUMBER NUMBER属性的精度。
scale Y NUMBER NUMBER属性的比例
character_set_name Y VARCHAR2(44) 说明的属性字符集
attr_no N NUMBER 在起始语句CREATE TYPE中说明的属性位置。
inherited Y VARCHAR2(3)
user_type_methods
type_name N VARCHAR2(30) 对象类型的名称
method_name N VARCHAR2(30) 方法的名称
method_no N NUMBER(22) 用于区别重载方法的方法号
method_type Y VARCHAR2(6) 方法类型,可以是M A P、O R D E R、P U B L I C之一。
parameters N NUMBER(22) 方法的参数个数
results N NUMBER(22) 方法返回结果个数
final Y VARCHAR2(3)
instantiable Y VARCHAR2(3)
overriding Y VARCHAR2(3)
inherited Y VARCHAR2(3)
user_object_tables
table_name N VARCHAR2(30)
tablespace_name Y VARCHAR2(30)
cluster_name Y VARCHAR2(30)
iot_name Y VARCHAR2(30)
status Y VARCHAR2(8)
pct_free Y NUMBER(22)
pct_used Y NUMBER(22)
ini_trans Y NUMBER(22)
max_trans Y NUMBER(22)
initial_extent Y NUMBER(22)
next_extent Y NUMBER(22)
min_extents Y NUMBER(22)
max_extents Y NUMBER(22)
pct_increase Y NUMBER(22)
freelists Y NUMBER(22)
freelist_groups Y NUMBER(22)
logging Y VARCHAR2(3)
backed_up Y VARCHAR2(1)
num_rows Y NUMBER(22)
blocks Y NUMBER(22)
empty_blocks Y NUMBER(22)
avg_space Y NUMBER(22)
chain_cnt Y NUMBER(22)
avg_row_len Y NUMBER(22)
avg_space_freelist_blocks Y NUMBER(22)
num_freelist_blocks Y NUMBER(22)
degree Y VARCHAR2(10)
instances Y VARCHAR2(10)
cache Y VARCHAR2(5)
table_lock Y VARCHAR2(8)
sample_size Y NUMBER(22)
last_analyzed Y DATE(7)
partitioned Y VARCHAR2(3)
iot_type Y VARCHAR2(12)
object_id_type Y VARCHAR2(16)
table_type_owner Y VARCHAR2(30)
table_type Y VARCHAR2(30)
temporary Y VARCHAR2(1)
secondary Y VARCHAR2(1)
nested Y VARCHAR2(3)
buffer_pool Y VARCHAR2(7)
row_movement Y VARCHAR2(8)
global_stats Y VARCHAR2(3)
user_stats Y VARCHAR2(3)
duration Y VARCHAR2(15)
skip_corrupt Y VARCHAR2(8)
monitoring Y VARCHAR2(3)
cluster_owner Y VARCHAR2(30)
dependencies Y VARCHAR2(8)
compression Y VARCHAR2(8)
dropped Y VARCHAR2(3)
4.2 其他数据库对象
1.数据库任务
user_jobs
job N NUMBER 任务ID号。只要该任务存在,该ID就保持不变
log_user N VARCHAR2(30) 提交任务的用户
priv_user N VARCHAR2(30) 默认权限适用于该任务的用户
schema_user N VARCHAR2(30) 任务的默认模式
last_date Y DATE 任务上一次执行成功的日期
last_sec Y VARCHAR2(8) 意义与last_date相同,为HH24:MI:SS格式(只有时间格式)
this_date Y DATE 任务开始执行的日期。如果任务没有开始则为空。
this_sec Y VARCHAR2(8) 任务开始执行的时间,只有时间格式HH24:MI:SS
next_date N DATE 当任务将在下一次执行时的日期
next_sec Y VARCHAR2(8) 当任务将在下一次执行时的时间,只有时间格式HH24:MI:SS
total_time Y NUMBER 系统在任务上的总时间开销(以秒为单位)
broken Y VARCHAR2(1) 如果任务中断则为Y,否则为N。
interval N VARCHAR2(200) 时间间隔:用来计算next_date值的日期函数。
failures Y NUMBER 自从成功执行上一个任务后的失败次数
what Y VARCHAR2(4000) 构成匿名PL/SQL块的包体。限长4000字节
nls_env Y VARCHAR2(4000) 任务的NLS环境(由ALTER SESSION说明)
misc_env Y RAW 任务其他会话的参数
instance Y NUMBER 在Oracle8i下运行该任务的OPS环境的实例(数据库实例)
dba_jobs_running
sid Y NUMBER 正在运行任务的进程的进程标识符
job Y NUMBER 任务号
failures Y NUMBER 自从上次成功运行后任务执行失败的次数
last_date Y DATE 该任务成功运行的最后日期
last_sec Y VARCHAR2(8) 与last_date相同,但以字符格式返回,只有时间格式HH24:MI:SS
this_date Y DATE 按计划下次运行任务的日期
this_sec Y VARCHAR2(8) 与this_date相同,但以字符格式返回,只有时间格式HH24:MI:SS
instance Y NUMBER 在Oracle8i下运行该任务的OPS环境的实例(数据库实例)
2.数据库连接 user_db_links
db_link N VARCHAR2(128) 数据库连接名
username Y VARCHAR2(30) 将使用连接的用户名
password Y VARCHAR2(30) 将使用连接的用户密码
host Y VARCHAR2(2000) 用于连接的Net8字符串:主机地址
created N DATE 数据库连接创建的日期
3.目录 all_directories
owner N VARCHAR2(30) 所有者
directory_name N VARCHAR2(30) 目录名
directory_path Y VARCHAR2(4000) 目录所在的文件系统的操作系统路径
4.库(字典) user_libraries
library_name N VARCHAR2(30) 库名
file_spec Y VARCHAR2(2000) 库所在文件目录的操作系统路径及库文件(如:dll)
dynamic Y VARCHAR2(1) 如果该库是动态的(.dll),则为Y,否则为N
status Y VARCHAR2(7) 库状态—VALID或INVALID
5.序列 user_sequences
sequence_name N VARCHAR2(30) 序列名
min_value Y NUMBER 序列的起始值
max_value Y NUMBER 序列的终止值
increment_by N NUMBER 步长:为每个NEXTVAL增加的序列数的取值
cycle_flag Y VARCHAR2(1) 如果在极限达到时回转则为Y,否则为N
order_flag Y VARCHAR2(1) 如果按顺序生成序列数则为Y,否则为N
cache_size N NUMBER 缓冲序列数的个数
last_number N NUMBER 写入磁盘的最后序列数。该数可能与CURRVAL不同
6.替代名(同义词) user_synonyms
synonym_name N VARCHAR2(30) 替代名的名称
table_owner Y VARCHAR2(30) 由synonym引用对象的拥有者
table_name N VARCHAR2(30) 由synonym引用对象的名称
db_link Y VARCHAR2(128) 由远程synonym引用的数据库连接
4.3 子程序、方法、触发器
1.子程序 user_procedures 子程序名(包括过程、函数、包)
user_arguments 子程序参数(包括过程、函数、包)
user_procedures
object_name N VARCHAR2(30) 子程序的名称
procedure_name Y VARCHAR2(30) 包下子程序的名称
aggregate Y VARCHAR2(3) 聚集;集合
pipelined Y VARCHAR2(3) 管道;传递途径
impltypeowner Y VARCHAR2(30)
impltypename Y VARCHAR2(30)
parallel Y VARCHAR2(3) 并行
interface Y VARCHAR2(3) 接口
deterministic Y VARCHAR2(3)
authid Y VARCHAR2(12)
user_arguments
object_name Y VARCHAR2(30) 子程序的名称
package_name Y VARCHAR2(30) 包名:如果子程序在包中的话,则为该包的名称
object_id N NUMBER 对象号:对子程序进行的编号
overload Y VARCHAR2(40) 重载子程序的唯一标识符
argument_name Y VARCHAR2(30) 参数名
position N NUMBER 参数在表中的位置,或在函数返回值为空
sequence N NUMBER 包括在嵌套层中的参数序列
data_level N NUMBER 复合类型(表或记录)参数的层次
data_type Y VARCHAR2(30) 参数的数据类型
default_value Y LONG 说明的默认值
default_length Y NUMBER 默认参数的长度
in_out Y VARCHAR2(9) 参数模式为IN,OUT,IN OUT之一
data_length Y NUMBER 按字节计算的参数长度
data_precision Y NUMBER 参数精度
data_scale Y NUMBER 参数比例
radix Y NUMBER 参数的表示基数
character_set_name Y VARCHAR2(44) 说明的参数字符集
type_owner Y VARCHAR2(30) 用户定义参数类型的拥有者
type_name Y VARCHAR2(30) 用户定义参数类型的名称
type_subname Y VARCHAR2(30) 用户定义附属类型的名
type_link Y VARCHAR2(128) 远程用户定义类型时的数据库连接名称
pls_type Y VARCHAR2(30)
char_length Y NUMBER
char_used Y VARCHAR2(1)
2.方法 user_method_params 对象类型方法的参数
user_method_results 对象类型方法的返回值
user_method_params
type_name N VARCHAR2(30) 对象类型的名称
method_name N VARCHAR2(30) 方法名
method_no N NUMBER 方法号(用于区别重载的方法)
param_name N VARCHAR2(30) 参数名
param_no N NUMBER 参数个数或位置
param_mode Y VARCHAR2(6) 参数模式(IN、OUT、IN OUT)
param_type_mod Y VARCHAR2(7) 参数类型修改符(如REF)
param_type_owner Y VARCHAR2(30) 参数类型拥有者
param_type_name Y VARCHAR2(30) 参数类型名
character_set_name Y VARCHAR2(44) 定义的参数字符集
user_method_results
type_name N VARCHAR2(30) 对象类型名称
method_name N VARCHAR2(30) 方法名称
method_no N NUMBER 方法号(用于区别重载的方法)
result_type_mod Y VARCHAR2(7) 返回值的类型修改符(如REF)
result_type_owner Y VARCHAR2(30) 如果是用户定义的类型,则为返回值类型的拥有者
result_type_name Y VARCHAR2(30) 如果是用户定义的类型,则为返回值类型的名称
character_set_name Y VARCHAR2(44) 定义的返回值字符集
3.触发器 user_triggers 触发器
user_trigger_cols 触发器的列
user_triggers
trigger_name Y VARCHAR2(30) 触发器名称
trigger_type Y VARCHAR2(16) 触发器类型,包括:BEFORE EACH ROW,AFTER EACH ROW,BEFORE STATEMENT,AFTER STATEMENT,INSTEAD OF
triggering_event Y VARCHAR2(227) 触发事件,包括:INSERT,UPDATE,DELETE及其任意组合(如:INSERT OR UPDATE OR DELETE)
table_owner Y VARCHAR2(30) 表的所有者
base_object_type Y VARCHAR2(16) 基本对象类型(表的类型),包括:TABLE,VIEW
table_name Y VARCHAR2(30) 表名(含视图名)
column_name Y VARCHAR2(4000) 列名:用于触发器的列名称
referencing_names Y VARCHAR2(128) 参照名:REFERENCING NEW AS NEW OLD AS OLD
when_clause Y VARCHAR2(4000) 条件:触发动作需要满足的条件
status Y VARCHAR2(8) 状态:enable,disable
description Y VARCHAR2(4000) 描述:触发器头
action_type Y VARCHAR2(11) 动作类型:PL/SQL
trigger_body Y LONG 触发器体: 触发器体完全放置在Long字段中,导致触发器不能很长,可将独立功能用PROCEDURE实现,在触发器中调用即可。
user_trigger_cols
trigger_owner Y VARCHAR2(30) 触发器的所有者
trigger_name Y VARCHAR2(30) 触发器名称
table_owner Y VARCHAR2(30) 表的所有者
table_name Y VARCHAR2(30) 表名(含视图名)
column_name Y VARCHAR2(4000) 用于触发器的列名称
column_list Y VARCHAR2(3) 如果在update子句中说明该列的话,则为YES,否则为NO。
column_usage Y VARCHAR2(17) 说明列在触发器中的引用方式。它可以带有操作符NEW,OLD,IN,OUT,IN OUT 的组合。
4.4 源代码和编译错误
1.源代码 user_source 包,包体,函数,过程,对象类型,对象类型体的源代码
name Y VARCHAR2(30) 内置对象的名称
type Y VARCHAR2(12) 对象类型
line Y NUMBER 当前源代码行的行号
text Y VARCHAR2(4000) 当前行的源文本
2.编译错误 user_errors 视图和包,包体,函数,过程的编译错误
name N VARCHAR2(30) 对象名
type Y VARCHAR2(12) 对象类型
sequence N NUMBER 错误序号(针对同一个对象的多个错误)
line N NUMBER 错误行号:错误所在的行号
position N NUMBER 错误位置号:错误所在的行中以零为基数的偏移量
text N VARCHAR2(4000) 包括错误代码和错误信息在内的错误文本
attribute Y VARCHAR2(9) 错误类型
message_number Y NUMBER 错误编号:oracle对错误的解析编号
4.5 相关和限制
1.相关 user_dependencies 对象之间的相关(引用)
user_dependencies
name N VARCHAR2(30) 对象名称
type Y VARCHAR2(17) 对象类型,可以是PROCEDURE、FUNCTION、PACKAGE、PACKAGE BODY、TYPE、TYPE BODY、TRIGGER或JAVA CLASS(Oracle8i使用)。
referenced_owner Y VARCHAR2(30) 相关对象的所有者
referenced_name Y VARCHAR2(64) 相关对象名称
referenced_type Y VARCHAR2(17) 相关对象类型
referenced_link_name Y VARCHAR2(128) 与引用对象连接的数据库连接名称(在引用对象为远程数据库时)
schemaid Y NUMBER 模式序号(等价于userid的值)
dependency_type Y VARCHAR2(4) 相关类型:HARD(确实、接近),REF(参考)物化视图与表的相关性
2.限制 user_constraints 表的限制(约束)
user_constraints 约束
owner N VARCHAR2(30) 所有者
constraint_name N VARCHAR2(30) 约束名
constraint_type Y VARCHAR2(1) 约束类型 包括:P,U,R,C
table_name N VARCHAR2(30) 表名
search_condition Y LONG(0) 约束类型为C时的约束(条件)
r_owner Y VARCHAR2(30) 外键关联的主键的所有者
r_constraint_name Y VARCHAR2(30) 外键关联的主键
delete_rule Y VARCHAR2(9) 级联删除规则:NO ACTION 不做处理,SET NULL 设置为空,CASCADE 级联删除
status Y VARCHAR2(8) 状态:enable 有效,disable 无效
deferrable Y VARCHAR2(14) 是否延期 NOT DEFERRABLE
deferred Y VARCHAR2(9) 延期处理类型 IMMEDIATE
validated Y VARCHAR2(13) 经过验证的 VALIDATED
generated Y VARCHAR2(14) 生成的;发生的
bad Y VARCHAR2(3)
rely Y VARCHAR2(4) 依赖
last_change Y DATE(7) 最末一次修改时间
index_owner Y VARCHAR2(30) 相关索引的所有者
index_name Y VARCHAR2(30) 相关索引(名)
invalid Y VARCHAR2(7)
view_related Y VARCHAR2(14)