1、什么是数据字典?
数据字典是Oracle服务器创建和维护的一组只读的系统表,存放了有关数据库和数据库对象的信息,Oracle服务器就是依赖这些信息来管理和维护Oracle数据库的。
ps:以AUD$开头的数据字典(表)除外,这些表是可以修改的。除此之外,其他所有用户,包括DBA都无法修改数据字典。
2、数据字典的分类
数据字典分为两大类:一类是基表,还有一类是数据字典视图。
Oracle服务器在创建数据库时通过sql.bsq来自动生成基表,但是基表如同天书一样,几乎没人能看懂。绝大多数用户,包括DBA通过访问数据字典视图来得到数据库的相关信息,它们包括用户名,用户权限,对象名,约束和审计等方面的信息,通过catalog.sql脚本文件来生成。
3、什么情况下数据字典会改变?
在Oracle数据库运行期间,如果数据库的结构发生了改变,Oracle服务器会及时的修改相应的数据字典以记录这种变化。
哪些操作会引起数据库的结构发生变化呢?DDL语句,DCL语句,某些DML语句。
举例:DDL语句增加或减少表空间、用户;DCL语句,授予用户权限或回收权限,Oracle服务器要将相关的信息记录到数据字典中。除此之外,某些DML语句,例如insert和update,引起磁盘存储空间的变化,Oracle也要将相关变化的信息记录到数据字典中。
4、数据字典视图的分类和结构
数据字典视图分为静态数据字典视图和动态性能视图(也叫做虚表)
通过desc 数据字典可以显示数据字典视图的结构
5、静态数据字典视图的简述,区别,使用和注意的点
简述:分为三大类,用前缀来区别,分别是USER,ALL和DBA。
USER_*:有关用户所拥有的对象的信息,即用户自己创建的对象的信息
ALL_*:用户可以访问的对象的信息,即用户自己创建的对象和其他用户创建的对象但该用户有权限访问的信息
DBA_*:整个数据库中对象的信息
区别:以user开始的数据字典视图的列和all,dba中的列几乎相同,但是all和dba开始的数据字典视图比user多了一列owner(所有者)
使用:可以通过desc user_*的方法查看数据字典视图的结构,通过select 查询语句得到数据字典视图的信息
注意点:静态视图在数据库发生变化时,Oracle服务器不及时的刷新这些视图中的信息,只有执行analyze命令后,视图才会刷新,在较新的Oracle版本中,可以通过DBMS_STATS软件包刷新视图
6、动态性能图的简述,查找
简述:动态性能图是一组虚表,在Oracle数据库运行期间,这些虚表运行在内存中。在整个数据库运行期间,Oracle服务器将当前数据库的活动记录在这组虚表中。动态性能视图以v$开头,可以获得如下信息:会话活动的的信息、对象打开和关闭的信息、对象在线或离线的信息等,sys用户拥有所有动态性能视图
查找:通过v$fixed_table或dictionary可以得到Oracle数据库中所有的数据字典。其中dictionary的结果有table_name和comments两列,comments是数据字典(系统表)的简单解释,通过dictionary能够找到所有的动态性能视图和静态数据字典;而v$fixed_table只是列出了动态数据字典的名字和类型。
7、格式化数据字典视图的输出
数据字典的输出往往很乱,这是因为格式的问题,需要使用sql*plus格式化命令,下面列出常用的sql*plus格式化命令
set line 100 = set linesize 100 ,设置行的长度,每行最多100个字符,超过则换行
set pagesize 100 设置页面显示总行数
ps:因为每次重新登陆都要重新设置,因此列出修改默认设置的方法
在D:\Oracle\product\11.2.0\dbhome_1\sqlplus\admin文件夹下找到glogin.sql文件,每次运行sql*plus时都会读取此文件,在该文件后面写入以上设置即可
col命令:改变列的显示长度
例如:col name for a15,将名字为name的列设置宽度为15个字符
ps:对于file_id这种类型为number的列,如果执行了col file_id for a15,会导致显示结果为###,在这种情况下执行col file_id for 999会显示正常(why??)
8、常用的数据字典(重点)
以user开头
user_objects:用户对象信息
user_source:数据库用户的所有资源对象信息
user_segments:用户的表段信息
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_tables:查看当前用户有哪些表
user_col_privs_made
user_tab_privs_made
以dba开头
dba_indexes
dba_ind_columns
dba_segments
dba_constraints
dba_sys_privs
dba_users
dba_roles
dba_col_privsse
dba_ts_quotas
dba_data_files
dba_tablespaces
dba_directories
以v$开头
v$database:数据库信息
v$datafile:数据文件信息
v$controlfile:控制文件信息
v$logfile:重做日志文件信息
v$log:日志组信息
v$loglist:日志历史信息
v$instance:数据库实例信息
v$sga:数据库sga信息
v$parameter:初始化参数信息
v$process:数据库服务器进程信息
v$bgprocess:数据库后台进程信息
v$archived_log:归档日志信息
v$tablespace:表空间信息
v$tempfile:临时文件信息
v$filestat:数据文件的I/O统计信息
v$session:会话信息
v$block_change_tracking
v$recover_file
v$recovery_log
以session开头
session_roles:会话的角色信息
session_privs:会话的权限信息
以index开头
index_stats:索引的设置和存储信息
原文:https://www.cnblogs.com/smaleeel/p/12362363.html