oracel数据字典入门
ORACLE数据字典

ORACLE数据字典(一)数据字典概念Oracle数据字典由表和视图组成,其中存储了一些与数据库结构信息相关的数据库对象。
数据字典描述了实际数据的组织方式。
例如,表的创建者信息、创建时间信息、表空间信息、用户访问权限信息等。
它们可以像其他数据库表或视图一样进行查询,但不能修改。
它们存储在系统表空间中。
当用户在操作数据库中的数据时遇到困难,他们可以访问数据字典来查看详细信息。
数据字典不仅是数据库的核心,也是所有用户,包括最终用户、程序员和数据库管理员的重要工具。
因为数据字典是只读的,所以我们只能对其表或视图使用SQL查询语句。
oracle数据库字典通常是在创建和安装数据库时被创建的,oracle数据字典是oracle数据库系统工作的基础,没有数据字典的支持,oracle数据库系统就不能进行任何工作。
数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。
数据字典内容包括:1.数据库中所有模式对象的信息,如表、视图、集群、索引、集群、同义词、序列、过程、方法、包、触发器等。
2,分配多少空间,当前使用了多少空间等。
3,列的缺省值。
4.约束信息的完整性。
5.Oracle用户的名称。
6,用户及角色被授予的权限。
7,用户访问或使用的审计信息。
8,其它产生的数据库信息。
(二)数据字典分类数据字典按照存在的形式分为数据字典表和数据字典视图。
2.1数据字典表数据字典表里的数据是oracle系统存放的系统数据,而普通表存放的是用户的数据。
为了方便的区别这些表,这些表的名字都是用\结尾,这些表属于sys用户。
数据字典表由$oracle_uuhome/rdbms/admin/sql创建。
创建BSQ脚本,并在此脚本中调用其他脚本来创建这些数据字典表。
在这些创建脚本中使用基表创建SQL。
只有Oracle可以读取和写入这些数据字典表。
基表是存储数据库信息的基础表。
基表是在任何Oracle 数据库中创建的第一个对象。
使用“创建数据库”创建数据库时,只要Oracle server运行SQL BSQ脚本,就会自动创建这些对象。
ORACLE常用数据字典

--查看VGA信息:
show sga;
select * from v$sgastat;
--可以通过以下几个动态性能视图查看信息:
V$sysstat 系统统计信息
V$sesstat 用户会话统计信息
SQL> select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
from dba_tablespaces t, dba_data_files d where t.tablespace_name = d.tablespace_name
o alter tablespace sales online;
o 第五步:查询dba_data_files确认
o 创建用户,指定默认表空间,磁盘配额
o create user rose identified by rose default
V$ 当前实例的动态视图,包含系统管理和优化使用的视图;
GV_ 分布环境下所有实例的动态视图,包含系统管理和优化使用的视图, 这里的GV表示 Global v$的意思;
如当前分布环境下启动多个实例:
set line 160 (每行显示160个字符)
select inst_id,sid,lmode from gv$lock where inst_id = 1 or inst_id=2;
--查看表空间中数据文件存放的路径:
SQL> SELECT TABLESPACE_NAME, BYTES/1024/1024 FILE_SIZE_MB, FILE_NAME FROM DBA_DATA_FILES;
删除表空间:
第7章 数据字典

第7章 Oracle数据字典
Oracle数据字典
三类主要的静态数据字典表 dba_xxx 描述DBA用户拥有的数据字典。 all_xx 描述所有用户拥有的数据字典。 user_xx 描述当前用户拥有的数据字典
第7章 Oracle数据字典
Oracle数据字典
数据字典表,查询数据库对象,我们通过例子 查看如下的三个数据字典表。 user_tables user_indexes user_views 其实,我们也可以查询 dba_tables,dba_indexes和user_views 的数据字典表。
Oracle数据字典
数据字典是在数据库的创建过程中创建的,它由 Oracle数据库服务器管理,存储在系统表空间中, 它是一个集合,这个集合由只读表和视图组成,提 供所有和数据库相关的信息。数据字典由两大类组 成。 即基表和数据字典视图 基表:基表无法读取,必须通过数据字典视图才转 化为可读的表。 数据字典视图:是可读的数据字典,也是DBA经常 使用的数据字典。
第7章 Oracle数据字典
Oracle数据字典
动态性能视图以v$开头,它只存在于运行的数 据库中,它是一组虚表。 V$instance V$database V$controlfile V$lo数据字典
综合实例演示
Oracle数据字典应用示例
Oracle数据字典应用示例
查询数据库的归档模式。 SQL>archived log list 查询数据文件 select file_id,file_name,tablespace_name from dba_data_files; 查询表空间信息 select tablespace_name,block_size,contents from dba_tablespaces;
oracle 数据字典 字段内容

一、概述Oracle数据字典是Oracle数据库内置的元数据信息集合,用于存储和展示数据库中的对象、表、视图、索引等相关信息。
其中,字段内容是数据字典中的一个重要部分,它记录了数据库中各个字段的属性、数据类型、约束等信息。
本文将从字段内容的定义、结构和应用角度进行详细的介绍和分析,帮助读者更好地理解和运用Oracle数据字典中的字段内容。
二、字段内容的定义在Oracle数据库中,字段内容指的是数据库中表的字段定义信息,包括字段名、数据类型、长度、约束、默认值等。
它是数据库设计和管理的重要指标之一,对于数据库开发人员、管理员和分析师来说具有重要意义。
三、字段内容的结构字段内容包括以下几个方面的信息:1.字段名:字段在表中的名称,一般由字母、数字和下划线组成。
2.数据类型:字段存储的数据类型,如VARCHAR2、NUMBER、DATE等。
3.长度:字段存储数据的长度限制,如VARCHAR2(50)表示最大长度为50个字符。
4.约束:字段的数据约束,如主键约束、外键约束、唯一约束等。
5.默认值:字段的默认数值或表达式,当插入数据时若未指定该字段的值,则自动填充默认值。
四、字段内容的应用1.数据库设计:在进行数据库设计时,需要合理地定义字段内容,选择合适的数据类型、长度和约束,以便存储和保护数据的完整性和一致性。
2.数据分析:在进行数据分析时,可以通过字段内容了解到表中各个字段的基本信息,为数据清洗、转换和分析提供依据。
3.性能优化:通过分析字段内容,可以优化数据库的物理结构、索引设计等,提高数据库的性能和响应速度。
五、字段内容的查询方法在Oracle数据库中,可以通过以下几种方式查询字段内容:1.使用SQL语句查询数据字典视图,如USER_TAB_COLUMNS、ALL_TAB_COLUMNS、DBA_TAB_COLUMNS等。
2.使用Oracle SQL Developer工具进行可视化操作,通过图形化界面查看和编辑字段内容。
DataDictionary(数据字典)

DataDictionary(数据字典)前⾔在创建数据库的同时,Oracle也会创建⼀些其他的Objects/Structures,包括:1.Data Dictionary(数据字典)2.Performance tables(动态性能表)3.PL/SQL packages(PL/SQL程序包)4.数据库时间触发器⼀.Data Dictionary数据字典是Oracle 数据库最重要的部分之⼀,它是⼀组只读表和视图,提供有关其相关数据库的信息(这些信息相对稳定)。
1.数据字典的组成(1).基表<Base tables>(核⼼,但⼀般我们不和他打交道) 【1】作⽤:存储数据库的说明(description)。
基表是存储有关数据库的信息的底层表。
基表是在任何Oracle 数据库中⾸先创建的对象。
在使⽤CREATE DATABASE 创建数据库时,只要Oracle 服务器运⾏sql.bsq 脚本,就会⾃动创建这些对象。
只有Oracle 服务器才能对这些基表执⾏写⼊操作。
⽤户很少直接访问基表,因为其中的数据⼤多数都是以隐含格式存储的。
【2】“基表”在使⽤Create Database时候创建,这时Oracle调⽤了admin/sql.bsq脚本进⾏创建。
(2).数据字典视图<Data Dictionary views> 【1】简化“基表”信息。
数据字典视图是基表的汇总,可以更有效地显⽰基表信息。
【2】“数据字典视图”是在运⾏CREATE DATABASE命令之后使⽤catalog.sql脚本创建的。
2.数据字典存储以下内容(1).逻辑(logical)和物理(physical)数据库结构数据库内所有⽅案对象的定义,这些对象包括表、视图、索引、簇、同义词、序列、过程、函数、程序包、触发器等等。
(2).对象的定义(definition)和空间分配(space allocation)已为⽅案对象分配的空间量以及它们当前使⽤的空间量。
oracle数据字典的使用

数据字典数据字典记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者为sys用户。
用户只能在数据字典上执行查询操作,而其维护和修改是由系统自动完成。
数据字典包括:数据字典基表和数据字典视图,其中基表存储数据库的基本信息,普通用户不能直接访问数据字典的基表,数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字典试图取得系统信息,数据字典视图主要包括:user_xxx,all_xxx,dba_xxx三种类型。
er_tables:显示当前用户所拥有的表。
他只返回用户所对用方案的所有表。
select tabel_name from users_tables;2.all_tables:用于显示当前用户可以访问的所有表,它不仅会返回当前用户方案的所有表,还会返回当前用户可以访问的其他方案的表。
select tabel_name from all_tables;3.dba_tables它会显示所有方案拥有的数据表,但是查询这种数据库字典视图,要求用户必须是dba角色或是有select anytable系统权限。
例如:当用system用户查询数据字典视图dba_tables 时,会返回system,sys,scott....方案所对应的数据库表。
在建立用户时,oracle会把用户的信息用户存放在数据字典中,当给用户赋予权限或者角色时,oracle会把权限或者角色的详细信息存放在数据字典中。
dba_users可以查询显示所有数据库用户的详细信息。
desc dba_role_privs(看表的列结构)数据字典视图:dba_sys_privs可以显示用户具有的系统权限。
数据字典视图:dba_tab_privs可以显示用户具有的对象权限。
数据字典视图:dba_col_privs可以显示用户具有的列权限。
数据字典视图:dba_role_privs可以显示用户所有具有的角色。
数据字典视图:1.查看scott具有的角色,可查询dba_role_privs;角色是若干个权限的集合。
Oracle数据库之数据字典

数据字典视图的查找 数据字典视图非常的多,该怎么样去查找呢? 有一个视图,通过这个视图可以查找所有的数据字典视图,这个视图就是 dictionary,这个视图的同义词是dict
注意:数据字典视图最经典的用法是使用别人已经写好的一些查询。大 家主要的是去练习一下“oracle常用经典sql查询.doc”里面的各个查询。
Oracle数据库之数据字典
什么叫数据字典?
数据字典指的是描述数据的数据。 举个例子: 1、我们在数据库里面创建了一个表 这个表位于哪个数据文件 这个表有哪些列 这个表的每一个列的数据类型
这个表的约束
等等 这些信息都是描述这个表的,这些信息也存放在一些表中,这些表就是数 据字典,数据字典中的数据描述的是整个数据库的各种各样的信息。 数据库要能够访问,数据字典必须能够被访问。
动态性能视图 有一些数据,例如内存中的数据、控制文件中的数据,oracle提供了一些访问 这些数据的方式:以表的方式展现这些数据。 这些数据并没有存在实际的表中,只是以表的形式展现出来,因此是一些虚拟 的表。 数据库在运行、控制文件和内存中的数据在不断地变化,那么动态性能视图中 的数据也在不停的变化,数据库重新启动以后,动态性能视图中的数据全部丢 失。 所有的动态性能视图的名称都存放在v$fixed_table里面。 动态性能视图的名字都是以v_$开始的,属主是sys。 Oracle为每一个动态性能视图提供了一个同义词,都以v$开头,例如v$session
通过这个脚本,我们发现大多数的数据字典基本表是以$结尾的
数据字典视图 1、列名含义清楚 2、视图隐藏了基本表之间的复杂关系 3、数据字典视图的所有者是sys 4、oracle还为所有的数据字典视图建立了公共的同义词,这样用户就可以通过 别名来访问数据字典视图 5、数据字典视图和同义词通过catalog.sql来建立
oracle数据字典

如果我们想查询跟索引有关的数据字典时,可以用下面这条SQL语句:
SQL>;select * from dictionary where instr(comments,'index')>;0;
不能连接数据库。对一般用户,通常授予CONNECT和RESOURCE角色权限,命令如下:
SQLDBA>GRANT CONNECT,RESOURCE TO RSXT;
对于一个有着许多用户的数据库系统,我们可以通过下述方法来了解数据库的用户情况
。
1.对于非DBA用户
对于非DBA用户,有两条命令,即:
CLE数据库文件包括数据文件、日志文件和控制文件。
1.数据文件(DATA FILES)
ORACLE数据库中的数据,逻辑上存放在表空间里,但物理上却是存放在数据文件里的,数
据文件有如下特点,即每一个数据文件只与一个数据库相联系,数据库文件一旦建立,就不能
改变大小,一个表空间可以包含一个或多个数据文件等。
加以标识(允许1~8个字符),数据库名在创建数据库时确认,且保存在控制文件中。
2.实例(INSTANCE,也译作例程)
实例是存取和控制数据库的软件机制。它由系统全局区(System Global Area,即SGA)和
ORACLE进程两部分组成,和数据库名一样,实例也要唯一标识,并且在安装ORACLE软件时确认
。
我们可以采用下述方法来了解实例标识。
有的系统管理员有意无意地将数据库名和实例标识取相同的标识符,当然是可以的,有时
甚至会带来某些方便,但笔者认为,还是取不同标识符为宜。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
oracle的数据字典入门篇 --- 内雪藏精华部分,要仔细看噢~(血红色字)!数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的。
比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等。
当用户在对数据库中的数据进行操作时遇到困难就可以访问数据字典来查看详细的信息。
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_usersuser_tables视图主要描述当前用户拥有的所有表的信息,主要包括表名、表空间名、簇名等。
通过此视图可以清楚了解当前用户可以操作的表有哪些。
执行命令为:select * from user_tablesuser_objects视图主要描述当前用户拥有的所有对象的信息,对象包括表、视图、存储过程、触发器、包、索引、序列等。
该视图比user_tables视图更加全面。
例如, 需要获取一个名为“package1”的对象类型和其状态的信息,可以执行下面命令:select object_type,statusfrom user_objectswhere object_name=upper(‘package1’);这里需注意upper的使用,数据字典里的所有对象均为大写形式,而PL/SQL 里不是大小写敏感的,所以在实际操作中一定要注意大小写匹配。
user_tab_privs视图该视图主要是存储当前用户下对所有表的权限信息。
比如,为了了解当前用户对table1的权限信息,可以执行如下命令:select * from user_tab_privs where table_name=upper('table1')了解了当前用户对该表的权限之后就可以清楚的知道,哪些操作可以执行,哪些操作不能执行。
前面的视图均为user_开头的,其实all_开头的也完全是一样的,只是列出来的信息是当前用户可以访问的对象而不是当前用户拥有的对象。
对于dba_开头的需要管理员权限,其他用法也完全一样,这里就不再赘述了。
2.动态数据字典Oracle包含了一些潜在的由系统管理员如SYS维护的表和视图,由于当数据库运行的时候它们会不断进行更新,所以称它们为动态数据字典(或者是动态性能视图)。
这些视图提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。
Oracle中这些动态性能视图都是以v$开头的视图,比如v$access。
下面就几个主要的动态性能视图进行介绍。
v$access该视图显示数据库中锁定的数据库对象以及访问这些对象的会话对象(session对象)。
运行如下命令:select * from v$accessv$session该视图列出当前会话的详细信息。
由于该视图字段较多,这里就不列详细字段,为了解详细信息,可以直接在sql*plus命令行下键入:desc v$session即可。
v$context该视图列出当前会话的属性信息。
比如命名空间、属性值等。
查看当前用户的缺省表空间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;查看用户下所有的表SQL>select * from user_tables;显示用户信息(所属表空间)select default_tablespace,temporary_tablespacefrom dba_users where username='GAME';显示当前会话所具有的权限SQL>select * from session_privs;显示特权用户select * from v$pwfile_users;查看某表的大小SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segmentswhere segment_name=upper('&table_name');查看放在Oracle的内存区里的表SQL>select table_name,cache from user_tables whereinstr(cache,'Y')>0;查看索引个数和类别SQL>select index_name,index_type,table_name from user_indexes order by table_name;查看索引被索引的字段SQL>select * from user_ind_columns whereindex_name=upper('&index_name');查看索引的大小SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segmentswhere segment_name=upper('&index_name');查看序列号,last_number是当前值SQL>select * from user_sequences;查看视图的名称SQL>select view_name from user_views;查看创建视图的select语句SQL>set view_name,text_length from user_views;SQL>set long 2000; 说明:可以根据视图的text_length值设定set long 的大小SQL>select text from user_views where view_name=upper('&view_name');查看同义词的名称SQL>select * from user_synonyms;约束条件查看某表的约束条件SQL>select constraint_name, constraint_type,search_condition,r_constraint_namefrom user_constraints where table_name = upper('&table_name');SQL>select c.constraint_name,c.constraint_type,cc.column_namefrom user_constraints c,user_cons_columns ccwhere c.owner = upper('&table_owner') and c.table_name =upper('&table_name')and c.owner = cc.owner and c.constraint_name = cc.constraint_nameorder by cc.position;存储函数和过程查看函数和过程的状态SQL>select object_name,status from user_objects whereobject_type='FUNCTION';SQL>select object_name,status from user_objects whereobject_type='PROCEDURE';查看函数和过程的源代码SQL>select text from all_source where owner=user andname=upper('&plsql_name');3.小结以上是Oracle的数据字典方面的基本内容,还有很多有用视图因为篇幅原因这里不能一一讲解,希望大家在平时使用中多留心。
总之,运用好数据字典技术,可以让数据库开发人员能够更好的了解数据库的全貌,这样对于数据库优化、管理等有极大的帮助!私人总结,能看到这里的朋友,将接受我整理出来的精华,但愿对你们有帮助:user_usersuser_tablesuser_objectsuser_tab_privsuser_role_privsuser_sys_privsuser_segmentsuser_indexesuser_ind_columnsuser_sequencesuser_viewsuser_synonymsuser_constraintsall_source。