oracle数据字典

合集下载

oracle数据字典管理

oracle数据字典管理
了解数据库的有关信息(sys):v$database
user_views user_indexes user_objects user_constraints
数据字典视图的分类:静态(视图内容在数据库运行期间不改变)和动态(视图内容在数据库运行期间实时更新,存在内存中。v$开头,由sys来用)
select * from dba_tables;
dictionary
v$fixed_tables spool c:\1.txt
spool off;
列的输出格式化:
字符型:column 列名 format An;
1、oracle数据字典管理
数据字典:由oracle服务器生成和维护的一组只读系统表。存放在system表空间中。
分类:基表,数据字典视图
内容:数据库的信息,对象信息,权限信息,用户信息。
查询当前用户有那些表? select * from tab;
user_tables select table_name from user_tables;
静态数据字典视图分三种: user_*, all_*, dba_*
user_tables all_tables dba_tables
scott system sys
select * from user_tables;
select * from all_tables;
ename col ename for a5;
数值型: col 列名 for n个9
salHale Waihona Puke col sal for 9999

ORACLE数据字典

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常用数据字典

Oracle常用数据字典

一、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 数据字典查询语句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数据字典的使用

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数据库之数据字典

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数据字典user all dba

ORACLE数据字典user all dba
一个表空间(TABLESPACE)由段组成,作为SYSTEM表空间,它由自举段、回滚段、数据段、
临时段等多个段组成,而作为非SYSTEM表空间,则因用途而异由不同段组成。
一个段(SEGMENT)由一组范围组成。一个范围(EXTENT)由一组连续的数据块组成。一个
数据块(DATABASE BLOCK)对应磁盘上的一个或多个物理块。
(3)SQLDBA>SELECT*FROM V$DBFILE;结果中,列名NAME即为数据文件名。
2.日志文件(REDO LOG FILES)
日志文件用于记录数据库所做的全部变更,以便在系统发生故障时进行恢复。每一个数
据库至少有两个日志文பைடு நூலகம்。
3.控制文件(CONTROL FILES)
控制文件虽然是一个较小的二进制文件,但很重要。如果控制文件一旦被破坏,则无法对
INIT-SQL-FILES 数据库建立时执行的命令文件
PROCESSES 多进程系统中最大进程数
数据库的物理结构
数据库的物理结构是面向操作系统的,它描述数据库中的数据的存储形式。在物理上OA
CLE数据库文件包括数据文件、日志文件和控制文件。
1.数据文件(DATA FILES)
ORACLE数据库中的数据,逻辑上存放在表空间里,但物理上却是存放在数据文件里的,数
1.对于非DBA用户
对于非DBA用户,有两条命令,即:
(1)SQL> SELECT * FROM ALL_USERS;
(2)SQL>SELECT * FROM USER_USERS;
其中,从USER-USERS表中,可以了解到该用户的默认表空间和临时表空间等信息。
2.对于DBA用户
对于DBA用户,有三条命令,即:

Oracle数据字典

Oracle数据字典

Oracle数据字典数据字典是Oracle数据库的核心组件,它是由一系列对于用户而言是只读的基础表和视图组成,它保存了关于数据库本身以及其中存储的所有对象的基本信息。

可以认为数据字典记录了数据库实例自身的重要信息。

对数据字典的管理和维护由Oracle系统负责,任何数据库用户都无法对数据字典中的内容进行修改,但是数据库用户可以查看数据字典中的内容。

为了方便用户查看数据字典中的信息,数据字典中的信息也是通过表和视图的形式组织起来的,数据字典和视图都保存在SYSTEM表空间中。

数据字典中的信息实际上中保存在基本表中的,并且只有Oracle系统才有权读取和写入基础表。

基础表中存储的信息通常是经过加密处理的。

视图是一种虚拟表,它本身并不包含数据,其中的数据是经过处理后基本表中的数据。

数据字典中视图的作用是将表中各种信息进行分类,以方便用户获取其中的数据。

大多数情况下,用户可以通过数据字典视图来获取与数据库相关的信息,而不需要访问数据字典表。

在Oracle实例运行期间,需要从数据字典表中读取信息,用于判断用户要访问的对象是否存在等信息。

同时,Oracle还不断地向数据字典表中写入数据,以反映用户对数据库、以及数据库中保存的各对象所做的修改。

例如,用户创建了一个表,这时系统将在数据字典中记录该表的结构信息、表在存储信息等。

对于数据库用户而言,数据字典中的视图好一本关于当前Oracle数据库的参考手册,可以通过SELECT语句查询。

数据库用户由于权限不同,所能访问的数据字典视图的数量和类型也不同。

用户所使用数据字典视图大致可以分为三类,并且各种类型的视图以不同名称的前缀表示。

这三类数据字典视图的介绍如下:●USER视图USER视图就是以USER_字符为名称前缀的数据字典视图。

每个数据库用户都有一组属于自己的视图,在USER视图中包含了属于该用户的所有对象的信息。

●ALL视图ALL视图就是以ALL_字符为名称前缀的数据字视图。

Oracle 数据字典

Oracle 数据字典

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---数据字典

DBA_VIEWS 数据库中所有视图的文本(视图系统表)给用户授权grant select on DBA_VIEWS to ‘用户’;列名是否为空类型备注OWNER NOTNULLVARCHAR2(128) OWNER:视图的拥有者VIEW_NAME NOTNULLVARCHAR2(128) VIEW_NAME:视图名字TEXT_LENGTH NUMBER TEXT_LENGTH:视图文本长度TEXT LONG TEXT:视图文本。

当行来自正确的容器中,可能返回正确的值TEXT_VC VARCHAR2(4000) TEXT_VC:这个列可能会截断视图文本TYPE_TEXT_LENGTH NUMBER TYPE_TEXT_LENGTH:视图的类型语句的长度TYPE_TEXT VARCHAR2(4000) TYPE_TEXT:视图的类型语句OID_TEXT_LENGTH NUMBER OID_TEXT_LENGTH:带WITH OID语句的视图的长度OID_TEXT VARCHAR2(4000) OID_TEXT:带WITH OID语句的视图VIEW_TYPE_OWNER VARCHAR2(128) VIEW_TYPE_OWNER:typed view的拥有者VIEW_TYPE VARCHAR2(128) VIEW_TYPE:视图是否一个typed view SUPERVIEW_NAME VARCHAR2(128) SUPERVIEW_NAME:超级视图名字EDITIONING_VIEW VARCHAR2(1) EDITIONING_VIEW:保留将来使用READ_ONLY VARCHAR2(1) READ_ONLY:视图是否只读CONTAINER_DATA VARCHAR2(1) CONTAINER_DATA:视图是否包含指定容器数据BEQUEATH VARCHAR2(12) BEQUEATH:可以是CURRENT_USER或者DEFINER。

oracle 常用数据字典

oracle 常用数据字典

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的数据字典
❖ dba_视图显示整个数据库的信息,例如,dba_tables视图显示数据库中 所有表的相关信息。
第5页
教学过程
19.1 概述 19.2 路线图 19.3 目录和对象 19.4 回收站 19.5 约束和注释 19.6 索引和群集 19.7 抽象数据类型 19.8 数据库链接和物化视图 19.9 触发器、过程、函数和程序包 19.10 维 19.11 空间分配和使用 19.12 用户和权限 19.13 审核
❖ 本章按照功能分组对Oracle的常用数据字典进行介 绍。
第1页
本章要点
❖ 数据字典的概念和特点 ❖ 路线图的数据字典视图 ❖ 目录和对象的数据字典视图 ❖ 回收站的数据字典视图 ❖ 约束和注释的数据字典视图 ❖ 索引和群集的数据字典视图 ❖ 抽象数据类型的数据字典视图 ❖ 数据库链接和物化视图的数据字典视图 ❖ 触发器、过程、函数和程序包的数据字典视图 ❖ 空间分配和使用的数据字典视图 ❖ 用户和权限的数据字典视图 ❖ 审核的数据字典视图
第7页
教学过程
19.1 概述 19.2 路线图 19.3 目录和对象 19.4 回收站 19.5 约束和注释 19.6 索引和群集 19.7 抽象数据类型 19.8 数据库链接和物化视图 19.9 触发器、过程、函数和程序包 19.10 维 19.11 空间分配和使用 19.12 用户和权限 19.13 审核
❖ user_视图显示关于当前用户所拥有的信息,例如user_tables视图显示 的是当前用户所有的所有表的相关信息。
❖ all_视图除了显示关于当前用户所拥有的信息之外,还显示当前用户具 有相应权限的其他用户的信息。例如,user_tables视图除了显示当前用 户的所有表的相关信息之外,还包括当前用户可以访问的其他用户所有 的表的信息。

跟我学Oracle从入门到精通培训教程——Oracle 系统中的数据字典

跟我学Oracle从入门到精通培训教程——Oracle 系统中的数据字典

二、数据字典的具体应用及示例
1、熟悉静态数据字典中的DBA_xxx视图 (1)DBA_xxx视图中包含了当前数据库系统中的所有对象 信息 在建立用户时,Oracle系统会把用户的相关信息存 在数据字典中,当给用户授权或是角色时,Oracle 也会将权限和角色的信息存放到数据字典中。 由于在DBA_xxx视图中包含了当前数据库系统中的 所有对象信息。所以,为了其安全性考虑,一般只 允许数据库管理员角色的用户才可以访问数据库管 理员视图。
4、Oracle系统中的数据字典有静态和动态之分 静态数据字典主要是在用户访问数据字典时不会发生 改变的,但动态数据字典是依赖数据库运行的状况和性能 的,它反映数据库运行的一些内在的信息,所以在访问这 类数据字典时往往不是一成不变的。 5、Oracle系统专门使用System表空间存放数据字典信息 (1)数据字典表是存在System表空间中并由Oracle系统维 护和管理 当执行DDL语句时,Oracle系统会修改数据字典。 正因为Oracle使用System表空间存放数据字典的相 关信息,所以不建议在System表空间上直接建立数 据库表、索引和簇等对象。 在SYSTEM表空间中,用户不要在这里进行任何的修 改动作--比如不要添加或者删除对象。主要的目的 是防止一不小心,对其进行了不可恢复的操作。
(2)DBA_xxx视图的主要作用
2、熟悉静态数据字典中的USER_XXX视图 (1)USER_XXX视图代表当前用户所拥有的对象 由于在该视图中记录有描述查询该视图用户拥有的对 象,因此不同的用户不可能看到相同的内容。 (2)USER_XXX视图的主要作用
3、熟悉静态数据字典中的ALL_XXX视图 (1)该视图记录用户可以访问到的各个数据对象 在ALL_XXX视图(也称为扩展用户视图)中,包含了 当前登录账户可以访问的所有对象信息,还包括了被授权 的可以访问的其它用户的对象信息--也就是自己拥有的以 及别人授权自己可以访问的所有数据对象的权限,比如 ALL_TABLES视图包含的记录既可以描述自己的数据库表, 也可以描述给定可视权限的、属于其他用户的数据库表。 (2)有了USER_XXX视图,为什么还要提供ALL_XXX视图 有时候,数据库管理员会给某个用户授权,让其可以 查看其它用户的对象信息,以利于他们协助管理数据 库系统。 为此,那个被授权的用户,就需要通过ALL_XXX视图 来查看其被授权的其他用户的系统运行信息。

ORACLE 系统常用数据字典

ORACLE 系统常用数据字典

E.1 对象、表、视图、同义词、序列DBA_OBJECTS(实例中的对象)存放的对象包括:CLUSTER、DATABASE_LINK、FUNCTION,INDEX,PACKAGE,PROCEDURE,SEQUENCE,SYNONYM,TABLE,TRIGGER,VIEW,TYPE,DIRECTORY等。

---------------------------------------------------------------列名说明---------------------------------------------------------------OWNER VARCHAR2(30) 对象主人OBJECT_NAME VARCHAR2(128) 对象名SUBOBJECT_NAME VARCHAR2(30) 字对象名,如分区OBJECT_ID NUMBER 对象的标识DATA_OBJECT_ID NUMBER 对象的对象数OBJECT_TYPE VARCHAR2(18) 对象的类型,如INDEX CREATED DATE 建立对象的日期及时间LAST_DDL_TIME DATE 最后一次执行DDL的时间(含grants revokes) TIMESTAMP VARCHAR2(19) 对象生成的日期及时间STATUS VARCHAR2(7) 对象的状态: VALID, INVALID TEMPORARY VARCHAR2(1) 标识为临时表GENERATED VARCHAR2(1) 标识对象是否为系统生成SECONDARY VARCHAR2(1) 是否为第2次建立演示索引---------------------------------------------------------------DBA_TABLES (实例中的表)---------------------------------------------------------------列名说明---------------------------------------------------------------OWNER 表的所有者TABLE_NAME 表名TABLESPACE_NAME 包含表的表空间; NULL为分区表CLUSTER_NAME 表所属的CLUSTER名IOT_NAME 表的索引结构名PCT_FREE 块中自由空间百分比,NULL为分区表PCT_USED 块中使用空间百分比,NULL为分区表INI_TRANS 初始事务如口数,NULL为分区表MAX_TRANS 最大事务如口数,NULL为分区表INITIAL_EXTENT 初始分配字节数,NULL为分区表NEXT_EXTENT 下次扩展字节数,NULL为分区表MIN_EXTENTS 最小扩展次数,NULL为分区表MAX_EXTENTS 最大扩展次数,NULL为分区表PCT_INCREASE 相对上次增长百分比,NULL为分区表FREELISTS 段的自由分配列表数,NULL为分区表FREELIST_GROUPS 组的自由分配列表数,NULL为分区表LOGGING 登录属性,NULL为分区表BACKED_UP 上次改变以来备份标记NUM_ROWS 表中的行数BLOCKS 表中的块数EMPTY_BLOCKS 表中分配但未使用的块数AVG_SPACE 表中分配但未使用的平均数CHAIN_CNT 表中产生行连接(从一个块到另一各块)的数AVG_ROW_LEN 平均行的字节数AVG_SPACE_FREELIST_BLOCKS 自由列表中所有块的平均自由空间NUM_FREELIST_BLOCKS 自由列表的块数DEGREE 对于查询表的每个实例线程数INSTANCES 表中事务交叉数CACHE 是否为缓存表TABLE_LOCK 是否使能锁SAMPLE_SIZE 分析的样例大小LAST_ANALYZED 最后分析的时间PARTITIONED 表是否为分区表IOT_TYPE 如果为索引结构表,则IOT_TYPE 为 IOT 或 IOT_OVERFLOW否则为NULLTEMPORARY 仅是当前会话使用?SECONDARY 是否为第2次建立演示索引NESTED 是否嵌套表BUFFER_POOL 缺省缓冲区的名字, NULL 为分区表ROW_MOVEMENT 分区时行是否移动GLOBAL_STATS 没有合并的统计计算?USER_STATS 用户是否统计过?DURATION 如果是临时表,则在 sys$session 或sys$transaction 中的持续时间SKIP_CORRUPT 是否跳过冲突块(使能或不使能)MONITORING 监视---------------------------------------------------------------DBA_VIEWS (实例中的视图)---------------------------------------------------------------列名说明---------------------------------------------------------------OWNER VARCHAR2(30) 视图的主人VIEW_NAME VARCHAR2(30) 视图的名字TEXT_LENGTH NUMBER 视图的文本长度TEXT LONG 视图的文本TYPE_TEXT_LENGTH NUMBER 类型视图的子句长度TYPE_TEXT VARCHAR2(4000) 类型视图的子句OID_TEXT_LENGTH NUMBER 类型视图的WITH OID子句长度 OID_TEXT VARCHAR2(4000) 类型视图的WITH OID子句VIEW_TYPE_OWNER VARCHAR2(30) 类型视图的主人VIEW_TYPE VARCHAR2(30) 类型视图---------------------------------------------------------------DBA_SYNONYMS(实例中的同义词)---------------------------------------------------------------列名说明---------------------------------------------------------------OWNER VARCHAR2(30) 同义词的主人SYNONYM_NAME VARCHAR2(30) 同义词的名字TABLE_OWNER VARCHAR2(30) 表的主人TABLE_NAME VARCHAR2(30) 表的名字DB_LINK VARCHAR2(128) 数据库连接名---------------------------------------------------------------DBA_SEQUENCES(实例中的序列)---------------------------------------------------------------列名说明---------------------------------------------------------------SEQUENCE_OWNER VARCHAR2(30) 序列的主人SEQUENCE_NAME VARCHAR2(30) 序列名字MIN_VALUE NUMBER 最小值MAX_VALUE NUMBER 最大值INCREMENT_BY NUMBER 增加步长CYCLE_FLAG VARCHAR2(1) 循环标记ORDER_FLAG VARCHAR2(1) 顺序标记CACHE_SIZE NUMBER 缓存大小LAST_NUMBER NUMBER 最后的序列值---------------------------------------------------------------E.2 索引、Cluster及限制(constraints)DBA_INDEXES ( 实例中索引)---------------------------------------------------------------列名说明--------------------------------------------------------------- OWNER VARCHAR2(30) 索引主人INDEX_NAME VARCHAR2(30) 索引名字INDEX_TYPE VARCHAR2(27) 索引类型TABLE_OWNER VARCHAR2(30) 表的主人TABLE_NAME VARCHAR2(30) 表的名字TABLE_TYPE VARCHAR2(11) 表的类型UNIQUENESS VARCHAR2(9) 是否唯一索引COMPRESSION VARCHAR2(8) 是否压缩PREFIX_LENGTH NUMBER 前缀长度TABLESPACE_NAME VARCHAR2(30) 表空间名INI_TRANS NUMBER 初始事务数MAX_TRANS NUMBER 最大事务数INITIAL_EXTENT NUMBER 初始扩展大小NEXT_EXTENT NUMBER 下一次扩展大小MIN_EXTENTS NUMBER 最小扩展次数MAX_EXTENTS NUMBER 最大扩展次数PCT_INCREASE NUMBER 相对前一次的增长百分比PCT_THRESHOLD NUMBER 块空间开始分配百分比INCLUDE_COLUMN NUMBER 包括的列数FREELISTS NUMBER 自由列表数FREELIST_GROUPS NUMBER 自由列表组数PCT_FREE NUMBER 块中用于更新的百分比LOGGING VARCHAR2(3) 日志信息BLEVEL NUMBER B*树从根到枝的索引深度LEAF_BLOCKS NUMBER 索引中叶块的数量DISTINCT_KEYS NUMBER 不同键的数目AVG_LEAF_BLOCKS_PER_KEY NUMBER 每个键叶块的平均数AVG_DATA_BLOCKS_PER_KEY NUMBER 每个键数据块的平均数CLUSTERING_FACTOR NUMBER 基表行的排序数,如果该值:* 接近块的大小,则表非常容易排序 * 解决行的大小,则容易随机排序STATUS VARCHAR2(8) 状态NUM_ROWS NUMBER 行的数量SAMPLE_SIZE NUMBER 样本大小LAST_ANALYZED DATE 最后分析时间DEGREE VARCHAR2(40) 扫描索引时的实例数INSTANCES VARCHAR2(40) 实例数PARTITIONED VARCHAR2(3) 是否被分区TEMPORARY VARCHAR2(1) 是否存放在临时表空间GENERATED VARCHAR2(1) 是否是有系统产生索引名SECONDARY VARCHAR2(1) 是否是第2个对象创建BUFFER_POOL VARCHAR2(7) 缓冲区大小USER_STATS VARCHAR2(3) 是否有用户统计过DURATION VARCHAR2(15) 临时表的为期PCT_DIRECT_ACCESS NUMBER 访问百分比ITYP_OWNER VARCHAR2(30) 本地索引的主人ITYP_NAME VARCHAR2(30) 本地索引的名字PARAMETERS VARCHAR2(1000) 本地的参数GLOBAL_STATS VARCHAR2(3) 全局统计标记DOMIDX_STATUS VARCHAR2(12) 本地索引状态:null-非本地;valid-本地索引;idxtyp-invld:本地索引无效DOMIDX_OPSTATUS VARCHAR2(6) 本地索引操作状态:null-非本地;valid-本地索引操作没有错误; failed:本地索引操作有错误FUNCIDX_STATUS VARCHAR2(8) 本地索引函数状态:null-非基本函数索引;valid-函数索引可用;failed: 函数索引不可用。

第七章 数据字典(Oracle概念中译本)

第七章 数据字典(Oracle概念中译本)

第七章数据字典7、数据字典这一章描述了每个Oracle数据库核心引用的只读表,它们的总称叫数据字典(data dictionary)。

这一章包含下列主题:◆ 数据字典介绍◆ 如何使用数据字典◆ 动态性能表◆ 数据库对象元数据数据字典介绍Oracle数据库的最重要的一个部分就是它的数据字典,它们是一些只读的表集合,提供数据库的信息。

一个数据字典包含:● 数据库中所有模式对象的定义(表、视图、索引、聚集、同义词、序列、过程、函数、包、触发器等等)● 模式对象被分配了多少空间,当前使用了多少● 列默认值● 完整性约束信息● Oracle用户名● 每个用户被赋予的权限和角色● 审核信息,例如谁有权限访问或者更新不同的模式对象● 其他数据库通用信息和其他数据库数据一样,数据字典以表和视图的方式存在。

给定数据库的所有数据字典表和视图都保存在数据库的SYSTEM表空间。

数据字典不仅仅是Oracle数据库的核心部分,还是从最终用户到应用程序设计人员和数据库管理员所有用户的一个重要工具。

使用SQL语句可以访问数据字典。

因为数据字典是只读的,你只能对它的表或视图执行查询(SELECT语句)。

数据字典结构数据字典包含下列内容:基表这些底层表保存相关数据库的信息。

只有Oracle可以读写这些表。

用户很少直接访问它们,因为它们是标准化的,而且大部分数据都以加密的格式保存。

用户可访问视图这些视图汇总和显示保存在数据字典基表中的信息。

这些表将基表转换为有用的信息,比如用户或表名、使用连接和WHERE子句来简化信息。

大部分用户都只被赋予了这些视图的访问,而不是直接访问基表。

SYS,数据字典的拥有者Oracle用户SYS拥有所有的数据字典基表和用户可访问表。

没有Oracle用户能够更新(UPDATE,DELET,INSERT)SYS模式包含的模式对象或任意行,因为那样的操作会破坏数据完整性。

安全管理员必须严格控制这个中心帐号。

注意:修改或者操作数据字典表的数据能够对数据库操作的影响是持久和有害的。

oracle数据字典

oracle数据字典

1,数据字典1-1、用户--查看当前用户的缺省表空间select username,default_tablespace from user_users;--查看当前用户的角色select * from user_role_privs;--查看当前用户的系统权限和表级权限select * from user_sys_privs;select * from user_tab_privs;--显示当前会话所具有的权限select * from session_privs;--显示指定用户所具有的系统权限select * from dba_sys_privs where grantee='GAME';--显示特权用户select * from v$pwfile_users;--查看用户下所有的表select * from user_tables;--查看用户下所有的表的列属性select * from USER_TAB_COLUMNS where table_name=:table_Name; --显示用户信息(所属表空间,用户名区分大小写)select default_tablespace,temporary_tablespacefrom dba_users where username='SCOTT';--显示用户的PROFILEselect profile from dba_users where username='SCOTT';1-2,表--查看用户下所有的表select * from user_tables;--查看名称包含log字符的表select object_name,object_id from user_objectswhere instr(object_name,'LOG')>0;--查看某表的创建时间select object_name,created from user_objects where object_name=u pper('&table_name');--查看某表的大小select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&table_name');--查看放在Oracle的内存区里的表select table_name,cache from user_tables where instr(cache,'Y')>0;1-3,索引--查看索引个数和类别select index_name,index_type,table_name from user_indexes order by table_name;--查看索引被索引的字段select * from user_ind_columns where index_name=upper('&index_n ame');--查看索引的大小select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&index_name');1-4,序列号--查看序列号,last_number是当前值select * from user_sequences;1-5,视图--查看视图的名称select view_name from user_views;--查看创建视图的select语句set view_name,text_length from user_views;set long2000; 说明:可以根据视图的text_length值设定set long的大小select text from user_views where view_name=upper('&view_name');1-6,同义词--查看同义词的名称select * from user_synonyms;1-7,约束条件--查看某表的约束条件select constraint_name, constraint_type,search_condition,r_constraint_namefrom user_constraints where table_name = upper('&table_name'); 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_name order by cc.position;1-8,存储函数和过程--查看函数和过程的状态select object_name,status from user_objects where object_type='FU NCTION';select object_name,status from user_objects where object_type='PR OCEDURE';--查看函数和过程的源代码select text from all_source where owner=user and name=upper('&pl sql_name');第二部分实例用户中1,实例中的用户--Nomal 普通的用户角色--sysdba 超级用户管理员--syspoer 系统管理员--sys 网络管理员用户,具有最高的数据库管理权限,可以创建数据库--system 本地管理员角色,具有权限仅次于sys的最高的数据库管理权限,不可以创建数据库--scott 普通用户,默认的权限是锁住的,需要自己打开------------------------------------sys system scott 都是默认的用户,我们也可以自己创建用户去连接数据库,但是没有任何权限,需要dba给予权限---表空间:包含表视图索引---段:包含数据段索引段---数据块: 数据块是最小的逻辑存储单元2创建表2.1创建表create table tb_user(stu_num int primary key,stu_name varchar2(20) not null,stu_sex char(4) default('男') check (stu_sex in('男','女')),stu_birthday date);2.2查询表--查看表的存储信息select * from user_tables where table_name='TB_USER';--查看表的相关信息(属性类型和长度)select * from user_tab_columns where table_name='TB_USER';2.3添加信息insert into tb_user(stu_num,stu_name) values('1001','a');insert into tb_user(stu_num,stu_name,stu_sex) values('1002','b','女'); insert into tb_user(stu_num,stu_name,stu_sex,stu_birthday)values(to_ number('1003'),'c','男',to_date('1997-02-03','yyyy-mm-dd'));select * from tb_user;2.4删除表drop table tb_user;3数据类型--标量类型--数值型 : number(integer,float)--字符型 : char(2000) varchar(4000) long(2G)--日期型 : date timestamp(不推荐)--大字段LOB : BLOB CLOB--属性类型--%type--%rowtype4创建视图视图: (1)查询不会影响基表(2)增删改视图的时候,更新的相应信息同时也会更新基表的对应信息(3)删除视图基表还存在不会影响select * from tb_user;4-1创建视图create view v_user as select * from tb_user;4-2查询视图select * from v_user;4-3删除视图drop view v_user;4-4添加视图数据insert into v_user(stu_num,stu_name,stu_sex,STU_BIRTHDAY) value s(1005,'甘小娟','女',to_date('1993-5-6','yyyy-mm-dd'));insert into v_user(stu_num,stu_name,stu_sex,STU_BIRTHDAY) value s(1009,'甘娟','女',sysdate);4-5删除视图内容delete from v_user where stu_num=100;4-6修改视图内容update v_user set stu_name='大话单'where stu_num=1002;5索引--创建索引针对表中的某一个经常用的字段---在查询的时间会自动调用,会使查询的速度加快5-1创建索引 index语法:create index 索引名 on 表名(索引字段)create index index_emp_sal on emp(sal);---根据索引字段查询,在查询时索引是自动调用的select * from emp where sal between1000and2000;5-2删除索引drop index index_emp_sal;6同义词synonym--创建同义词:对同义词的操作会影响到原表 synonym--给emp创建同义词e ,e 就可以代表empcreate synonym e for emp;--e=emp 意思相同select * from e;update e set sal=801where ename='SMITH';--删除同义词drop synonym e;7连接7-1等值连接select * from emp,dept where emp.deptno=dept.deptno order by e mpno;select emp.*,dname,loc from emp,dept where emp.deptno=dept.dep tno order by empno;7-2右连接 --(+)在左边打印了没有员工的部门 (+)在左边的为右连接,在右边的为左连接select emp.*,dname,loc from emp,dept where emp.deptno(+)=dept. deptno order by empno;7-3左连接 --(+)在右边select emp.*,dname,loc from dept,emp where emp.deptno=dept.deptno(+)order by empno;7-4用union连接--结果集的操作 union的左边和右边查询的结果在一个表中,但是两边显示的结果的个数和类型要一样select empno,ename from emp union select deptno,dname from de pt;8 PL/SQL代码快代码块:描述一个过程里面包含一个语句语法:declare声明部分begin业务逻辑处理exception异常处理部分end注释:在声明部分定义我们需要使用的变量,不用在每个变量前使用'declare'来声明,变量名不用使用'@'符号8-1,块的举例declarenum number(5);--定义的两个变量str varchar2(50);m number:=10;--在变量声明的部分给变量初始值tsal number;begin--给变量赋值str:='王向新是个大逗比.....';--通过select语句给多个变量赋值select count(*),sum(sal) into num,tsal from emp;dbms_output.put_line(num ||'人的总工资为:'||tsal);--into 是给变量赋值-- select count(*) into num from emp;--把值打印出来,在上面的Output看结果--在PL/SQL中字符串拼接用 '||'num:=num+m;dbms_output.put_line(num || str || m ||'--->' || tsal);end;--查询员工的数量,如果数量大于5就打印 '哈哈'否则打印'呵呵'declarenum number;beginselect count(*)into num from emp where sal>3000;if(num>5)thendbms_output.put_line('员工的数量为:'|| num);dbms_output.put_line('哈哈');elsedbms_output.put_line('员工的数量为:'|| num);dbms_output.put_line('呵呵');end if;end;--------------------------declarenum number;beginselect count(*)into num from emp where sal>3000;if(num>5)thendbms_output.put_line('@@@@@员工的数量为:'|| num);dbms_output.put_line('哈哈');elseif(num>3)thendbms_output.put_line('%%%%%%%%%%员工的数量为:'|| num);dbms_output.put_line('呵呵');elsedbms_output.put_line('&&&&&&&&&&&员工的数量为:'|| num);dbms_output.put_line('嘻嘻');end if;end if;end;8-2连续if选择declareesal number;begin--查询SMITM的工资赋值给esalselect sal into esal from emp where ename='SMITH';if(esal<1000)thendbms_output.put_line('小伙子,要努力啊');end if;if(esal>1000and esal<=2000)thendbms_output.put_line('小伙子,继续努力啊');end if;if(esal>2000and esal<=3000)thendbms_output.put_line('小伙子,还不错');end if;if(esal>3000and esal<=4000)thendbms_output.put_line('小伙子,很牛啊');end if;if(esal>4000and esal<=5000)thendbms_output.put_line('土豪啊,我们做朋友吧'); end if;if(esal>5000)thendbms_output.put_line('有钱的任性,没钱的认命'); end if;end;--------------------------------------------8-3 if....elsif...选择declareesal number;begin--查询SMITM的工资赋值给esal*************select sal into esal from emp where ename='SMITH'; if(esal>2000)thendbms_output.put_line('小伙子,要努力啊');elsif(esal>1000and esal<=2000)thendbms_output.put_line('小伙子,继续努力啊'); elsif( esal<=1000)thendbms_output.put_line('小伙子,要努力啊');end if;end;----------------------------------8-4 case ....when选择declareesal number;str varchar2(40);n int;m number;name varchar2(20);beginname:='&请输入员工姓名';--弹出窗口输入--将Scott的工资给esalselect sal into esal from emp where ename=name; --变量赋值m:=esal/1000;n:=esal/1000;-- esal:=esal/1000;if(n>m)thenn:=n-1;end if;case nwhen0thenstr:='不及格';when1thenstr:='有进步';when2thenstr:='还不错';when3thenstr:='很牛';when4thenstr:='盆友';when5thenstr:='巅峰';end case;dbms_output.put_line(n||'-->'||str);end;----------------------------------8-5LOOP 循环declarem number;beginm:=1;loopdbms_output.put_line('aaa-->'||m);m:=m+1;exit when m=10;--当 m=10 的时候就退出,终止循环end loop;end;---------------------------------8-6 while 当什么的时候declarem number;beginm:=1;while m<10loopdbms_output.put_line('aaa-->'||m);m:=m+1;end loop;end;8-7 for 相当于foreachdeclarer emp%rowtype;--属性类型beginfor r in(select * from emp)loopdbms_output.put_line(r.ename ||'-->'||r.empno);end loop;end;9异常类--oracle中的异常分为:系统异常(编号 0~20000) 和用户异常--用户异常(编号可用 20001 到 20999)--系统异常:直接由oracle数据库进行管理,当出现了系统异常,数据库会自动提示--用户异常:--1 在声明部分声明异常--2 在代码部分出现异常通过raise关键字抛出异常--3 在exception部分通过when 来处理异常--4 在exception部分我们可以通过raise_application_error(错误编号,'错误提示');--也就是说将异常以系统提示的形式弹出,告知用户--以后的oracle系统中抛出异常以后,可以通过 'ORA-编号' 搜索解决方案--对异常的处理declareme01 exception;me02 exception;score number;beginscore:='&请输入成绩';if(score<0)then--抛出第一种异常,提示分数小于0 不合法raise me01;else if(score>100)then--抛出第二种异常,提示分数大于100 不合法raise me02;elsedbms_output.put_line('成绩合法'||score);end if;end if;exceptionwhen me01 thendbms_output.put_line('分数小于0 不合法,输入的为:'||score);--系统异常,会弹出error框提示--raise_application_error(-20001,'数据错误');when me02 thendbms_output.put_line('分数大于100 不合法,输入的为:'||score); end;。

Oracle 数据字典

Oracle 数据字典

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中还有一些不常用的数据字典表,但这些表不是真正的字典家族,他们都是一些重要的单一的视图。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle数据字典
Oracle数据字典概述
数据字典用于存放有关数据库描述信息的数据。

比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等。

当用户在对数据库中的数据进行操作时遇到困难就可以访问数据字典来查看详细的信息。

概述
基本的数据字典表由sys用户所有,并且保存在system表空间中。

用户不能直接访问这些表,只能通过一系列视图访问数据字典表中的信息。

Oracle中的数据字典有静态和动态之分。

静态数据字典主要是在用户访问数据字典时不会发生改变的,但动态数据字典是依赖数据库运行的性能的,反映数据库运行的一些内在信息,所以在访问这类数据字典时往往不是一成不变的。

这类数据字典主要是由表和视图组成,应该注意的是,数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。

静态数据字典中的视图分为三类,它们分别由三个前缀够成:
user_*
all_*
dba_*
user_*
该视图存储了关于当前用户所拥有的对象的信息。

(即所有在该用户模式下的对象)
all_*
该视图存储了当前用户能够访问的对象的信息。

(与user_*相比,all_* 并不需要拥有该对象,只需要具有访问该对象的权限即可)
dba_*
该视图存储了数据库中所有对象的信息。

(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)
⏹以object为例查看三种视图结构的不同。

⏹若想知道scott所拥有的所有对象及其细节。

Select ower,object_name,object_id,created.status
from all_objects
where owner=‘SCOTT’
常用user_*视图(目录和对象)
user_tables视图(user_catalog或者cat)
主要描述当前用户拥有的所有表的信息,主要包括表名、表空间名、簇名等。

通过此视图可以清楚了解当前用户可以操作的表有哪些。

SELECT table_name FROM USER_TABLES
常用all_*视图(用户和权限)
all_tables视图
要想知道当前用户都可以使用哪些表,这个视图就派上用途了。

SELECT table_name,owner FROM all_tables
Where owner not like ‘%SYS’;
⏹一组虚表,在数据库运行期间,存在于内存,将当前数据库中的活动记录在这组表中。

⏹SYS用户拥有这些视图,它们的名字都是以v$开头的。

⏹v$session
该视图显示数据库中当前的会话信息。

v$instance
该视图主要描述当前数据库下的活动的实例的信息。

依然可以使用select语句来观察该信息。

有效地利用数据字典
⏹Dictionary(v$fixed_table)
全部数据字典表的名称和解释,它有一个同义词dict
⏹Select * from dict where table_name like ‘%TABLE%’⏹dict_columns
全部数据字典表里字段名称和解释
例:想了解DBA_TABLES表中’INITIAL_EXTENT’列的含义。

select * from dict_columns
where table_name='DBA_TABLES'
and column_name=‘INITIAL_EXTENT';
基本数据字典
字典名称说明
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构成数据字典的所有表的信息
与数据库组件相关的数据字典
数据库组件数据字典中的表或视图说明
数据库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显示当前会话信息
常用动态性能视图
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显示块竞争统计数据
讨论QQ群:476785953。

相关文档
最新文档