暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Oracle SQL优化基础之 数据字典

Oracle优化大师 2019-02-18
771

一>Oracle数据字典的分类

    1> 静态数据字典表

    2> 静态数据字典视图

    3> 动态数据字典表

    4> 动态数据字典视图

二>数据字典的使用

    1.静态数据字典表的使用

       静态数据字典表只能由ORACLE 进行维护。

    2.静态数据字典视图的使用

  通常用户通过对静态数据字典视图的查询可以获取所需 i要的所有数据库信息。

  

    Oracle 静态数据字典分类

    名称前缀                                      含义  

user_                     包含了当前数据库用户所拥有的所有的模式对象的信息

all_                        包含了当前数据库用户可以访问的所有的模式对象的信息

dba_                    包含了所有数据库对象信息,只有具有DBA角色的用户才能而过访问的这些视图 


例如:

SELECT *

  FROM dba_tables;

SELECT *

  FROM all_tables;

SELECT *

  FROM user_tables;


注: dba_ 开头的 必须是sys 用户所有 ,非 sys 用户 需要在前面加 sys 前缀

下面都是一些常用的视图家族,都有一个DBA_ ALL_ USER_ 的视图 


col_privs  包含了表的列权限信息,包含授予者,被授予者和权限名称等信息,

extents    存储分配信息,包括数据段名 表空间名和分区编号,分区大小

indexes    索引信息  包含索引类型, 唯一性, 索引作用等表的信息

ind_columns  索引列信息  包括索引上的列的排序方式等信息

object      对象信息, 包括对象名称 类型  创建时间 等信息

segments  表和索引的数据段信息,包括表空间,存储设置等信息

sequences  序列信息 包含序列名称 ,循环性,最大值等信息

source    除触发器之外的所有存储过程,函数,包的源代码信息 

synonyms 同义词信息  包括引用的对象等信息

sys_privs  系统权限信息 包括系统权限名称 授予者

tab_columns  表和视图的列信息 ,包括列的数据类型等信息 

tab_privs  表权限信息 

tables  表信息 包括表所属的表空间 ,存储参数 ,数据行数量等信息。

triggers  触发器信息 包括触发器的类型,事件。触发器体等信息

users 用户信息 。包括用户临时和默认的表空间的类型

views  视图 信息 


看一下权限视图 

role_sys_privs  角色拥有的系统权限视图

role_tab_privs  角色拥有的对象权限

user_role _ privs  用户拥有的角色 

user_sys_privs  用户拥有的权限的角色

user_tab_privs_mads    用户分配的关于表对象权限

user_tab_privs_recd  用户拥有的关于表对象权限

user_col_privs_mads  用户分配的关于列的对象权限

user_col_privs_recd  用户拥有的关于列的对象权限


3.  动态性能表是数据库实例启动后  创建的表。动态性能表都数据SYS 用户; 用于存放数据库在运行的过程中的性能相关的信息。 通过以下的视图查看 

 select name from  v_$fixed_table;


4.动态性能视图的使用;

只有sys 用户和拥有DBA 角色的用户可以访问 。


在数据库启动到 NOMOUNT 的状态时 可以访问 v$ parameter v$sga  v$session v$process v$instance v$version v$option 

当数据库启动到 mount 的状态时 我们还可以访问 v$ log v$logfiel v$datafile v$controlfile  v$ database v$thread  v$datafile_header  

当数据库完全启动后。可以访问 v_$fixed_table

v$access  包含当前被锁定的数据库对象及正在访问他们的会话

v$archive  包含归档所需的重做日志文件中的信息

v$ archived_log  包含从控制文件中获取的归档日志信息。

v$archive_processes  包含于一个实例相关的arch 进程的状态信息 

v$ backup  包含联机数据文件的备份状态信息 

v$backup_async_io  包括从控制文件中获取的备份集的信息 

v$ backup_corruption  包含从控制文件中获取的有关数据文件备份中损坏的信息。

v$ backup_datafile  包含从控制文件中获取的备份的数据文件和备份控制文件的信息

v$ backup_device  包含支持备份设备的信息

v$backup_piece    包含从控制文件中获取的备份块的信息

v$backup_redolog    包含从控制文件中获取的关于备份集的归档日志的信息

v$backup_set    包含从控制文件中获取的备份集的信息

v$bgprocess 包含数据库后台进程信息

v$ buffer_pool  包含当前实例中所有可用缓冲池的信息

v$ buffer_pool_statistics  包含当前实例所有可用缓冲池的统计信息

v$ cache  包含当前实例的SGA 中的每一块的头部信息

v$context  包含当前对话的属性信息。

v$controlfile  包含控制文件信息

v$ controlfile_record_section  包含控制文件记录部分的信息

v$ copy_curruption 包含从控制问价中获取的数据文件副本损坏的信息 

v$database  包含从控制文件中获取的数据库信息 

v$datafile  包含从控制文件中获取的数据文件信息

v$datafile_copy  包括从控制文件中获取的数据文件副本的信息

v$datafile_header  包含数据文件头部信息

v$ db_object_cache  包含缓存在库高速缓冲中的数据库对象信息

v$db_pipes  包含当前数据库中的管道信息

v$deleted_object  包含从控制文件中获取的被删除的归档日志,数据文件副本和备份块的信息

v$ dispatcher_rate  包含调度进程速率统计量的信息

v$ dispatche  包含调度进程的信息

 v$ DLM_ALL_LOCKS  包含当前所有锁

v$ DLM_CONVERT_LOCAL  包含本地锁转换操作所消耗的时间的信息 

v$ EVENT_NAME  包含等待时间的信息

v$ fixed_table  包含所有可用的动态性能视图和动态性能表的信息 

v$ sysstat  包含当前实例的性能统计信息

v$ instance  包含当前实例的详细信息 

v$sga  包含 SGA 区的主要组成部分的信息 

v$ sgainfo  包含SGA 区的详细消息 

v$ parameter 包含初始化参数信息 

v$ sversion  包含Oracle 版本信息 

v$ option  包含已安装的 Oraclette组件的选项信息 

v$session  包含当前所有会话信息 

v$process  包含当前系统所有进程信息 

v$ bgprocess  包含数据库所有后台进程信息 

v$ database  包含当前数据库信息

v$ controlfile  包含当前数据库所有控制文件信息

v$ datafile  包含当前数据库所有的数据文件的信息 

v$ dbfile  包含所有数据文件的编号信息 

v$ logfile  包含当前数据库所有的重做日志文件信息

v$ log  包含当前数据库重做日志文件信息 

v$ log_history  包含重做日志文件切换情况的历史信息

v$ thread  包含当前数据库线程的信息

v$ lock 包含锁的信息 

v$ locked_object  包含被加锁的数据库对象信息 

v$ rollname 包含当前处于联机状态的回退信息 

v$ rollstat    包含当前所有的回退段的统计信息 

v$ tablespace  包含当前数据库所有表空间信息

v$ tempfile  包含当前数据库多有的临时数据文件的信息 ;


实例:

查看当前用户的缺省表空间

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 *

  FROM user_tab_columns

 WHERE table_name = :table_name;

显示用户信息(所属表空间)

select default_tablespace,temporary_tablespace 

from 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_tablespace 

from dba_users where username='GAME';


显示用户的PROFILE

select profile from dba_users where username='GAME';


2、表


查看用户下所有的表

SQL>select * from user_tables;


查看名称包含log字符的表

SQL>select object_name,object_id from user_objects

where 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_segments

where 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_segments

where 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_name

from user_constraints c,user_cons_columns cc

where 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;


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';




本文分享自微信公众号 - Oracle优化大师,如有侵权,请联系 service001@enmotech.com 删除。
文章转载自Oracle优化大师,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论