本篇文章整理自网络。
一、概述
ORACLE数据字典是ORACLE数据库的重要组成部分,它提供了诸如数据库结构、数据库对
象空间分配和数据库用户等等有关数据库的信息。
Oracle里数据字典按照他们存在的形式可以分为数据字典表和动态性能视图。
1.数据字典表
数据字典表和用户创建的表没有什么区别,不过数据字典表里的数据是Oracle系统存放的系统数据,而普通表存放的是用户的数据而已,为了方便的区别这些表,这些表的名字都是用"$"结尾,当看到的sql语句里"$"结尾的这些表,这可能是一个数据字典表。对于数据字典表,里面的数据是有数据库系统自身来维护的,所以这里虽然和普通表一样可以用DML语句来修改数据内容,但是大家最好还是不要自己来做了,因为这些表都是作用于数据库内部的。
这里的数据字典表的用户都是sys,存在在system这个表空间里,表名都用"$"结尾,为了便于用户对数据字典表的查询,这样的名字r是不利于我们记忆的,所以Oracle对这些数据字典都分别建立了用户视图视图,不仅有叻更容易接受的名字,还隐藏了数据字典表表之间的关系,让我们字节通过视图来进行查询,简单而形象,Oracle针对这些对象的范围,分别把视图命名为DBA_XXXX, ALL_XXXX和USER_XXXX。
DBA_XXXX 可以看到所有数据字典里的信息
ALL_XXXX 可以看到所有这个用户可以看到的信息
USER_XXXX 仅仅是这个用户拥有的信息。
这些视图是由sys用户创建的,所以使用需要加上sys ,显然这个太麻烦了,所以Oracle为每个数据字典表的视图头建立了同名字的公共同义词(public synonyms). 这样简单的处理就省去了写sys.这个麻烦事。
2.动态性能视图
数据库的对象信息,比如表,用户,存储过程,函数,视图,索引等等,这些存在在数据库里的对象的信息,都是在数据字典表里进行维护的,我们可以借用一些比较好的Oracle开发工具比如PLSQL查看他们,或者直接通过对数据字典表进行sql查询,从而获得对象的信息。不过在数据库的meta信息里,除了这些对象静态对象的这些信息以外,数据库运行时的一些信息对于我们来说也是非常有帮助的,也更为有意义。比如,有多少个session,有什么样的process在实例里运行,系统的状态现在是如何的,可以看到这些信息都是实例运行时的动态信息,不是固定的信息,不同的时刻可能信息也是不一样的, Oracle为了进行维护的时候能够得知这些实例的这些类似状态一样的动态的信息,提供了动态性能视图,通过这个动态性能视图我们可以了解到实例内部的一些动态变化的状态信息。
动态信息视图也是数据字典的一种,也可以在dictionary里找到,开头为v$的都是我们这里提到的动态性能视图。 如V$Session.
二、深入理解
Oracle 的字典表和视图基本上可以分为三个层次。
1).X$表:这一部分表是 Oracle 数据库的运行基础,在数据库启动时由 Oracle 应用程序动态创建,这些对象只能查询。
2).GV$和 V$视图 :在创建了 X$表之后,Oracle 创建了 GV$和 V$视图。GV$视图的产生是为了满足 OPS 环境的需要,在 OPS 环境中,查询 GV$视图返回所有实例信息,而每个
V$视图是基于 GV$视图,增加了 INST_ID列的 WHERE 条件限制建立,只包含当前连接实例信息。
3).GV_$,V_$视图和 V$,GV$同义词 :在 GV$和 V$之后,Oracle 建立了 GV_$和 V_$视图,随后为这些视图建立了公用同义词。通常我们大部分用户访问的 V$对象,并不是视图,而是指向 V_$视图的同义词;而 V_$视图是基于真正的 V$视图(这个视图是基于 X$表建立的)。
详细的Oracle启动过程中创建这些表及视图,同义词的过程可参考链接:http://www.itpub.net/thread-199099-1-1.html。研究Oracle的数据字典,数据库对象之间的关系,以下是比较重要的:v$fixed_table,v$fixed_view_definition,bootstrap$。
三、简单应用(本人未验证)
利用数据字典功能,实现表中列的重命名。当然也可以使用简单的ddl语言来进行,如ALTER TABLE table_name RENAME COLUMN old_col TO new_col;以下为实现的代码
create or replace procedure sys.altercolname
(schmaname in varchar2,
tabname in varchar2,
oldcolname in varchar2,
newcolname in varchar2) is
n_schmaname varchar2(30); --模式名称
n_tablename varchar2(30); --表名称
n_oldcolname varchar2(30); --原来列名称
n_newcolname varchar2(30); --新的列名称
n_objnum number;
begin
n_schmaname := upper(schmaname);
n_tablename := upper(tabname);
n_oldcolname := upper(oldcolname);
n_newcolname := upper(newcolname);
SELECT OBJECT_ID INTO n_objnum
FROM ALL_OBJECTS
WHERE OWNER = n_schmaname
AND OBJECT_NAME=n_tablename;
UPDATE SYS.COL$
SET NAME=n_newcolname
WHERE OBJ# = n_objnum AND
NAME=n_oldcolname;
COMMIT;
end altercolname;
调用方式(不同环境下可能稍有不同):
exec altercolname(‘模式名称’,‘表名称’,‘原列名称’,‘新列名称’);
分享到:
相关推荐
Oracle数据字典是Oracle数据库中用于存储数据库结构信息...总的来说,Oracle数据字典是数据库管理员和开发人员理解数据库结构和管理数据库不可或缺的工具,通过合理利用数据字典,可以更加高效地完成数据库的管理工作。
总的来说,深入理解Oracle数据字典与视图对于提升数据库管理能力,解决实际问题,优化数据库性能具有非常重要的意义。通过学习和实践,你可以更有效地管理你的Oracle数据库,确保其稳定运行并满足业务需求。
Oracle数据字典是数据库管理系统Oracle中的一个重要组成部分,它是一个存储元数据(关于数据的数据)的特殊表和视图集合。...这些资源将有助于你深入理解Oracle数据字典,并在实际工作中有效利用它。
通过阅读《Oracle数据字典大全》,无论是数据库管理员还是开发者,都能深入理解Oracle数据库的工作原理,提升数据库管理和开发的效率。这篇文档可能是对Oracle数据字典的详尽总结,包含了丰富的实例和最佳实践,对于...
Oracle 数据字典是数据库管理系统中的一个重要组成部分,它存储着关于Oracle数据库结构、权限、对象以及系统设置等元数据。在数据库管理和开发过程中,了解和掌握数据字典对于优化查询、故障排查以及数据库设计都至...
### Oracle 数据字典参考知识点详解 #### 一、Oracle 数据字典概述 Oracle 数据字典是存储关于数据库元数据信息的特殊集合,这些信息包括表、视图、索引、用户权限等。对于数据库管理员(DBA)以及开发人员来说,...
通常,手动创建数据字典可能非常耗时,涉及编写和执行SQL查询,然后将结果整理成易于理解的文档格式。这个工具通过执行预定义的SQL脚本,可以自动将数据字典转换为Word文档,极大地提高了工作效率。 在MySQL中,...
这份"Oracle数据字典及中文详解"资料,对理解和管理Oracle数据库至关重要。 首先,我们来深入理解什么是数据字典。数据字典是数据库管理员和开发人员用于查询和理解数据库结构、对象和属性的重要工具。在Oracle中,...
Oracle数据字典是理解Oracle数据库架构和性能的关键。通过对`sysUsers`、`sysobjects`、`sysColumns`、`sysdepends`以及其他`dba_`、`user_`和`v$`表的深入研究,DBA和开发人员可以更有效地管理数据库环境,优化查询...
### ORACLE数据字典详解 #### 一、数据字典概念及作用 **数据字典**(Data Dictionary)是指对数据库中的各个数据对象及其属性进行...因此,在学习和工作中深入理解和熟练掌握Oracle数据字典的相关知识是非常有价值的。
`V$FIXED_VIEW_DEFINITION`视图是探索Oracle对象关系的关键入口,它展示了Oracle数据字典中视图的定义。通过对这个视图的研究,我们可以了解Oracle如何构建和组织它的内部视图,从而更深入地理解数据库的工作机制。 ...
### Oracle 数据字典详解 #### 一、基本的数据字典列表 ...通过以上数据字典和动态性能视图的详细介绍,我们可以更深入地理解 Oracle 数据库的内部结构,并利用这些信息来管理数据库、解决性能问题以及进行日常维护。
在Oracle数据库管理中,数据字典是一个非常重要的工具,它能够帮助我们理解数据库结构、表定义以及列属性等详细信息。本篇文章将介绍如何从Oracle数据库中利用COMMENT生成Excel格式的数据字典。 #### 一、Oracle...
OracleEBS中的数据字典为用户提供了一个详细的数据库架构指南,通过这些信息可以帮助用户更好地理解和管理OracleEBS中的数据。例如,`GL_BALANCES`表提供了关于账户余额的重要信息;而日记账相关的表则帮助用户追踪...
"DBGenerator"是一款跨平台的数据字典生成工具,专门针对MySQL、SQL Server和Oracle等常见数据库设计。这款工具的主要功能是帮助用户快速地生成这些数据库的结构文档,包括表的定义、字段信息、索引和外键关系等。...
### ORACLE 数据字典与视图详解 #### 一、概述 Oracle 数据库是一个功能强大的关系型数据库管理系统,其中的数据字典与视图是管理数据库的重要组成部分。数据字典是数据库内部用来存储元数据(即关于数据的数据)的...
### Oracle 数据字典详解 ...Oracle数据字典是理解Oracle数据库不可或缺的一部分。通过本篇文章的学习,希望读者能够对Oracle数据字典有一个全面的认识,并能够在实际工作中灵活运用所学知识,提高数据库管理的能力。
首先,我们要理解Oracle数据字典的分类。静态数据字典包含了数据库的静态元数据,例如对象定义、权限信息、系统资源分配等。这些信息存储在SYSTEM表空间中的特定表和视图中,由Oracle系统自动维护,并且用户通常只能...