Oracle常用数据字典表(系统表或系统视图)及查询SQL2014年12月15日⁄数据库⁄共4187字⁄暂无评论⁄阅读861 次文章目录∙数据字典分类∙dba_开头∙user_开头∙v$开头∙all_开头∙session_开头∙index_开头∙伪表∙数据字典常用SQL查询数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的。
比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息的视图等。
数据字典系统表,保存在system表空间中。
查询所有数据字典可用语句“select * from dictionary;”。
数据字典分类数据字典主要可分为四部分:1)内部RDBMS表:x$*,用于跟踪内部数据库信息,维持DB的正常运行。
是加密命名的,不允许sysdba以外的用户直接访问,显示授权不被允许。
2)数据字典表:*$,如tab$,obj$,ts$等,用来存储表、索引、约束以及其他数据库结构的信息。
3)动态性能视图:gv$*,v$*,记录了DB运行时信息和统计数据,大部分动态性能视图被实时更新以反映DB当前状态。
4)数据字典视图:user_*、all_*、dba_*,在非Sys用户下,我们访问的都是同义词,而不是V$视图或GV视图。
数据库启动时,动态创建x$,在X$基础上创建GV$,在GV$基础上创建V$X$表-->GV$(视图)--->V$(视图)。
数据字典视图可分为静态数据字典视图和动态数据字典视图。
静态数据字典是指在用户访问数据字典时内容不会发生改变。
这类数据字典主要是由表和视图组成,应该注意的是,数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。
静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*(该用户方案对象的信息)、all_*(该用户可以访问的所有对象的信息)、dba_*(全部数据库对象的信息)。
动态数据字典是Oracle包含的一些潜在的由系统管理员如SYS维护的表和视图,由于当数据库运行的时候它们会不断进行更新,所以称它们为动态数据字典。
这些视图提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。
Oracle中这些动态性能视图都是以v$开头的视图,比如v$access。
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归档日志分析的DMLDDL结果信息v$logmnr_dictionary日志分析的字典文件信息v$logmnr_logs日志分析的日志列表信息v$tablespace表空间信息v$tempfile临时文件信息v$filestat数据文件的I/O统计信息v$undostatUndo数据信息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系统伪列表信息数据字典常用SQL查询1)查看表空间的名称及大小select t.tablespace_name,round(sum(d.bytes/(1024*1024)),0) tbs_sizefrom dba_tablespaces t,dba_data_files dwhere t.tablespace_name = d.tablespace_namegroup by t.tablespace_name;若需要查看指定表空间的大小,则可以直接添加where条件指定,否则结果集是所有表空间。
2)查看表空间物理文件的名称及大小select tablespace_name,file_id,file_name,round(bytes/(1024*1024),0) total_spacefrom dba_data_filesorder by tablespace_name;3)查看表空间剩余空间大小select tablespace_name,round(sum(bytes) / 1024 / 1024, 2) AS free_space, count(*) AS extends,sum(blocks) AS blocksfrom dba_free_spacegroup by tablespace_name;4)查看表空间使用率SELECT total.tablespace_name,Round(total.total, 2) AS Total_MB, Round(total.total - free.free, 2) AS Used_MB,Round(( 1 - free.free / total.total ) * 100, 2)|| '%' AS Used_PCTFROM (SELECT tablespace_name,sum(bytes) / 1024 / 1024 AS freeFROM dba_free_spaceGROUP BY tablespace_name) free,(SELECT tablespace_name,sum(bytes) / 1024 / 1024 AS totalFROM dba_data_filesGROUP BY tablespace_name) totalWHERE free.tablespace_name = total.tablespace_name; 5)查看控制文件select name from v$controlfile;6)查看日志文件select member from v$logfile;7)查看消耗资源最多的SQLSELECT hash_value,executions,buffer_gets,disk_reads,parse_callsFROM V$SQLAREAWHERE buffer_gets > 10000000OR disk_reads > 1000000ORDER BY buffer_gets + 100 * disk_reads DESC; 8)捕捉运行很久的SQLselect username,sid,opname,round(sofar*100 / totalwork,0) || '%' as progress, time_remaining,sql_textfrom v$session_longops,v$sqlwhere time_remaining <> 0and sql_address = addressand sql_hash_value = hash_value;9)查看回滚段名称及大小select segment_name,tablespace_name,r.status,(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,max_extents,v.curext CurExtentfrom dba_rollback_segs r,v$rollstat vwhere r.segment_id = n(+)order by segment_name;10)查看还没提交的事务select * from v$locked_object;select * from v$transaction;» 声明:本站文章源于个人经验总结或书籍、互联网转载,内容仅用于个人学习,请勿转载,否则后果自负!» 本文地址:/post/oracle-dictionary-table-sql.html。