数据库内置视图以及常见的DBMS开发包

时间:2020-12-28 05:31:48

如果想了解oracle运行的一些数据信息,oracle有一些视图可以供我们查询,通过这些内置的视图我们可以了解数据库

运行的一些信息,比如数据库文件存在什么地方、有哪些表空间、表空间的利用率、oracle的一些参数比如block的大小

以及oracle执行事务的一些信息以及索引等。

oralcle 内置视图字典

oracle  提供的plsql开发包  oracle自带

===============================================================

user视图 记录用户对象的信息

all视图   记录用户对象的信息及被授权访问的对象信息

dba视图 记录数据库实例的所有对象的信息

v$视图   记录与数据库活动相关的性能统计动态信息

gv$视图 记录分布式环境下所有实例的动态信息

基础知识了解:

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           显示块竞争统计数据

===============================================================

基础部分

===============================================================

SELECT * FROM user_tables --查询表 --all_tables dba_tables

SELECT * FROM user_tab_columns --查询表的字段 --all_tab_columns dba_tab_columns

SELECT * FROM user_col_comments --查询表字段的注释 --dba_tab_comments all_tab_comments

SELECT * FROM user_tab_comments --查询表的注释 --dba_tab_comments,all_tab_comments

SELECT * FROM user_constraints --查找表的主键

SELECT * FROM user_cons_columns --查找表的主键所在的列

SELECT * FROM user_indexes --查找表的索引

SELECT * FROM user_ind_columns --查找表索引所在的列名称

查看表空间的名称及大小

SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size 
FROM dba_tablespaces t, dba_data_files d 
WHERE t.tablespace_name = d.tablespace_name 
GROUP BY t.tablespace_name;

查看表空间物理文件的名称及大小

SELECT tablespace_name, 
file_id, 
file_name, 
round(bytes / (1024 * 1024), 0) total_space 
FROM dba_data_files 
ORDER BY tablespace_name;

查看回滚段名称及大小

SELECT segment_name, 
tablespace_name, 
r.status, 
(initial_extent / 1024) initialextent, 
(next_extent / 1024) nextextent, 
max_extents, 
v.curext curextent 
FROM dba_rollback_segs r, v$rollstat v 
WHERE r.segment_id = v.usn(+) 
ORDER BY segment_name;

查看控制文件

SELECT NAME FROM v$controlfile;

查看日志文件

SELECT MEMBER FROM v$logfile;

查看表空间的使用情况

SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_name 
FROM dba_free_space 
GROUP BY tablespace_name; 
SELECT a.tablespace_name, 
a.bytes total, 
b.bytes used, 
c.bytes free, 
(b.bytes * 100) / a.bytes "% USED ", 
(c.bytes * 100) / a.bytes "% FREE " 
FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c 
WHERE a.tablespace_name = b.tablespace_name 
AND a.tablespace_name = c.tablespace_name;

查看数据库库对象

SELECT owner, object_type, status, COUNT(*) count# 
FROM all_objects 
GROUP BY owner, object_type, status;

查看数据库的版本

SELECT version 
FROM product_component_version 
WHERE substr(product, 1, 6) = 'Oracle';

查看数据库的创建日期和归档方式

SELECT created, log_mode, log_mode FROM v$database;

查询最慢的sql

select * from (
select parsing_user_id,executions,sorts
command_type,disk_reads,sql_text from v$sqlarea order by disk_reads desc
)where rownum<10

查询对应session

select SE.SID,SE.SERIAL#,PR.SPID,
SE.USERNAME,SE.STATUS,SE.TERMINAL,
SE.PROGRAM,SE.MODULE,
SE.SQL_ADDRESS,ST.EVENT,
ST.P1TEXT,SI.PHYSICAL_READS,SI.BLOCK_CHANGES from v$session se,v$session_wait st,
v$sess_io si,v$process pr
where st.SID=se.SID and st.SID=si.SID
AND SE.PADDR=PR.ADDR
AND SE.SID>6
AND ST.WAIT_TIME=0
AND ST.EVENT NOT LIKE '%SQL%'
ORDER BY PHYSICAL_READS DESC;
SELECT sql_address FROM V$SESSION SS,V$SQLTEXT TT
WHERE SS.SQL_HASH_VALUE=TT.HASH_VALUE AND SID=439;

select a.CPU_TIME,--CPU时间 百万分之一(微秒)
       a.OPTIMIZER_MODE,--优化方式
       a.EXECUTIONS,--执行次数
       a.DISK_READS,--读盘次数
       a.SHARABLE_MEM,--占用shared pool的内存多少
       a.BUFFER_GETS,--读取缓冲区的次数
       a.COMMAND_TYPE,--命令类型(3:select,2:insert;6:update;7delete;47:pl/sql程序单元)
       a.SQL_TEXT,--Sql语句
       a.SHARABLE_MEM,
       a.PERSISTENT_MEM,
       a.RUNTIME_MEM,
       a.PARSE_CALLS,
       a.DISK_READS,
       a.DIRECT_WRITES,
       a.CONCURRENCY_WAIT_TIME,
       a.USER_IO_WAIT_TIME
  from SYS.V_$SQLAREA a
 WHERE PARSING_SCHEMA_NAME = 'CHEA_FILL'--表空间
 order by a.CPU_TIME desc

=========================================================