首页

关于ORACLE中常用查询系统表视图示例语句及常用全局分析SQL等(执行计划,锁表、全表扫描、终端会话类型、索引等)

标签:oracle,锁表,全表扫描,终端会话v$session类型,索引,v$locked_object,all_objects,v$sql_plan,sql优化,执行计划,性能优化     发布时间:2018-03-11   

一、前言

1.ORACLE系统表视图表

v$controlfile:控制文件的信息;@b@v$datafile:数据文件的信息;@b@v$log:日志文件的信息;@b@v$process:处理器的信息;@b@v$session:会话信息;@b@v$transaction:事务信息;@b@v$resource:资源信息;@b@v$sga:系统全局区的信息。

2.ORACLE系统对象表

--DBA对象@b@select  *  from  DBA_OBJECTS@b@--所有对象@b@select  *  from  ALL_OBJECTS@b@--用户所属对象@b@select  *  from  USER_OBJECTS@b@--所有对象包括表、索引、序列等,具体如下@b@CONSUMER GROUP@b@INDEX PARTITION@b@SEQUENCE@b@SCHEDULE@b@TABLE PARTITION@b@RULE@b@JAVA DATA@b@PROCEDURE@b@OPERATOR@b@WINDOW@b@PACKAGE@b@PACKAGE BODY@b@LIBRARY@b@RULE SET@b@PROGRAM@b@LOB@b@TYPE BODY@b@CONTEXT@b@JAVA RESOURCE@b@XML SCHEMA@b@TRIGGER@b@JOB CLASS@b@DIRECTORY@b@MATERIALIZED VIEW@b@TABLE@b@INDEX@b@SYNONYM@b@VIEW@b@FUNCTION@b@WINDOW GROUP@b@JAVA CLASS@b@INDEXTYPE@b@CLUSTER@b@TYPE@b@EVALUATION CONTEXT@b@JOB

3.ORACLE系统表信息(DBA_TABLES-dba表、ALL_TABLES所有表、USER_TABLES用户表)

select  *  from  DBA_TABLES@b@select  *  from  ALL_TABLES@b@select  *  from  USER_TABLES

4.ORACLE系统字段信息

select  *  from  DBA_TAB_COLUMNS@b@select  *  from  ALL_TAB_COLUMNS@b@select  *  from  USER_TAB_COLUMNS

5、ORACLE其他更多

--完整性约束 @b@DBA_CONSTRAINTS、ALL_CONSTRAINTS和USER_CONSTRAINST显示有关约束的一般信息。 @b@DBA_CONS_COLUMNS、ALL_CONS_COLUMNS和USER_CONS_COLUMNS显示有关列的相关约束的一般信息。 @b@@b@--视图 @b@DBA_VIEWS、ALL_VIEWS和USER_VIEWS。 @b@注意:DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS显示了模式对象的信息,包括视图。 @b@@b@--序列@b@DBA_SEQUENCES、ALL_SEQUENCES和USER_SEQUENCES。 @b@注意:DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS显示了模式对象的信息,包括序列。 @b@@b@--同义词 @b@DBA_SYNONYMS、ALL_SYNONYMS和USER_SYNONYMS。 @b@注意:DBA_OBJECTS、ALL_OBJECTS和USER_OBJECTS显示了模式对象的信息,包括同义词。 @b@@b@--索引 @b@DBA_INDEXS、ALL_INDEXS、USER_INDEXS、DBA_IND_COLUMNS、ALL_IND_COLUMNS和USER_IND_COLUMNS。 @b@@b@--用户 @b@DBA_USERS。 @b@@b@--角色 @b@DBA_ROLES。 @b@@b@--表空间定额 @b@DBA_TS_QUOTAS。 @b@@b@--配置表 @b@DBA_PROFILES。 @b@@b@--表空间 @b@DBA_TABLESPACES。 @b@@b@--数据文件 @b@DBA_DATA_FILES。 @b@@b@--段 @b@DBA_SEGMENTS、USER_SEGMENT。 @b@@b@--回滚段@b@DBA_ROLLBACK_SEGS、V$ROLLNAME、V$ROLLSTAT。

二、示例说明

1.查询关联索引表字段表sql语句

select i.index_name,@b@       i.index_type,@b@       i.table_owner,@b@       i.table_name,@b@       i.uniqueness,@b@       i.tablespace_name,@b@       c.column_name,@b@       c.column_position,@b@       c.column_length@b@from user_indexes i, user_ind_columns c@b@where i.index_name = c.index_name;

2.查出锁定表的session的sid, serial#,os_user_name, machine name, terminal和执行的语句

 SELECT l.session_id sid,@b@       s.serial#,@b@       l.locked_mode,@b@       l.oracle_username,@b@       s.user#,@b@       l.os_user_name,@b@       s.machine,@b@       s.terminal,@b@       a.sql_text,@b@       a.action@b@  FROM v$sqlarea       a,@b@       v$session       s,@b@       v$locked_object l@b@ WHERE l.session_id = s.sid@b@   AND s.prev_sql_addr = a.address@b@ ORDER BY sid,@b@          s.serial#;

3.查询全表扫描的SQL语句(增加索引优化-汇总FULL全表执行计划F5结果)

select a.SQL_TEXT,--SQL语句前1000字符@b@       a.SORTS,--所有子游标排序的次数@b@       a.EXECUTIONS,--执行次数@b@       a.PX_SERVERS_EXECUTIONS,--并行执行次数@b@       a.FETCHES,--SQL语句获取次数@b@       a.ROWS_PROCESSED,--SQL语句处理的总行数@b@       a.LAST_ACTIVE_CHILD_ADDRESS,--最后一次活动时间@b@       a.ELAPSED_TIME,--执行时间@b@       a.CPU_TIME,--语句解析,执行,获取,所花费的时间 @b@       a.VERSION_COUNT,--此父游标下子游标的数量@b@       a.SHARABLE_MEM,--所有子游标占用的共享内存@b@       a.PERSISTENT_MEM,--所有子游标在打开的生命周期内固定内存总大小@b@       v.TIMESTAMP,@b@       v.OBJECT_OWNER,@b@       v.OBJECT_NAME,@b@       v.FILTER_PREDICATES,@b@       v.PROJECTION,@b@       a.SQL_ID@b@  from v$sql_plan v, v$sqlarea a, v$session s@b@ where v.OPERATION = 'TABLE ACCESS'@b@   and v.OPTIONS = 'FULL'@b@   and v.OBJECT_OWNER = 'XWOOD'@b@   and v.SQL_ID = a.SQL_ID

4.查询会话及SQL语句详情

select  s.*,a.*  from  v$session  s, v$sqlarea  a where  s.SQL_ADDRESS=a.ADDRESS

5.其他监控数据库性能

5.1、当前数据库各个终端连接数@b@@b@SELECT "连接数","终端名称"@b@@b@FROM ( SELECT COUNT(TERMINAL) AS 连接数,@b@@b@TERMINAL AS 终端名称@b@@b@FROM v$sessionGROUP BY TERMINAL@b@@b@)@b@@b@ORDER BY 连接数 DESC;@b@@b@5.2、查询性能最差的SQL@b@@b@SELECTdisk_reads,executions,rows_processed,@b@@b@first_load_time,sql_text@b@@b@FROMsys.v_$sqlarea@b@@b@WHEREdisk_reads >10@b@@b@AND executions < 10@b@@b@ORDER BYfirst_load_time;@b@@b@5.3、找使用CPU多的用户session@b@@b@SELECT a.sid,spid,status,substr(a.program,1,40) prog,@b@@b@a.terminal,osuser,value/60/100 value@b@@b@FROM v$session a,v$process b,v$sesstat c@b@@b@WHERE c.statistic#=12@b@@b@AND c.sid=a.sid@b@@b@AND a.paddr=b.addr@b@@b@ORDER BY VALUE DESC;@b@@b@5.4、当前各用户运行什么SQL语句@b@@b@SELECTosuser, username, sql_text@b@@b@FROMv$session a, v$sqltext b@b@@b@WHEREa.sql_address =b.address@b@@b@ORDER BY address, piece;