精华内容
下载资源
问答
  • Oracle 数据字典

    2008-10-12 09:57:50
    Oracle 数据字典Oracle 数据字典Oracle 数据字典Oracle 数据字典Oracle 数据字典Oracle 数据字典Oracle 数据字典Oracle 数据字典Oracle 数据字典
  • Oracle数据字典

    2011-08-09 20:33:31
    Oracle数据字典 Oracle数据字典
  • oracle 数据字典

    2013-06-08 09:05:22
    oracle数据字典详解,Oracle数据字典就像是一个宝库:它是ORACLE数据库的重要组成部分,提供了诸如数据库结构、数据库对象空间分配和数据库用户等等有关数据库的信息。本文试图从数据库管理系统的若干基本概念出发,...
  • oracle数据字典

    2014-10-18 21:17:16
    oracle数据字典分享,一起学习变大师,哈哈哈
  • ORACLE数据字典

    2017-01-23 15:50:00
    Oracle数据字典 Oracle数据字典是存放有关数据的地方,它的用途是用来描述数据。数据字典可以分为静态和动态。 静态数据字典 一、静态数据字典:用户访问数据字典不会发生变化,主要是由表和视图组成,数据字典中...

    Oracle数据字典

    Oracle数据字典是存放有关数据的地方,它的用途是用来描述数据。数据字典可以分为静态和动态。

    静态数据字典

    一、静态数据字典:用户访问数据字典不会发生变化,主要是由表和视图组成,数据字典中的表是不能直接被访问的,但是我们可以访问数据字典中的视图。静态数据字典分为三类,它们的前缀分别是user_*、 all_*、 dba_*。

    •  user_*:该视图存储了关于当前用户下所有对象的信息
    •  all_* :该视图存储了当前用户能够访问的对象的信息。(与user_*相比,all_* 并不需要拥有该对象,只需要具有访问该对象的权限即可)
    • dba_*:该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限  

    以上三类处理访问范围不同之外(权限不同),其他均具有一致性,只有SYS和拥有DBA系统权限的用户可以看到所有的视图。没有DBA权限的用户只能看到user_*和all_*视图。如果没有被授予相关的SELECT权限的话,他们是不能看到 dba_*视图的。

    select * from dictionary;

    dba_data_file:记录的是物理数据文件的信息,这些信息包括数据文件的名称、大小、所属表空间等信息,数据文件的基本信息

    dba_tab_grant :数据库中对象所授权的权限

    dba_tab_privs :查看数据库中用户的权限

    dba_sys_privs:查看所用用户以及角色的特权

    dba_tab_quotas:查看所有用户表空间限额

    dba_ts_quotas :所有用户表空间限额

    dba_uers:查看所有用户信息

    dba_view:查看所有视图信息

    dba_roles:显示所有角色信息

    dba_tablespaces: 查询关于表空间的一些基本的数据字典

    dba_free_tablespaces:显示表空间的空闲空间

    dba_temp_files:临时文件的基本信息

    dba_tables; dba_tab_columns: DBA 用户的所有的表的基本信息

    dba_synonyms:DBA 用户的所有的同义词的基本信息

    dba_sequences:DBA 用户的所有的序列的信息

    dba_constraints:DBA 用户的所有的约束的信息

    dba_indexes:DBA 用户的所有的索引的基本信息

    dba_ind_columns :所有表及簇上压缩索引的列

    dba_triggers:DBA 用户的所有的触发器的基本信息

    dba_source:DBA 用户的所有的存储过程的基本信息

    dba_segments:DBA 用户的所有的段的基本信息

    dba_extents :DBA 用户的所有的区的基本信息

    dba_objects:DBA 用户的所有的对象的基本信息

    cat:当前用户可以访问的所有的基表

    system.tab:当前用户可以访问的所有的基表,视图,同义词

    dict:构成数据字典的所有的表信息  

    role_tab_privs:所有角色被授予的表对象的特权

    user_sys_privs:查看自己的权限,查看当前用户的系统权限和表级权限

    user_role_privs:显示用户角色,查看当前用户的角色

    user_tab_privs:该视图主要是存储当前用户下对所有表的权限信息。

    user_users:主要描述当前用户的信息,查看当前用户的缺省表空间,主要包括当前用户名、帐户id、帐户状态、表空间名、创建时间等,所有用户相关数据

    user_tables:查询该用户拥有哪些表,主要描述当前用户拥有的所有表的信息,主要包括表名、表空间名、簇名等。通过此视图可以清楚了解当前用户可以操作的表有哪些。

    user_objects:主要描述当前用户拥有的所有对象的信息,对象包括表、视图、存储过程、触发器、包、索引、序列等。该视图比user_tables视图更加全面

    user_indexes:查询该用户拥有哪些索引

    user_views:查询该用户拥有哪些视图

    user_objects:查询该用户拥有哪些数据库对象,对象包括表、视图、存储过程、触发器、包、索引、序列、JAVA文件等

     动态数据字典

    二、动态数据字典   Oracle包含了一些潜在的由系统管理员如SYS维护的表和视图,由于当数据库运行的时候它们会不断进行更新,所以称它们为动态数据字典(或者是动态性能视图)。这些视图提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。Oracle中这些动态性能视图都是以v$开头的视图

     v$_:当前实例的动态视图,包含系统管理和系统优化等所使用的视图

      gv_:分布式环境下所有实例的动态视图,包括系统管理和系统优化使用的视图

     

    v$access :该视图显示数据库中锁定的数据库对象以及访问这些对象的会话对象(session对象)。

    v$session:该视图列出当前会话的详细信息。

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

    v$context:该视图列出当前会话的属性信息。比如命名空间、属性值等。

    v$instance:数据库实例的基本信息。

    v$datafile;:数据文件的基本信息

    v$controlfile; 控制文件的基本信息

    v$logfile:日志文件的基本信息, 有关实例重置日志组文件名及其位置的信息

    v$log 从控制文件中提取有关重做日志组的信息

    v$archived_dest 记录归档日志文件的路径信息

    v$database:数据库的基本信息

    show parameter log_archive_dest:日志文件参数信息

    v$parameter:记录初始化参数文件中所有项的值

    v$system_parameter 显示实例当前有效的参数信息

    v$process 当前进程的信息

    v$bgprocess: 后台进程信息

    v$archived_log:归档状态日志文件的一些基本信息

    v$sga: 显示实例的SGA区大小

    v$db_object_cache; v$sql:关于内存结构的一些信息 

    v$sgastat: 统计SGA使用情况的信息

    v$lock :通过访问数据库会话,设置对象锁的所有信息

    v$sql :记录SQL语句的详细信息

    v$sqltext: 记录SQL语句的语句信息

    数据字典使用实例:

    1. 显示用户信息(所属表空间) :select default_tablespace,temporary_tablespace  from dba_users where username='GAME';
    2. 查看当前用户的缺省表空间   select username,default_tablespace from user_users;
    3. 查看当前用户的角色   select * from user_role_privs;
    4. 查看当前用户的系统权限和表级权限 select * from user_sys_privs;   select * from user_tab_privs;
    5. 显示当前会话所具有的权限   select * from session_privs;
    6. 显示指定用户所具有的系统权限  select * from dba_sys_privs where grantee='GAME';
    7. 显示特权用户   select * from v$pwfile_users;
    8. 显示用户信息(所属表空间)   select default_tablespace,temporary_tablespace   from dba_users where username='GAME';
    9. 显示用户的PROFILE   select profile from dba_users where username='GAME';
    10. 查看用户下所有的表   select * from user_tables;
    11. 查看名称包含log字符的表   select object_name,object_id from user_objects   where instr(object_name,'LOG')>0;
    12. 查看某表的创建时间   select object_name,created from user_objects where object_name=upper('&table_name');
    13. 查看某表的大小   select sum(bytes)/(1024*1024) as "size(M)" from user_segments   where segment_name=upper('&table_name');
    14. 查看放在Oracle的内存区里的表   select table_name,cache from user_tables where instr(cache,'Y')>0;
    15. 查看索引个数和类别   select index_name,index_type,table_name from user_indexes order by table_name;
    16. 查看索引被索引的字段   select * from user_ind_columns where index_name=upper('&index_name');
    17. 查看索引的大小   select sum(bytes)/(1024*1024) as "size(M)" from user_segments   where segment_name=upper('&index_name');
    18. 查看序列号,last_number是当前值   select * from user_sequences;
    19. 查看视图的名称   select view_name from user_views;
    20. 查看创建视图的select语句   set view_name,text_length from user_views;   set long 2000; 说明:可以根据视图的text_length值设定set long 的大小   select text from user_views where view_name=upper('&view_name');
    21. 查看同义词的名称   select * from user_synonyms;
    22. 查看某表的约束条件   select constraint_name, constraint_type,search_condition, r_constraint_name   from user_constraints where table_name = upper('&table_name');

    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;

    1. 查看函数和过程的状态   select object_name,status from user_objects where object_type='FUNCTION';   select object_name,status from user_objects where object_type='PROCEDURE';
    2. 查看函数和过程的源代码   select text from all_source where owner=user and name=upper('&plsql_name');

     

     

    转载于:https://www.cnblogs.com/shanshanliu/p/6277172.html

    展开全文
  • ORACLE 数据字典

    千次阅读 2012-07-08 21:54:46
    Oracle 数据字典


    一、数据字典的概述
    1、数据字典dictionary总是属于Oracle用户sys的,存储在SYSTEM表空间中。dirt是存所有数据字典名称的一张总表
    2、数据库对象的信息存储在数据字典中,这些信息包括用户账户信息、数据文件名、段名、盘区位置、表说明和权限等等。
    2、当数据库需要字典信息将读取字典表并将返回的数据存储在字典缓存区的SGA中,都用LRU算法管理在内存中。


    二、数据字典的分类
    说明:ORACLE数据字典分为静态和动态,包括基表和用户可访问视图,基表大多不能直接访问,多数以加密格式存储。
    但可以访问其中的视图,视图分为四类:
    1、user_*(当前用户所拥有视图)
    说明:用户自己私有环境的视图。

    2、all_*(当前用户可访问视图)
    说明:用户对于数据库的全局视点,返回用户已经通过公共或直接授权的权限或者角色访问的框架对象。

    3、dba_*(数据库中所有视图)
    说明:整个DB的情况,DBA或授予系统权限SELECT ANY TABLE的用户能查询,且查询时必须带SYS前缀,不能创建同义词。

    4、v$(服务器动态性能视图)
    说明:由动态性能表V_$生产的视图。查看实例的运行情况,普通用户没有权限查看V$视图和属于SYS的DBA视图,必须被授予权限才能查看。

    5、gv$
    说明:比v$多一个字段,区分节点,集群环境的全局服务器动态性能视图。


    三、常用的DBA视图

    1、dba_all_tables
    说明:显示数据库中的所有关系和对象表

    2、dba_clusters
    说明:聚簇

    3、dba_col_comments
    说明:显示表和视图列的注释

    4、dba_constraints
    作用:能查看约束的详细信息
    说明:
    字段CONSTRAINT_TYPE:P为主键、R为外键、U为唯一约束、C为检查或非空约束。
    字段STATUS:约束是否生效,ENABLED为有效(默认)、DISABLED为无效。
    字段DEFERRABLE:是否可延迟,not deferrable不可(默认)、deferrable可
    字段DEFERRED:应用时刻,IMMEDIATE立刻(默认)、deferred延迟
    字段VALIDATED:VALIDATED(默认)
    结论:在默认情况下,Oracle的约束是不允许延迟(not deferrable)、立即应用和验证的(immediate、validated)。在数据变化执行DML语句的时候,立即进行约束验证。
    设置延迟则1、alter table T add constraint C_T_ID1 check (id>5) deferrable;2、set constraint c_t_id1 deferred;延迟则是commit再验证。

    5、dba_cons_columns
    作用:能查看约束的约束字段。

    6、dba_data_files
    作用:关于数据库文件的信息,查看用户表空间对应的数据文件名

    7、dba_db_links
    说明:数据库中所有数据库链路DBLINK

    8、dba_dependencies
    说明:查看直接依赖关系
    也可以用工具视图deptree和ideptree确定直接依赖和间接依赖关系。
    使用这2个视图必须先运行utldtree.sql建立并填充这2个视图的过程deptree_fill。
    @%oracle_home%\rdbms\admin\utldtree
    exec deptree_fill('TABLE','SCOTT','EMP');
    select * from deptree;
    select * from ideptree.

    9、dba_directories
    查看DIRECTORY的位置及用户。

    9、dba_errors
    说明:查看编译错误,存储报错信息。也可以sqlplus用show erros procedure PRO_TEST查看

    10、dba_extents
    说明:数据库中包含所有分区信息,包括回滚段,能够显示有多少块,块大小、编号。查看表格的大小、分区表大小等等
    select * from dba_extents where segment_type='ROLLBACK';--回滚段
    select extent_id,bytes from dba_extents
    where segment_name='CUSTOMERS' and segment_type='TABLE' order by extent_id;//表使用的extent的信息。segment_type='ROLLBACK'查看回滚段的空间分配信息
    Select Segment_Name,Sum(bytes)/1024/1024 bytes From User_Extents Group By Segment_Name order by bytes desc;--表格大小

    11、dba_external_tables
    说明:显示数据库中的外部表的特定属性

    12、dba_external_locations
    说明:列出了外部表的数据源

    13、dba_free_space
    说明:列出所有表空间中自由分区(字节和块)
     select tablespace_name,sum(bytes), sum(blocks)
    from dba_free_space group by tablespace_name;
    查询表空间使用率的语句如果执行非常慢,往往是这个表引起的,这个表慢则是由于回收站内对象太多所致,清理回收站即可。

    13、dba_hist_wr_control
    说明:查看Oracle AWR报告收集信息的间隔和保留的天数
    例如:
    DBID SNAP_INTERVAL RETENTION TOPNSQL
    1401840015 +00000 01:00:00.0 +00008 00:00:00.0 DEFAULT
    以上意思是间隔是1小时,保留8天。

    14、dba_indexes
    说明:数据库中非分区表的索引的描述,包括主键索引
    列distinct_keys表示唯一键的数量,体现选择性,选择性越高越好。
    比较一下唯一键的数量和表中的行数,就可以判断索引的选择性。索引的选择性越高,索引返回的数据就越少。
    列Clustering_Factor表示群集因子,
    该列反映了数据相对于已 建 索引的列是否显得有序。如果Clustering Factor 列的值接近于索引中的树叶块(leaf_block)的数目,
    表中的数据就越有序。如果它的值接近于表中的行数,则表中的数据就不是很有序。
    列leaf_block表示树叶块数目。
    列blevel表示二元高度,越低越好。当blevel大于3则重建索引。必须确保blevel在3内。索引的性能关乎数据库的性能
    二元高度对把ROWID 返回给用户进程时所要求的 I/O 量起到关键作用。
    二元高度主要随着表的大小以及被索引的列中值的范围的狭窄程度而变化。
    索引上如果有大量被删除的行,它的二元高度也会增加。更新索引列也类似于删除操作,因为它增加了已删除键的数目。
    重建索引可能会降低二元高度 。
    列status表示索引的状态,UNUSABLE为无效索引。
    例子:
    SELECT index_name, table_name FROM DBA_INDEXES
    WHERE status = 'UNUSABLE' or blevel>=4;
    ALTER INDEX HR.XX REBUILD ONLINE;
    ALTER INDEX HR.XX REBUILD TABLESPACE USERS;
    对于分区索引,状态保存在 DBA_IND_PARTITIONS 视图中

    15、dba_ind_columns
    说明:在所有表及聚集上压缩索引的列,可获知索引建立在那些字段上
     select i.index_name,i.uniqueness,c.column_name
    from user_indexes i,user_ind_columns c
     where i.index_name=c.index_name
     and i.table_name ='ACC_NBR';//联接使用

    16、dba_ind_expressions
    说明:基于函数的索引的表达式ta

    DBA_IND_PARTITIONS
    显示分区索引信息 显示数据库所有分区索引信息

    DBA_IND_SUBPARTITIONS
    显示子分区索引信息 显示数据库所有组合分区表的子分区索引信息

    dba_locks
    对v$lock的格式化视图。
    Session_id:和v$lock中的Sid对应。
    Lock_type:和v$lock中的type对应。
    Lock_ID1: 和v$lock中的ID1对应。
    Mode_held,mode_requested:和v$lock中
    的lmode,request相对应。


    17、dba_jobs
    说明:通过dbms_job创建 的JOB在dba_jobs中记录

    18、dba_jobs_running
    说明:查看正常运行的job

    dba_lobs
    说明:查看lob字段,每个lob字段是一个segment

    dba_mviews
    说明:查看物化视图的数目和属性

    dba_mview_logs
    说明:查看物化视图日志的数量和相关的purge信息。

    19、dba_objects
    说明:数据库中所有的对象(包含创建时间和最后DDL时间)
    表中的status确定当前对象是否有效,在ORACLE 9g之前,对象无效不能使用,但在10g之后会自动编译
    查找无效对象:SELECT object_name, object_type FROM DBA_OBJECTS WHERE status = 'INVALID';
    编译无效对象:@?/rdbms/admin/utlrp


    DBA_PART_TABLES
    显示数据库所有分区表的信息

    DBA_PART_KEY_COLUMNS
    显示数据库可访问的所有分区表的分区列信息

    20、dba_partial_drop_tabs
    说明:列出了具有部分完成的drop cloumn操作的表

    21、dba_profiles
    说明:关于用户的概要文件的信息,可找出数据库中有哪些PROFILE,数据库创建后,系统则存在名为DEFAULT的默认PROFILE,若不做特殊指定,创建用户时用户默认使用的PROFILE就是DEFAULT。修改概要文件不需要重启。
    select * from dba_profiles where profile='DEFAULT';
    PROFILE RESOURCE_NAME RESOURCE LIMIT
    ---------- -------------------------------- -------- ----------------------------------------
    DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED //
    DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED //每个用户名所允许的并行会话数
    DEFAULT CPU_PER_SESSION KERNEL UNLIMITED //一个会话一共可以使用的CPU时间,单位是百分之一秒
    DEFAULT CPU_PER_CALL KERNEL UNLIMITED //一次SQL调用(解析、执行和获取)允许使用的CPU时间
    DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED //限制会话对数据块的读取,单位是块
    DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED //限制SQL调用对数据块的读取,单位是块
    DEFAULT IDLE_TIME KERNEL UNLIMITED //允许空闲会话的时间,单位是分钟
    DEFAULT CONNECT_TIME KERNEL UNLIMITED //限制会话连接时间,单位是分钟
    DEFAULT PRIVATE_SGA KERNEL UNLIMITED //限制会话在SGA中Shared Pool中私有空间的分配
    DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10 //指定锁定用户的登录失败次数

    DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED //密码可以被使用的天数,单位是天,默认值180天
    DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED //密码可重用的间隔时间(结合PASSWORD_REUSE_MAX)
    DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED //密码的最大改变次数(结合PASSWORD_REUSE_TIME)
    DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL
    DEFAULT PASSWORD_LOCK_TIME PASSWORD UNLIMITED //超过错误尝试次数后,用户被锁定的天数,默认1天
    DEFAULT PASSWORD_GRACE_TIME PASSWORD UNLIMITED //当密码过期之后还有多少天可以使用原密码
    参数解释
    21.1、对数据库资源做限制
    { { SESSIONS_PER_USER 每个用户名所允许的并行会话数
    | CPU_PER_SESSION 一个会话一共可以使用的CPU时间,单位是百分之一秒
    | CPU_PER_CALL 一次SQL调用(解析、执行和获取)允许使用的CPU时间
    | CONNECT_TIME 限制会话连接时间,单位是分钟
    | IDLE_TIME 允许空闲会话的时间,单位是分钟
    | LOGICAL_READS_PER_SESSION 限制会话对数据块的读取,单位是块
    | LOGICAL_READS_PER_CALL 限制SQL调用对数据块的读取,单位是块
    | COMPOSITE_LIMIT “组合打法”
    } { integer | UNLIMITED | DEFAULT }
    | PRIVATE_SGA 限制会话在SGA中Shared Pool中私有空间的分配 { size_clause | UNLIMITED | DEFAULT}
    }
    21.2、对密码做限制
    { { FAILED_LOGIN_ATTEMPTS 帐户被锁定之前可以错误尝试的次数
    | PASSWORD_LIFE_TIME 密码可以被使用的天数,单位是天,默认值180天
    | PASSWORD_REUSE_TIME 密码可重用的间隔时间(结合PASSWORD_REUSE_MAX)
    | PASSWORD_REUSE_MAX 密码的最大改变次数(结合PASSWORD_REUSE_TIME)
    | PASSWORD_LOCK_TIME 超过错误尝试次数后,用户被锁定的天数,默认1天
    | PASSWORD_GRACE_TIME 当密码过期之后还有多少天可以使用原密码
    } { expr | UNLIMITED | DEFAULT }
    | PASSWORD_VERIFY_FUNCTION { function | NULL | DEFAULT }
    删除PROFILE:
    drop profile [资源文件名] [CASCADE] ;
    若创建的PROFILE已经授权给了某个用户,使用CASCADE级联收回相应的限制,收回限制信息后将以系统默认的PROFILE对该用户进行限制。
    设置PROFILE参数的生效时间
    21.3、用户所有拥有的PROFILE中有关密码的限制立即生效,不受限制。从这个可看出Oracle对用户密码的重视程度。
    21.4、用户所有拥有的PROFILE中有关资源的限制与resource_limit参数的设置有关,当为TRUE时生效,当为FALSE时(默认值)设置任何值都无效。
    SQL> show parameter resource_limit
    NAME TYPE VALUE
    -------------------- ----------- -------
    resource_limit boolean FALSE
    修改profile:
    alter profile default RESOURCE_NAME 1000;
    如:alter profile default limit failed_login_attempts 1000;
    alter profile default limit failed_login_attempts unlimited;
    我们可以手动的创建一个profile,并指定限制:
    SQL> create profile frank_profile limit
    2 SESSIONS_PER_USER 5
    3 IDLE_TIME 2
    4 FAILED_LOGIN_ATTEMPTS 5;
    Profile created.
    SQL> alter user frank profile frank_profile;
    User altered.

    dba_registered_snapshots
    说明:查看生效的物化视图,里面可以看到物化视图的生成SQL。

    dba_recyclebin
    说明:查看回收站
    参考SQL:SELECT owner, original_name, object_name,
    type, ts_name, droptime, related, space
    FROM dba_recyclebin
    WHERE can_undrop = 'YES';


    21、dba_roles
    说明:查看所有角色

    22、dba_role_privs
    说明:查看用户所拥有的角色

    23、dba_rollback_segs
    说明:回滚段当前状态的描述

    、dba_scheduler_jobs
    通过dbms_job创建 的JOB在dba_jobs记录
    通过dbms_scheduler创建 的JOB在dba_scheduler_jobs记录
    oracle 10g推出dbms_scheduler以代替 dbms_job

    select scheduler$_job.* from scheduler$_job ;具体的表,存储 schedule_job
    select * from dba_scheduler_jobs;视图,查询所有的scheduler_job (10g新的类型,替代dba_jobs)
    所以在pl/sql的jobs类型中看不到任何信息,需要才查看上面这个视图


    24、dba_segments
    说明:查看所有数据库段分配的存储空间,和表空间对应的所有对象,bytes显示目前回滚段的字节数,查看表格空间大小。
    select segment_name, bytes /1024/1024
    from user_segments s
    where segment_type = 'TABLE'
    order by bytes desc;

    25、dba_sequences
    说明:数据库中所有序列数的描述

    26、dba_snapshots
    说明:9i前叫快照,9i后叫物化视图,查看物化视图的相关信息

    dba_snapshot_logs
    说明:9i前叫快照日志,9i后叫物化视图日志,查看物化视图日志的相关信息

    27、dba_source
    说明:查看源代码,存放存储过程、函数、包、触发器等对象的SQL语句文本
    select * from dba_source where name='PRC_PWYZL_CUSTACCT';

    28、dba_synonyms
    说明:数据库中所有同义词

    29、dba_sys_privs
    说明:查看用户所拥有的系统权限

    30、dba_tables
    说明:数据库中所有表的描述,也可以统计出表格的实际使用空间(不含碎片值)
    select table_name,num_rows * avg_row_len/1024/1024 bytes
    from user_tables
    order by bytes desc;

    31、dba_tablespaces
    说明:数据库中所有表空间的描述(包含用户表空间和临时表空间)

    32、dba_TAB_COLS
    说明:保存表、视图和Clusters中的列信息
    字段:Varchar2的长度看DATA_LENGTH,number的长度看DATA_PRECISION。

    33、dba_tab_col_statistics
    说明:提供了从相关tab_columns视图中得到的列、字段的统计和状态信息

    34、dba_tab_columns
    说明:所有表描述、视图以及聚集的列、字段
    字段:Varchar2的长度看DATA_LENGTH,number的长度看DATA_PRECISION。

    35、dba_tab_comments
    说明:查看数据库表名注释

    36、dba_tab_grants
    说明:数据库中的对象所授予的权限

    37、dba_tab_histograms
    说明:描述了表和视图上的状态

    38、dba_tab_modifications
    说明:描述了被修改的表

    DBA_TAB_PARTITIONS
    显示表分区信息 显示数据库所有分区表的详细分区信息

    DBA_TAB_SUBPARTITIONS
    显示子分区信息 显示数据库所有组合分区表的子分区信息

    39、dba_tab_privs
    说明:查看数据库中的对象、权限、授予人、被授予人的关系。

    dba_registry
    说明:查看Oracle安装的组件。

    40、dba_ts_quotas
    说明:所有用户表空间限额

    41、dba_triggers
    说明:触发器

    42、dba_types
    说明:显示对象类型信息

    43、dba_unused_col_tabs
    说明:列出没有使用列的表

    44、dba_updatable_columns
    作用:查看对象是否能进行DML操作,该字典包含了哪些列可以更新、插入、删除。

    45、dba_users
    说明:查看数据库的所有用户信息,包括用户所在表空间等

    46、dba_views
    说明:数据库中所有视图的定义


    四、常用的v$视图

    v$shared_server
    select count(*) from v$shared_server;不为O表示为共享服务器模式,反之为专用服务器模式

    1、v$session
    1.1说明:记录有关活动会话的信息。
    在本视图中,每一个连接到数据库实例中的session都拥有一条记录。包括用户session及后台进程如DBWR,LGWR,arcchiver等等。
    数据库session被一个运行在数据库服务器上或从中间服务器甚至桌面通过SQL*Net连接到数据库的客户端进程启动
    查询会话的信息和锁的信息

    1.2、列值说明
    SID或SADDR 用户的id和地址
    SID:SESSION标识,常用于连接其它列
    SERIAL#:如果某个SID又被其它的session使用的话则此数值自增加(当一个SESSION结束,另一个SESSION开始并使用了同一个SID)。
    AUDSID:审查session ID唯一性,确认它通常也用于当寻找并行查询模式
    USERNAME:当前session在oracle中的用户名。
    1.2.2、SQL_HASH_VALUE,SQL_ADDRESS:这两列用于鉴别默认被session执行的SQL语句。如果为null或0,那就说明这个session没有执行任何SQL语句。
    1.2.3、PREV_HASH_VALUE和PREV_ADDRESS两列用来鉴别被session执行的上一条语句。
    1.2.4、STATUS:这列用来判断session状态是:
    Achtive:正执行SQL语句(waiting for/using a resource)
    Inactive:等待操作(即等待需要执行的SQL语句)
    Killed:被标注为删除
    OSUSER:客户端操作系统用户名
    要显示用户所连接PC的 TERMINAL、OSUSER,需在该PC的ORACLE.INI或Windows中设置关键字TERMINAL,USERNAME。
    MACHINE:客户端执行的机器
    TERMINAL:客户端运行的终端
    PROCESS:客户端进程的ID
    PROGRAM:客户端执行的客户端程序,比如WIN PLSQL:plsqldev.exe,LINUX的SQLPLUS sqlplus@bys3.bys.com (TNS V1-V3),如oracle@bys3.bys.com (SMON) 后台进程 oracle@bys3.bys.com (TNS V1-V3) 服务器上直接连接
    sid,serial#:表示会话信息。
    program:表示会话的应用程序信息。
    row_wait_obj#:表示等待的对象,和dba_objects中的object_id相对应。
    lockwait :该会话等待的锁的地址,与v$lock的kaddr对应.
    event:会话的等待事件


    1.3、示例:
    1.3.1、查找你的session信息
    SELECT SID, OSUSER, USERNAME, MACHINE, PROCESS
    FROM V$SESSION WHERE audsid = userenv('SESSIONID');

    1.3.2、当machine已知的情况下查找session
    SELECT SID, OSUSER, USERNAME, MACHINE, TERMINAL
    FROM V$SESSION
    WHERE terminal = 'pts/tl'AND machine = 'rgmdbs1';

    1.3.3、查找当前被某个指定session正在运行的sql语句。假设sessionID为100
    select sql_text
    from v$sqltext
    where (hash_value,address) in
    (select decode(sql_hash_value,0,prev_hash_value,sql_hash_value),
    decode(sql_hash_value,0,prev_sql_addr,sql_address)
    from v$session
    where paddr = (select addr from v$process where spid='操作系统进程id'));
    寻找被指定session执行的SQL语句是一个公共需求,如果session是瓶颈的主要原因,那根据其当前在执行的语句可以查看session在做些什么。


    v$session_wait
    查询等待的会话信息。
    sid:表示持有锁的会话信息。
    Seconds_in_wait:表示等待持续的时间信息
    Event:表示会话等待的事件,锁等于enqueue

    v$session_event
    说明:查看会话的等待事件

    V$SGA


    2、V$BGPROCESS
    说明:检查数据库中启动的后台进程个数及其名称;

    3、v$controlfile
    说明:查看所有控制文件

    v$database
    说明:查看数据库名
    select name from v$database

    4、v$datafile
    说明:数据库使用的数据文件信息,如控制文件信息

    V$DIAG_INFO
    说明:查看跟踪日志、警告日志等的位置。日志位置


    v$event_name
    说明:查询等待事件
    例子:
    SELECT wait_class#,wait_class_id,wait_class,
    COUNT ( *) AS "count" FROM v$event_name
    GROUP BY wait_class#, wait_class_id, wait_class
    ORDER BY wait_class#
    Wait_class取值说明:
    Administrative:等待DBA命令执行结果导致的用户等待(例如:重建索引)
    Application:等待用户应用程序代码结果(例如:行级锁或者显式锁命令导致的锁等待)
    Cluster:与RAC资源相关的等待(例如:全局缓存资源'gc cr block busy')
    Commit: 这类等待事件只包含一种等待事件-一次提交之后等待重做日志确认(日志文件同步 'log file sync')
    Concurrency:等待内部数据库资源(例如:闩)
    Configuration:这种等待由数据库或者实例资源配置不足造成(例如:较小的日志文件大小,共享池大小)
    Idle:这种等待表明会话不活跃,等待工作(例如:'SQL*Net message from client')
    Network:与网络报文传输相关的等待(例如:'SQL*Net more data to dblink')
    Other:系统中不常见的等待事件(例如:'wait for EMON to spawn')
    Scheduler:资源管理器相关等待(例如:'resmgr: become active')
    System I/O:等待后台进程I/O(例如:DBWR等待'db file parallel write')
    User I/O:等待用户I/O(例如:'db file sequential read')


    v$instance
    说明:查看实例名
    select instance_name from v$instance;

    5、v$latch
    说明:记录了数据库启动以来的所有cahce buffer chains的latch的状况
    说明:gets表示总共有这么多次请求,misses表示请求失败的次数(加锁不成功),而sleeps 表示请求失败休眠的次数。
    通过sleeps我们可以大体知道数据库中latch的竞争是否严重,
    这也间接的表征了热点块的问题是否严重。由于v$latch是一个聚合信息,我们并不能获得哪些块可能存在频繁访问。
    那我们要来看另一个view信息,那就是v$latch_children,v$latch_children.addr记录的就是这个latch的地址。

    6、v$latch_children

    7、v$librarycache
    说明:共享池中SQL语句的管理信息。

    v$license
    说明:查看当前session连接数情况
    SESSION_MAX:实例允许的并发最大session数量
    SESSION_WARNING:当前实例警告的并发session数量
    SESSION_CURRENT:实例当前并发session数
    SESSION_HIGHWATER:自从实例启动以来最高的session数
    USERS_MAX:数据库允许的最大用户数量
    CPU_COUNT_CURRENT:系统中当前逻辑CPU或处理器数量
    CPU_CORE_COUNT_CURRENT:当前CPU内核数量,包括多核CPU
    CPU_SOCKET_COUNT_CURRENT:当前CPU插槽数量
    CPU_COUNT_HIGHWATER:实例启动以来使用的最大的CPU数量
    CPU_CORE_COUNT_HIGHWATER:实例启动以来使用的最大CPU内核数量
    CPU_SOCKET_COUNT_HIGHWATER:实例启动以来最大的插槽数量


    8、v$lock
    说明:通过访问数据库会话设置对象锁的有关信息。
    TYPE:
    TM - DML enqueue
    TX - Transaction enqueue
    UL - User supplied
    --我们主要关注TX和TM两种类型的锁
    --UL锁用户自己定义的,一般很少会定义,基本不用关注
    --其它均为系统锁,会很快自动释放,不用关注
    ID2:
    Lock identifier #2 (depends on type)
    ---当lock type 为TM时,id1为DML-locked object的object_id
    ---当lock type 为TX时,id1为usn+slot,而id2为seq。
    --当lock type为其它时,不用关注
    LMODE(持有锁):
    Lock mode in which the session holds the lock:
    0 - none
    1 - null (NULL)
    2 - row-S (SS)
    3 - row-X (SX)
    4 - share (S)
    5 - S/Row-X (SSX)
    6 - exclusive (X)
    --大于0时表示当前会话以某种模式占有该锁,等于0时表示当前会话正在等待该锁资源,即表示该会话被阻塞。
    --往往在发生TX锁时,伴随着TM锁,比如一个sid=9会话拥有一个TM锁,一般会拥有一个或几个TX锁,但他们的id1和id2是不同的,请注意
    REQUEST(请求锁):
    Lock mode in which the process requests the lock:
    0 - none
    1 - null (NULL)
    2 - row-S (SS)
    3 - row-X (SX)
    4 - share (S)
    5 - S/Row-X (SSX)
    6 - exclusive (X)
    --大于0时,表示当前会话被阻塞,其它会话占有改锁的模式
    BLOCK(阻塞):
    The lock is blocking another lock
    0, 'Not Blocking', /* Not blocking any other processes */
    1, 'Blocking', /* This lock blocks other processes */
    2, 'Global', /* This lock is global, so we can't tell */
    --该锁是否阻塞了另外一个锁
    例子:
    Select * from v$lock where ty='TX' and lmode=6; DML行级锁,TX锁,锁代号是6
    --block阻塞,request 请求锁,lmode持有锁



    v$locked_object
    只包含DML的锁信息,包括回滚段和会话信息。
    Xidusn,xidslot,xidsqn:表示回滚段信息。和
    v$transaction相关联。
    Object_id:表示被锁对象标识。
    Session_id:表示持有锁的会话信息。
    Locked_mode:表示会话等待的锁模式的信
    息,和v$lock中的lmode一致。


    9、v$log
    说明:从控制文件中提取有关重做日志组的信息,查看联机重做日志。
    V$LOG中STATUS的状态值
    UNUSED: 从未对该联机日志写入任何内容,一般为新增加联机日志文件或是使用resetlog后的状态
    CURRENT:当前重做日志文件,表示该重做日志文件为活动状态,能够被打开和关闭
    ACTIVE:处于活动状态,不属于当前日志,崩溃恢复需要该状态,可用于块恢复,可能归档,也可能未归档
    CLEARING:表示在执行alter database clear logfile命令后正将该日志重建为一个空日志,重建后状态变为unused
    CLEARING_CURRENT:当前日志处于关闭线程的清除状态。如日志某些故障或写入新日志标头时发生I/O错误
    INACTIVE:实例恢复不在需要联机重做文件日志组,可能归档也可能未归档


    10、v$logfile
    说明:有关实例重做日志组文件名及其位置的信息。
    V$LOGFILE中STATUS的状态值
    INVALID:表明该文件不可访问
    STALE:表明文件内容不完全
    DELETED: 表明该文件不再使用
    NULL:表明文件正在使用

    v$rman_configuration
    说明:查看RMAN经用户修改为非默认值的配置,个性化配置。

    v$mystat
    说明:可以查询自己的会话。

    11、v$object_usage
    说明:包含alter index...monitoring uasge函数生产的索引使用信息。

    V$OPEN_CURSOR
    说明:当前Session缓存的游标,而不是曾经打开的游标

    12、v$parameter
    说明:查看初始化参数文件中所有项的值。
    例select *from v$parameter a
    where a.NAME in ('parallel_max_servers',
    'sessions',
    'processes',
    'pga_aggregate_target',
    'parallel_threads_per_cpu',
    'cpu_count',
    'sga_target',
    'pga_aggregate_target',
    'memory_target',
    'memory_max_target') order by a.NAME;

    13、v$process
    说明:当前进程的信息。
    select count(*) from v$process; --查看当前实例的进程数目,实例可容纳的最大进程数看
    select name,value from v$parameter where name in ('processes');

    13、V$RMAN_COMPRESSION_ALGORITHM
    说明:查询RMAN压缩算法及产生于哪个版本、弃用于哪个版本等情况
    select ALGORITHM_NAME, INITIAL_RELEASE, TERMINAL_RELEASE, ALGORITHM_DESCRIPTION,
    IS_VALID, REQUIRES_ACO, IS_DEFAULT from V$RMAN_COMPRESSION_ALGORITHM;

    14、v$rollname
    说明:回滚段信息。

    15、v$rollstat
    说明:联机回滚段统计信息。

    16、v$rowcache
    说明:内存中数据字典活动/性能信息。

    17、v$sesstat
    说明:在v$session中报告当前会话的统计信息。查询用户进程等待重做日志缓存的次数。

    V$SGAINFO
    查看内存结构中各个缓冲区的大小

    v$sql
    字段说明:
    SQL_TEXT:SQL文本的前1000个字符
    SHARABLE_MEM:占用的共享内存大小(单位:byte)
    PERSISTENT_MEM:生命期内的固定内存大小(单位:byte)
    RUNTIME_MEM:执行期内的固定内存大小
    SORTS:完成的排序数
    LOADED_VERSIONS:显示上下文堆是否载入,1是0否
    OPEN_VERSIONS:显示子游标是否被锁,1是0否
    USERS_OPENING:执行语句的用户数
    FETCHES:SQL语句的fetch数。
    USERS_EXECUTING:执行语句的用户数
    LOADS:对象被载入过的次数
    FIRST_LOAD_TIME:初次载入时间
    INVALIDATIONS:无效的次数
    PARSE_CALLS:解析调用次数
    DISK_READS:读磁盘次数
    BUFFER_GETS:读缓存区次数
    ROWS_PROCESSED:解析SQL语句返回的总列数
    COMMAND_TYPE:命令类型代号
    OPTIMIZER_MODE:SQL语句的优化器模型
    OPTIMIZER_COST:优化器给出的本次查询成本
    PARSING_USER_ID:第一个解析的用户ID
    PARSING_SCHEMA_ID:第一个解析的计划ID
    KEPT_VERSIONS:指出是否当前子游标被使用DBMS_SHARED_POOL包标记为常驻内存
    ADDRESS:当前游标父句柄地址
    TYPE_CHK_HEAP:当前堆类型检查说明
    HASH_VALUE:缓存库中父语句的Hash值
    PLAN_HASH_VALUE:数值表示的执行计划。
    CHILD_NUMBER:子游标数量
    MODULE:在第一次解析这条语句是通过调用DBMS_APPLICATION_INFO.SET_MODULE设置的模块名称。
    ACTION:在第一次解析这条语句是通过调用DBMS_APPLICATION_INFO.SET_ACTION设置的动作名称。
    SERIALIZABLE_ABORTS:事务未能序列化次数
    OUTLINE_CATEGORY:如果outline在解释cursor期间被应用,那么本列将显示出outline各类,否则本列为空
    OUTLINE_SID:outline session标识
    CHILD_ADDRESS:子游标地址
    SQLTYPE:指出当前语句使用的SQL语言版本
    REMOTE:指出是否游标是一个远程映象(Y/N)
    OBJECT_STATUS:对象状态(VALID or INVALID)
    IS_OBSOLETE:当子游标的数量太多的时候,指出游标是否被废弃(Y/N)

    select EXECUTIONS,
    ELAPSED_TIME,
    SQL_TEXT,
    SQL_FULLTEXT,
    CPU_TIME,
    USER_IO_WAIT_TIME,
    CONCURRENCY_WAIT_TIME,
    ROWS_PROCESSED,
    OPTIMIZER_MODE,
    OPTIMIZER_COST,
    LAST_ACTIVE_TIME,
    FIRST_LOAD_TIME,LAST_LOAD_TIME
    from v$sql a
    where a.PARSING_SCHEMA_NAME = 'DRM_ZW_JDBC'
    and to_char(a.LAST_ACTIVE_TIME, 'yyyy-mm-dd hh24:mi:ss') >= '2016-01-14 17:45:00';

    18、v$sqlarea
    说明:共享池中使用当前光标的统计信息。光标是一块内存区域,由Oracle处理sql语句时打开。记录SQL、跟踪SQL。
    可以跟踪sql语句的执行过程,如果想跟踪某个时间点前后的语句,可以通过first_load_time时间进行控制。

    USER_IO_WAIT_TIME //用户IO等待时间
    ROWS_PROCESSED SQL //解析sql返回的总行数
    OPTIMIZER_MODE //优化器模式
    OPTIMIZER_COST //优化器对于sql给出的成本
    EXECUTIONS:自它被载入缓存库后的执行次数
    CPU_TIME:解析/执行/取得等CPU使用时间(单位,微秒)
    ELAPSED_TIME:解析/执行/取得等消耗时间(单位,微秒)
    CONCURRENCY_WAIT_TIME:并发等待时间


    v$sqltext
    说明:记录SQL,跟踪SQL。
    select * from v$sqltext a where a.address='000007FFFC60D680' order by piece

    19、v$statname
    说明:在v$sesstat中报告的各统计的含义。

    20、v$sysstat
    说明:基于当前操作会话进行的系统统计。

    21、v$sgastat
    说明:查看各种pool

    v$transaction
    查看会话

    v$version
    说明:查看版本号

    v$waitstat
    说明:根据数据缓冲区中各种block的类型(x$bh.class)而分类统计的等待状况。当有一个以上的会话同时访问相同的信息时,可能出项等待。

    X$KTUXE
    展示回滚段头的事务表信息,显示死亡事务的恢复进度


    --动态性能统计信息视图
    累计统计信息 等待事件
    系统:V$SYSSTAT、V$SYSTEM_EVENT
    会话:V$SESSTAT、V$SESSION_EVENT
    服务:V$SERVICE_STATS、V$SERVICE_EVENT


    --故障排除和优化视图
    实例/数据库
    V$DATABASE
    V$INSTANCE
    V$PARAMETER
    V$SPPARAMETER
    V$SYSTEM_PARAMETER
    V$PROCESS
    V$BGPROCESS
    V$PX_PROCESS_SYSSTAT
    V$SYSTEM_EVENT

    磁盘
    V$DATAFILE
    V$FILESTAT
    V$LOG
    V$LOG_HISTORY
    V$DBFILE
    V$TEMPFILE
    V$TEMPSEG_USAGE
    V$SEGMENT_STATISTICS

    内存
    V$BUFFER_POOL_STATISTICS
    V$LIBRARYCACHE
    V$SGAINFO
    V$PGASTAT

    争用
    V$LOCK
    V$UNDOSTAT
    V$WAITSTAT
    V$LATCH




    特殊的视图:
    select * from dictionary; --查询数据字典,显示所有数据字典的数据表、视图、同义词
    select * from table_privileges; --显示数据对象的所有者、授权者和权限
    select * from ind; --User_indexes的同义词

    index_stats存储来自最后一个analyze index...validate structure语句的信息
    index_histogram存储来自最后的analyze index...validate structure语句的信息

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,560
精华内容 3,024
关键字:

oracle数据字典