Oracle数据字典
- 格式:doc
- 大小:62.50 KB
- 文档页数:2
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数据字典是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工具进行可视化操作,通过图形化界面查看和编辑字段内容。
一、Oracle数据字典主要由一下几种视图构成:ER视图以USER_为前缀,用来记录用户对象的信息2,ALL视图以ALL_为前缀,用来记录用户对象的信息及被授权访问的对象信息3.DBA视图以DBA_为前缀,用来记录数据库实例的所有对象的信息4.V$视图以V$为前缀,用来记录与数据库活动相关的性能统计动态信息5.GV$视图以GV$为前缀,用来记录分布式环境下所有实例的动态信息二、Oracle常用的数据字典1.基本数据字典字典名称说明DBA_TABLES 所有用户的所有表信息DBA_TAB_COLUMNS 所有用户的表的字段信息DBA_VIEWS 所有用户的所有视图信息DBA_SYNONYMS 所有用户的所有同义词信息DBA_SEQUENCES 所有用户的所有序列信息DBA_CONSTRAINTS 所有用户的表的约束信息DBA_IND_COLUMNS 所有用户的表的索引的字段信息DBA_TRIGGERS 所有用户的触发器信息DBA_SOURCES所有用户的存储过程信息DBA_SEGMENTS 所有用户的段的使用空间信息DBA_EXTENTS 所有用户的段的扩展信息DBA_OBJECTS 所有用户对象的基本信息CAT 当前用户可以访问的所有基表TAB 但前用户创建的所有基表、视图、同义词等DICT 构成数据字典的所有表的信息2.与数据库组件相关的数据字典数据库组件数据字典中的表或视图说明数据库V$DATAFILE 记录系统的运行情况表空间DBA_TABLESPACES 记录系统表空间的基本信息DBA_FREE_SPACE 记录系统表空间的空闲空间信息控制文件V$CONTROLFILE 记录系统控制文件的基本信息V$CONTROL_RECORD_SECTION 记录系统控制文件中记录文档段的信息V$PARAMETER 记录系统个参数的基本信息数据文件DBA_DATA_FILES 记录系统数据文件及表空间的基本信息V$FILESTAT 记录来自控制文件的数据文件信息V$DATAFILE_HEADER 记录数据文件头部的基本信息段DBA_SEGMENTS 记录段的基本信息区DBA_EXTENTS 记录数据区的基本信息日志V$THREAD 记录日志线程的基本信息V$LOG 记录日志文件的基本信息V$LOGFILE 记录日志文件的概要信息归档V$ARCHIVED_LOG 记录归档日志文件的基本信息V$ARCHIVED_DEST 记录归档日志文件的路径信息数据库实例V$INSTANCE 记录实例的基本信息V$SYSTEM_PARAMETER 记录实例当前有效的参数信息内存结构V$SGA 记录SGA区的信息V$SGASTAT 记录SGA的详细信息V$DB_OBJECT_CACHE 记录对象缓存的大小信息V$SQL 记录SQL语句的详细信息V$SQLTEXT 记录SQL语句的语句信息V$SQLAREA 记录SQL区的SQL基本信息后台进程V$BGPROCESS 显示后台进程信息V$SESSION 显示当前会话信息3.常用动态性能视图视图名称说明V$FIXED_TABLE 显示当前发行的固定对象的说明V$INSTANCE 显示当前实例的信息V$LATCH 显示锁存器的统计数据V$LIBRARYCACHE 显示有关库缓存性能的统计数据V$ROLLSTAT 显示联机的回滚段的名字V$ROWCACHE 显示活动数据字典的统计V$SAG 记录SGA区的信息V$SGASTAT 记录SGA的详细信息V$SORT_USAGE 显示临时段的大小及会话V$SQLTEXT 记录SQL语句的语句信息V$SQLAREA 记录SQL区的SQL基本信息V$STSSTAT 显示基本的实例统计信息V$SYSTEM_EVENT 显示一个事件的总计等待时间V$WAITSTAT 显示块竞争统计数据查看当前用户的缺省表空间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';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;显示当前会话所具有的权限SQL>select * from session_privs;显示指定用户所具有的系统权限SQL>select * from dba_sys_privs where grantee='GAME';显示特权用户select * from v$pwfile_users;显示用户信息(所属表空间)select default_tablespace,temporary_tablespacefrom dba_users where username='GAME';显示用户的PROFILEselect profile from dba_users where username='GAME';2、表查看用户下所有的表SQL>select * from user_tables;查看名称包含log字符的表SQL>select object_name,object_id from user_objectswhere instr(object_name,'LOG')>0;查看某表的创建时间SQL>select object_name,created from user_objects where object_name=upper('&table_name');查看某表的大小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 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('&index_name');查看索引的大小SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segmentswhere segment_name=upper('&index_name');4、序列号查看序列号,last_number是当前值SQL>select * from user_sequences;5、视图查看视图的名称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');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_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;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');☆dba_开头.....dba_users 数据库用户信息dba_segments 表段信息dba_extents 数据区信息dba_objects 数据库对象信息dba_tablespaces 数据库表空间信息dba_data_files 数据文件设置信息dba_temp_files 临时数据文件信息dba_rollback_segs 回滚段信息dba_ts_quotas 用户表空间配额信息dba_free_space 数据库空闲空间信息dba_profiles 数据库用户资源限制信息dba_sys_privs 用户的系统权限信息dba_tab_privs 用户具有的对象权限信息dba_col_privs 用户具有的列对象权限信息dba_role_privs 用户具有的角色信息dba_audit_trail 审计跟踪记录信息dba_stmt_audit_opts 审计设置信息dba_audit_object 对象审计结果信息dba_audit_session 会话审计结果信息dba_indexes 用户模式的索引信息☆user_开头user_objects 用户对象信息user_source 数据库用户的所有资源对象信息user_segments 用户的表段信息user_tables 用户的表对象信息user_tab_columns 用户的表列信息user_constraints 用户的对象约束信息user_sys_privs 当前用户的系统权限信息user_tab_privs 当前用户的对象权限信息user_col_privs 当前用户的表列权限信息user_role_privs 当前用户的角色权限信息user_indexes 用户的索引信息user_ind_columns 用户的索引对应的表列信息user_cons_columns 用户的约束对应的表列信息user_clusters 用户的所有簇信息user_clu_columns 用户的簇所包含的内容信息user_cluster_hash_expressions 散列簇的信息☆v$开头v$database 数据库信息v$datafile 数据文件信息v$controlfile 控制文件信息v$logfile 重做日志信息v$instance 数据库实例信息v$log 日志组信息v$loghist 日志历史信息v$sga 数据库SGA信息v$parameter 初始化参数信息v$process 数据库服务器进程信息v$bgprocess 数据库后台进程信息v$controlfile_record_section 控制文件记载的各部分信息v$thread 线程信息v$datafile_header 数据文件头所记载的信息v$archived_log 归档日志信息v$archive_dest 归档日志的设置信息v$logmnr_contents 归档日志分析的DML DDL结果信息v$logmnr_dictionary 日志分析的字典文件信息v$logmnr_logs 日志分析的日志列表信息v$tablespace 表空间信息v$tempfile 临时文件信息v$filestat 数据文件的I/O统计信息v$undostat Undo数据信息v$rollname 在线回滚段信息v$session 会话信息v$transaction 事务信息v$rollstat 回滚段统计信息v$pwfile_users 特权用户信息v$sqlarea 当前查询过的sql语句访问过的资源及相关的信息v$sql 与v$sqlarea基本相同的相关信息v$sysstat 数据库系统状态信息☆all_开头all_users 数据库所有用户的信息all_objects 数据库所有的对象的信息all_def_audit_opts 所有默认的审计设置信息all_tables 所有的表对象信息all_indexes 所有的数据库对象索引的信息☆session_开头session_roles 会话的角色信息session_privs 会话的权限信息☆index_开头index_stats 索引的设置和存储信息☆伪表dual 系统伪列表信息注意:dba权限可以访问动态性能视图。
oracle 数据字典查询语句Oracle 数据字典是一个包含了数据库中所有对象和结构的元数据集合。
通过查询数据字典,可以获取数据库的详细信息,如表、列、索引、约束、触发器等对象的定义和属性。
下面列举了十个常用的Oracle 数据字典查询语句。
1. 查询所有表名:```sqlSELECT TABLE_NAME FROM ALL_TABLES;```这个查询语句将返回当前用户下所有表的名称。
2. 查询表的列信息:```sqlSELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH, NULLABLE FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = '表名';```这个查询语句将返回指定表的所有列名、数据类型、数据长度和是否可空。
3. 查询表的索引信息:```sqlSELECT INDEX_NAME, COLUMN_NAME, COLUMN_POSITION FROM ALL_IND_COLUMNS WHERE TABLE_NAME = '表名';这个查询语句将返回指定表的所有索引名称、索引列名和索引列位置。
4. 查询表的主键信息:```sqlSELECT CONSTRAINT_NAME, COLUMN_NAME FROM ALL_CONS_COLUMNS WHERE TABLE_NAME = '表名' AND CONSTRAINT_NAME = 'PK_主键名'; ```这个查询语句将返回指定表的主键约束名和主键列名。
5. 查询表的外键信息:```sqlSELECT CONSTRAINT_NAME, COLUMN_NAME, R_CONSTRAINT_NAME, R_OWNER, R_TABLE_NAME, R_COLUMN_NAME FROM ALL_CONS_COLUMNS WHERE TABLE_NAME = '表名' AND CONSTRAINT_TYPE = 'R';```这个查询语句将返回指定表的外键约束名、外键列名、参考表的所有者、参考表名和参考列名。
数据字典和动态性能视图数据字典是oracle数据库中最重要的组成部分,它提供了数据库的一些系统信息。
动态性能视图记载了例程启动后的相关信息。
数据字典数据字典记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有者为sys用户。
用户只能在数据字典上执行查询操作(select语句),而其维护和修改是由系统自动完成的。
数据字典的组成:数据字典包括数据字典基表和数据字典视图,其中基表存储数据库的基本信息,普通用户不能直接访问数据字典的基表。
数据字典视图是基于数据字典基表所建立的视图,普通用户可以通过查询数据字典视图取得系统信息。
数据字典视图主要包括:user_xxx,all_xxx,dba_xxx三种类型。
user_tables:用于显示当前用户所拥有的所有表,它只返回用户所对应方案的所有表。
比如:select table_name from user_tables;all_tables用于显示当前用户可以访问的所有表,它不仅会返回当前用户方案的所有表,还会返回当前用户可以访问的其它方案的表select table_name from all_tables;dba_tables:它会显示所有方案拥有的数据库表,但是要查询这种数据字典视图,要求用户必须是dba角色,或是拥有select any table系统权限,例如:当system用户查询数据字典视图dba_tables时,会返回system,sys,Scott,……方案所对应的数据库表。
用户名、权限、角色在建立用户时,oracle会把用户的信息存放到数据字典中,当给用户授予权限或是角色时,oracle会将权限和角色的信息存放到数据字典中。
通过查询dba_users可以显示所有数据库用户的详细信息通过查询数据字典视图dba_sys_privs,可以显示用户所具有的系统权限通过查询数据字典视图dba_tab_privs可以显示用户所具有的对象权限通过查询数据字典视图dba_col_privs可以显示用户具有的列权限通过查询数据库字典视图dba_role_privs可以显示用户所具有的角色查询oracle中所有的系统权限,一般是DBA:select * from system_privilege_map order by name;查询oracle中的所有角色,一般是DBA:select * from dba_roles;查询oracle中所有的对象权限,一般是DBAselect distinct privilege from dba_tab_privs;查询数据库的表空间select tablespace_name from dba_tablespaces;那么,一个角色具有哪些权限呢?我们知道权限分为系统权限和对象权限,我们先看看系统权限:SQL> select * from dba_sys_privs where grantee='CONNECT';GRANTEE PRIVILEGE ADMIN_OPTION---------------------------------------------------------------------- ------------CONNECT CREATE SESSION NO SQL> select * from dba_sys_privs where grantee='RESOURCE';GRANTEE PRIVILEGE ADMIN_OPTION---------------------------------------------------------------------- ------------RESOURCE CREATE TRIGGER NO RESOURCE CREATE SEQUENCE NO RESOURCE CREATE TYPE NO RESOURCE CREATE PROCEDURE NO RESOURCE CREATE CLUSTER NO RESOURCE CREATE OPERATOR NORESOURCE CREATE INDEXTYPE NO RESOURCE CREATE TABLE NO从以上结果可以看出,在oracle 10g中,CONNECT 角色只有CREATE SESSION一个系统权限(oracle 9i中是8个),而RESOURCE角色有8个系统权限另外,查看系统权限还可以这样操作:select * from role_sys_privs where role=’角色名’其实这些信息完全可以通过PL/SQL Developer方便查看。
第12讲Oracle的数据字典的查询目的:1.掌握Oracle9i数据字典的作用和意义。
2.掌握常用对象的数据字典的查询。
授课内容:11.1什么是数据字典:1.数据字典(Oracle data dictionary): Oracle9i数据库的所有对象,权限,系统信息的视图,称为数据字典。
2.Oracle9i数据的所有信息,系统的权限,用户,角色,表,视图等等所有对象在创建后都保存在数据字典的表中。
这些表是归系统管理员DBA所有的,其他用户没有权限查询这些表。
3.但Oracle提供了访问这些表的视图,供其他用户访问这些数据字典。
4.数据库中存放数据字典的表的是非常关键的了,不能随意访问。
5.Oracle数据字典存储了用来管理数据库对象的所有信息。
6.Oracle内部字典:从用户角度出发的数据字典。
7.数据字典不是按字母来排序的,而是按其功能进行(表,安全性,等)分组的。
11.2数据字典的分组:在查询数据字典时,Oracle把不同的信息分别使用了不同的视图,如用户自己的,所有的用户,和DBA的信息。
ER:以USER_开头的视图只可以查询出登录用户自己的对象信息。
2.ALL:以ALL_开头的视图可以查询所有用户的对象信息。
这些对象要满足条件是:你创建的,或你由权限的,或授权给public 组的。
(1)你创建的对象。
(2)对象的所有者已经授予了这些对象的某个权限给你。
(3)public角色有权限的所有对象。
3.DBA: 以DBA_开头的视图查询数据库中所有的对象信息。
[] 数据字典的常用分组:1.导航图:DICTIONARY (DICT)和DICT_COLUMNS2.可选择的内容:表(和列),视图,同义词,序列3.约束和注释:4.索引和簇:5.抽象数据类型,与ORDBMS相关的结构和LOB:6.数据库连接,实体化视图:7.存储过程,函数,程序包,触发器:8.维:9.空间分配和空间使用:10.用户,权限:11.角色:12.审计:[] 数据字典的名称规定:除了特殊的情况外,Oracle数据字典对象的所有名称都以如下3个前缀开头:USER: 查询用户所拥有的对象的信息ALL:纪录了USER的信息以及授予了public或用户的对象的信息。
oracle dictionary常用方法封装Oracle Dictionary(数据字典)是Oracle数据库中用来存储关于数据库对象的信息的表和视图的集合。
它提供了对数据库架构和对象的访问,包括表、索引、视图、用户、列以及其他数据库对象的定义和描述。
在Oracle数据库中,用户可以通过Oracle Dictionary来查询和修改数据库对象的属性和结构。
以下是一些常用的方法封装,用于查询和使用Oracle Dictionary中的信息:1. 获取所有表名:```sqlSELECT table_name FROM all_tables;```该查询可以返回数据库中所有表的名称。
2. 获取指定表的列名和数据类型:```sqlSELECT column_name, data_type FROM all_tab_columns WHERE table_name = 'table_name';```将"table_name"替换为要查询的表名,可以获取该表的所有列名和对应的数据类型。
3. 获取指定用户的所有表名:```sqlSELECT table_name FROM all_tables WHERE owner ='username';```将"username"替换为要查询的用户的名称,可以获取该用户拥有的所有表的名称。
4. 获取指定表的所有索引名称:```sqlSELECT index_name FROM all_indexes WHERE table_name = 'table_name';```将"table_name"替换为要查询的表名,可以获取该表上的所有索引的名称。
5. 获取表的主键名:```sqlSELECT constraint_name FROM all_constraints WHEREtable_name = 'table_name' AND constraint_type = 'P';```将"table_name"替换为要查询的表名,可以获取该表的主键约束的名称。
Oracle中的数据字典技术及常用数据字典总结一、Oracle数据字典数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的。
比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等。
当用户在对数据库中的数据进行操作时遇到困难就可以访问数据字典来查看详细的信息。
Oracle中的数据字典有静态和动态之分。
静态数据字典主要是在用户访问数据字典时不会发生改变的,但动态数据字典是依赖数据库运行的性能的,反映数据库运行的一些内在信息,所以在访问这类数据字典时往往不是一成不变的。
以下分别就这两类数据字典来论述。
[@more@]1.静态数据字典这类数据字典主要是由表和视图组成,应该注意的是,数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。
静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*、all_*、dba_*。
user_*该视图存储了关于当前用户所拥有的对象的信息。
(即所有在该用户模式下的对象)all_*该试图存储了当前用户能够访问的对象的信息。
(与user_*相比,all_*并不需要拥有该对象,只需要具有访问该对象的权限即可)dba_*该视图存储了数据库中所有对象的信息。
(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)从上面的描述可以看出,三者之间存储的数据肯定会有重叠,其实它们除了访问范围的不同以外(因为权限不一样,所以访问对象的范围不一样),其他均具有一致性。
具体来说,由于数据字典视图是由SYS(系统用户)所拥有的,所以在却省情况下,只有SYS和拥有DBA系统权限的用户可以看到所有的视图。
没有DBA权限的用户只能看到user_*和all_*视。
如果没有被授予相关的SELECT权限的话,他们是不能看到dba_*视图的。
由于三者具有相似性,下面以user_为例介绍几个常用的静态视图:user_users视图主要描述当前用户的信息,主要包括当前用户名、帐户id、帐户状态、表空间名、创建时间等。
ORACLE数据字典与视图当ORACLE数据库系统启动后,数据字典总是可用,它驻留在SYSTEM表空间中。
数据字典包含视图集,在许多情况下,每一视图集有三种视图包含有类似信息,彼此以前缀相区别,前缀为USER、ALL和DBA。
前缀为USER的视图,为用户视图,是在用户的模式内。
前缀为ALL的视图为扩展的用户视图(为用户可存取的视图)。
前缀为DBA的视图为DBA的视图(为全部用户可存取的视图)。
在数据库ORACLE还维护了一组虚表(virtual table)记录当前数据库的活动,这些表称为动态性能表。
动态性能表不是真正的表,许多用户不能直接存取,DBA可查询这些表,可以建立视图,给其它用户授予存取视图权。
ORACLE数据字典与视图视图名说明ALL_CATALOG 为用户可存取的全部表、视图和序列ALL_COL_COMMENTS 为用户可存取的表和视图列上的注释ALL_COL_PRIVS 在列上授权,该用户或PUBLIC是被授与者ALL_COL_PRIVS_MADE 在列上授权,该用户为持有者或授与者ALL_COL_PRIVS_RECD 在列上授权,该用户或PUBLIC是被授与者ALL_CONSTRAINTS 在可存取表上的约束定义ALL_CONS_COLUMN 关于在约束定义中可存取列的信息ALL_DB_LINKS 用户可存取的数据库链ALL_DBF_AUDIT_OPTS 在对象建立时,所应用的缺省对象审计选择ALL_DEPENDENCIES 用户可存取的对象之间的从属关系ALL_ERROES 在用户可存取对象上的当前错误ALL_INDEXES 在用户可存取的表上的索引说明ALL_IND_COLUMNS 在可存取的表上的索引列ALL_OBJECTS 用户可存取的对象ALL_SEQUENCES 用户可存取的序列说明ALL_SNAPSHOTS 用户可存取的全部快照ALL_SOURCE 用户可存取的全部存储对象文本源程序ALL_SYNONYM 用户可存取的全部同义词ALL_TABLES 用户可存取的表的说明ALL_TAB_COLUMNS 用户可存取的表、视图、聚集的列ALL_TAB_COMMENTS 用户可存取的表或视图上的注释。
Oracle 常用数据字典以“USER_”开头:记录用户对象的信息,如user_tables包含用户创建的所有表;user_views等;以“ALL_”开头:记录用户对象的信息及被授权访问的对象信息;以“DBA_”开头:记录数据库实例的所有对象的信息,如DBA_USERS包含数据库实例中所有用户的信息,DBA的信息包含user和all的信息;以“V$ ”开头:当前实例的动态视图,包含系统管理和优化使用的视图;以“GV_”开头:分布环境下所有实例的动态视图,包含系统管理和优化使用的视图,这里的GV表示Global v$的意思;oracle常用数据字典,oracle10增加了不少数据字典,10g r1 有1713个,r2有1870个:1 基本的数据字典:DBA_TABLES 所有用户的所有表的信息;DBA_TAB_COLUMNS 所有用户的表的列(字段)信息;DBA_VIEWS 所有用户的所有视图信息;DBA_SYNONYMS 所有用户同义词信息;DBA_SEQUENCES 所有用户序列信息;DBA_CONSTRAINTS 所有用户的表约束信息;DBA_INDEXES 所有用户索引的简要信息;DBA_IND_COLUMNS 所有用户索引的列信息;DBA_TRIGGERS 所有用户触发器信息;DBA_SOURCE所有用户存储过程源代码信息;DBA_PROCEDUS 所有用户存储过程;DBA_SEGMENTS 所有用户段(表,索引,Cluster)使用空间信息;DBA_EXTENTS 所有用户段的扩展段信息;DBA_OBJECTS 所有用户对象的基本信息(包括素引,表,视图,序列等);CAT 当前用户可以访问的所有的基表;TAB 当前用户创建的所有基表,视图,同义词等;DICT 构成数据字典的所有表的信息;2 与数据库组件相关的数据字典:2.1数据库:V$DATABASE同义词V_$DATABASE,记录系统的运行情况;2.2表空间:DBA_TABLESPACES 记录系统表空间的基本信息;DBA_DATA_FILES 记录系统数据文件及表空间的基本信息;DBA_FREE_SPACE 记录系统表空间的剩余空间的信息;2.3控制文件:V$CONTROLFILE 记录系统控制文件的路径信息;V$PARAMETER 记录系统各参数的基本信息;v$CONTROLFILE_RECORD_SECTION 记录系统控制运行的基本信息;2.4数据文件:DBA_DATA_FILES 记录系统数据文件及表空间的基本信息;v$DATAFILE 记录来自控制文件的数据文件信息;v$FILESTAT 记录数据文件读写的基本信息;3查看VGA信息:--可以通过以下几个动态性能视图查看信息:V$sysstat 系统统计信息V$sesstat 用户会话统计信息V$pgastat 显示内存使用统计信息V$sql_workarea SQL游标所用工作区的信息V$ sql_workarea_active 当前系统工作区的信息--在V$process动态性能视图中可以查询到每个Oracle进程的PGA分配的内存和已使用的内存情况,其中PGA_used_mem表示已使用的,pag_alloc_mem表示已分配的,pga_max_men表示PGA的最大值。
Oracle数据库字典介绍Oracle数据字典是有表和视图组成的,存储有关数据库结构信息的一些数据库对象。
数据库字典描述了实际数据是如何组织的。
对它们可以象处理其他数据库表或视图一样进行查询,但不能进行任何修改。
Oracle数据库字典通常是在创建和安装数据库时被创建的,Oracle数据字典是Oracle数据库系统工作的基础,没有数据字典的支持,Oracle数据库系统就不能进行任何工作。
在Oracle数据库字典中,许多视图都有三个不同的实例,它们的前缀分别为"USER_"、"ALL_"及"DBA_"。
"USER_"为前缀的数据库字典视图通常记录执行查询的帐户所拥有的对象的信息,"ALL_"为前缀的数据库字典视图通常记录包括执行查询的帐户所拥有的对象的信息及授权至PUBLIC的帐户用户所拥有的对象的信息,"DBA_"为前缀的数据库字典视图则包含所有数据库对象的信息,而不管其所有者。
其他的字典视图中主要的是V$视图,之所以这样叫是因为他们都是以V$或GV$开头的。
V$视图是基于X$虚拟视图的。
V$视图是SYS用户所拥有的,在缺省状况下,只有SYS用户和拥有DBA 系统权限的用户可以看到所有的视图,没有DBA权限的用户可以看到USER_和ALL_视图,但不能看到DBA_视图。
与DBA_,ALL,和USER_视图中面向数据库信息相反,这些视图可视的给出了面向实例的信息。
在Oracle的绝大多数数据字典视图中都有象DBA_TABLES,ALL_TABLES和USER_TABLES这样的视图家族。
Oracle 中有超过100个视图家族,下表列出了最重要和最常用的视图家族,需要注意的是每个视图家族都有一个DBA_,一个ALL_一个USER_视图。
在Oracle中还有一些不常用的数据字典表,但这些表不是真正的字典家族,他们都是一些重要的单一的视图。
Oracle数据字典
数据字典是Oracle数据库的核心组件,它是由一系列对于用户而言是只读的基础表和视图组成,它保存了关于数据库本身以及其中存储的所有对象的基本信息。
可以认为数据字典记录了数据库实例自身的重要信息。
对数据字典的管理和维护由Oracle系统负责,任何数据库用户都无法对数据字典中的内容进行修改,但是数据库用户可以查看数据字典中的内容。
为了方便用户查看数据字典中的信息,数据字典中的信息也是通过表和视图的形式组织起来的,数据字典和视图都保存在SYSTEM表空间中。
数据字典中的信息实际上中保存在基本表中的,并且只有Oracle系统才有权读取和写入基础表。
基础表中存储的信息通常是经过加密处理的。
视图是一种虚拟表,它本身并不包含数据,其中的数据是经过处理后基本表中的数据。
数据字典中视图的作用是将表中各种信息进行分类,以方便用户获取其中的数据。
大多数情况下,用户可以通过数据字典视图来获取与数据库相关的信息,而不需要访问数据字典表。
在Oracle实例运行期间,需要从数据字典表中读取信息,用于判断用户要访问的对象是否存在等信息。
同时,Oracle还不断地向数据字典表中写入数据,以反映用户对数据库、以及数据库中保存的各对象所做的修改。
例如,用户创建了一个表,这时系统将在数据字典中记录该表的结构信息、表在存储信息等。
对于数据库用户而言,数据字典中的视图好一本关于当前Oracle数据库的参考手册,可以通过SELECT语句查询。
数据库用户由于权限不同,所能访问的数据字典视图的数量和类型也不同。
用户所使用数据字典视图大致可以分为三类,并且各种类型的视图以不同名称的前缀表示。
这三类数据字典视图的介绍如下:
●USER视图USER视图就是以USER_字符为名称前缀的数据字典视图。
每个数据
库用户都有一组属于自己的视图,在USER视图中包含了属于该用户的所有对象
的信息。
●ALL视图ALL视图就是以ALL_字符为名称前缀的数据字视图。
ALL数据字典
视图是USER视图的扩展,在ALL视图中记录了属于该的所有对象的信息,以及
该用户可以访问的属于其他用户的对象的信息。
●DBA视图DBA视图就是以DBA_字符为名称前缀的数据字视图。
在DBA数据
字典视图中记录了全部数据库对象的信息。
在数据库实例的整个运行过程中,Oracle会始终在数据字典中维护一系列的“虚拟”表,在其中记录与数据库活动相关的性能统计信息,这些虚拟表称为动态性能表。
动态性能表不是固定的表,它是在Oracle实例启动时动态地创建,并向其写入信息;而当Oracle关闭时,动态性能表将被丢弃。
所有的动态性能表的名称都是以V$为开头。
Oracle 自动在动态性能表的基础上创建一个视图,这些视图被称为动态性能视图。
例如,动态性能视图V$SGA记录了系统全局存储区SGA的信息,通过查询该动态性能视图,用户使可以获取当前数据库实例的全局存储区SGA的信息。
SQL> select name,value from v$sga;
NAME ALUE
-------------------- ----------
Fixed Size 1333312
Variable Size 310380480
Database Buffers 58720256 Redo Buffers 6201344。