oracle 数据库巡检 sql

ASM

sql 复制代码
SELECT 
    name ,
    round(total_mb/1024,2)||'GB'   AS total,
    round(FREE_MB/1024,2)||'GB'   AS free,
    to_char(round((total_mb -FREE_MB) /1024,2), '990.99') ||'GB'   AS used,
    to_char(round((total_mb -FREE_MB)/total_mb *100 ,2), '990.99') ||'%'   AS PERCENT
  FROM    v$asm_diskgroup_stat

DB

sql 复制代码
SELECT 
name AS dbname, 
'oracle' AS dbtype,
version AS dbversion,
log_mode AS logmode, 
database_role AS dbrole,
(SELECT  LISTAGG(DB_UNIQUE_NAME, ', ') WITHIN GROUP (ORDER BY dest_id) AS dbuname FROM v$archive_dest WHERE  UPPER(db_unique_name) NOT IN ( SELECT UPPER(db_unique_name) FROM v$database) AND db_unique_name !='NONE') AS dbuname ,
CASE  WHEN  (SELECT  count(*)  FROM gv$instance) >1 THEN 1 ELSE 0 END AS israc ,
(SELECT  count(*)  FROM gv$instance) AS racnum,
TO_CHAR(startup_time, 'YYYY-MM-DD HH24:MI:SS')  AS uptime
FROM v$database, v$instance

实例

sql 复制代码
SELECT  inst_id AS instid ,
instance_name AS instname,
host_name AS hostname,
TO_CHAR(startup_time, 'YYYY-MM-DD HH24:MI:SS') AS uptime,
status AS inststatus,
database_status AS  dbstatus  
FROM gv$instance
order by inst_id

参数

sql 复制代码
SELECT name AS pname, display_value AS pvalue, description  AS description
FROM v$parameter 
WHERE name IN ('memory_target', 
'sga_target', 'pga_aggregate_target','processes', 'sessions', 'db_block_size',
'log_buffer', 'shared_pool_size', 'buffer_cache_size','java_pool_size', 
'large_pool_size','db_recovery_file_dest','db_recovery_file_dest_size')

用户 及对象

sql 复制代码
WITH  z AS (
SELECT 
    owner ,
    NVL("TABLE", 0) AS tablenum,
    NVL("VIEW", 0) AS viewnum,
    NVL("FUNCTION", 0) AS functionnum,
    NVL("INDEX", 0) AS indexnum,
    NVL("PROCEDURE", 0) AS procedurenum,
    NVL("TRIGGER", 0) AS triggernum,
    NVL("SYNONYM", 0) AS synonymnum,
    NVL("SEQUENCE", 0) AS sequencenum,
    NVL("PACKAGE", 0) AS packagenum
FROM ( SELECT   owner,   object_type,   COUNT(*) AS cnt
    FROM all_objects 
    WHERE owner IN (SELECT username FROM dba_users WHERE account_status = 'OPEN')   AND owner NOT IN ('SYSTEM', 'SYS')
    GROUP BY owner, object_type ) t
PIVOT (SUM(cnt)   
    FOR object_type IN (
        'TABLE' AS "TABLE", 
        'VIEW' AS "VIEW", 
        'FUNCTION' AS "FUNCTION", 
        'INDEX' AS "INDEX", 
        'PROCEDURE' AS "PROCEDURE", 
        'TRIGGER' AS "TRIGGER", 
        'SYNONYM' AS "SYNONYM", 
        'SEQUENCE' AS "SEQUENCE", 
        'PACKAGE' AS "PACKAGE" )) p)
SELECT 
a.username,
a.account_status AS userstatus, 
TO_CHAR(a.created, 'YYYY-MM-DD HH24:MI:SS') AS createtime, 
TO_CHAR(a.lock_date, 'YYYY-MM-DD HH24:MI:SS') AS  locktime,
TO_CHAR(a.expiry_date, 'YYYY-MM-DD HH24:MI:SS') AS  expirytime,
TO_CHAR(a.PASSWORD_CHANGE_DATE, 'YYYY-MM-DD HH24:MI:SS') AS changepstime,
TO_CHAR(a.LAST_LOGIN, 'YYYY-MM-DD HH24:MI:SS') AS lastlogintime,
a.default_tablespace AS dtablespace,a.temporary_tablespace AS ttablespace,
z.tablenum,z.viewnum,z.functionnum,z.indexnum,z.procedurenum,z.triggernum,z.synonymnum,z.sequencenum,z.packagenum
FROM dba_users  a LEFT JOIN z ON a.username=z.owner 
ORDER BY a.account_status DESC ,  a.username

表空间

sql 复制代码
SELECT
    dt.tablespace_name as tablespace, 
    to_char( round(dt.block_size * dtum.used_space /1024/1024/1024,2), '990.99')||'GB' as used,
    round(dt.block_size * dtum.tablespace_size /1024/1024/1024,2)||'GB'  as total,
    round(dt.block_size * (dtum.tablespace_size - dtum.used_space) /1024/1024/1024,2)||'GB'  as free,
     to_char(round(dtum.used_space/dtum.tablespace_size *100 ,2), '990.99') ||'%'  percent
FROM  dba_tablespace_usage_metrics dtum, dba_tablespaces dt
WHERE dtum.tablespace_name = dt.tablespace_name
and dt.contents != 'TEMPORARY'
union
SELECT
    dt.tablespace_name as tablespace, 
    to_char(round((dt.tablespace_size  - dt.free_space) /1024/1024/1024,2), '990.99')||'GB'  as used,
    round(dt.tablespace_size /1024/1024/1024,2)||'GB'  as total,
    round(dt.free_space /1024/1024/1024,2)||'GB'  as free,
  to_char(round((dt.tablespace_size - dt.free_space) / dt.tablespace_size *100 ,2), '990.99') ||'%'    AS percent
FROM  dba_temp_free_space dt
order by percent DESC  

分区表

sql 复制代码
WITH z AS (
SELECT k.owner,k.name, LISTAGG(k.column_name, ', ') WITHIN GROUP (ORDER BY k.column_position) AS partition_key   
FROM  dba_part_key_columns k  WHERE k.owner  NOT IN ('AUDSYS', 'MDSYS', 'SYS', 'SYSTEM')
AND k.object_type = 'TABLE' GROUP  BY k.owner,k.name  )
SELECT   t.owner AS username,
    t.table_name AS tablename,
    z.partition_key AS partkey,
    t.partitioning_type AS parttype,
    t.INTERVAL AS interval,
    t.SUBPARTITIONING_TYPE AS subparttype,
    p.partition_name AS partname,
    p.high_value AS highvalue,
    p.tablespace_name AS tablespace,
    ROUND(s.bytes / 1024 / 1024, 2)||'MB' AS "size",
    p.num_rows AS numrows,
   TO_CHAR( p.last_analyzed , 'YYYY-MM-DD HH24:MI:SS')    AS analyzed
    FROM dba_part_tables t   LEFT JOIN  dba_tab_partitions p ON t.owner=p.table_owner AND t.table_name =p.table_name
    LEFT JOIN z ON t.owner=z.owner AND t.table_name =z.name
    LEFT JOIN  dba_segments s ON t.owner = s.owner AND t.table_name = s.segment_name AND p.partition_name = s.partition_name
    WHERE t.owner   NOT IN ('AUDSYS', 'MDSYS', 'SYS', 'SYSTEM')
    order by t.owner,t.table_name,p.partition_name

分区索引

sql 复制代码
SELECT 
    pi.owner AS username,
    pi.table_name AS tablename,
    pi.index_name AS indexname,
    pi.locality AS locality, 
    pi.partitioning_type AS parttype,  
    ip.partition_name AS partname,
    ip.status AS status, 
    ip.tablespace_name AS tablespace, 
    ip.high_value  AS highvalue,
    TO_CHAR(ip.last_analyzed, 'YYYY-MM-DD HH24:MI:SS')   AS analyzed
FROM 
    dba_part_indexes pi
JOIN 
    dba_ind_partitions ip 
    ON pi.owner = ip.index_owner 
    AND pi.index_name = ip.index_name
WHERE 
    pi.owner NOT IN ('AUDSYS', 'MDSYS', 'SYS', 'SYSTEM')
ORDER BY 
    pi.owner, pi.table_name, pi.index_name,  ip.partition_name

redolog

sql 复制代码
SELECT
    l.group# AS "group",
    l.member AS filepath, 
    lg.thread# AS thread,
    lg.sequence# AS "sequence",
    lg.bytes/1024/1024/1024||'GB' AS "size",
    lg.status AS status,  
    lg.archived AS archived,  
    TO_CHAR(lg.first_time, 'YYYY-MM-DD HH24:MI:SS')  AS firsttime
FROM 
    v$logfile l
JOIN 
    v$log lg ON l.group# = lg.group#
ORDER BY 
    lg.group#, l.member

慢sql

sql 复制代码
WITH slow_sql AS (
    SELECT 
        dhs.dbid,
        dhs.sql_id AS sqlid, 
        SUM(nvl(dhs.executions_delta, 0)) AS execcount,
        ROUND(SUM(nvl(dhs.elapsed_time_delta, 0))/1000000, 3) AS totaltime,
        ROUND(CASE WHEN SUM(nvl(dhs.executions_delta, 0)) = 0 THEN 0 ELSE SUM(nvl(dhs.elapsed_time_delta, 0))/1000000/SUM(nvl(dhs.executions_delta, 0))  END, 3) AS avgtime,
        ROUND(SUM(nvl(dhs.cpu_time_delta, 0))/1000000, 3) AS cputime,
        ROUND(SUM(nvl(dhs.iowait_delta, 0))/1000000, 3) AS iowait,
        SUM(nvl(dhs.disk_reads_delta, 0)) AS reads, 
        dhs.parsing_schema_name AS username,
        COUNT(DISTINCT dhs.instance_number) AS instnum
    FROM dba_hist_sqlstat dhs
    JOIN dba_hist_snapshot dhsnap 
        ON dhs.snap_id = dhsnap.snap_id 
        AND dhs.dbid = dhsnap.dbid  
        AND dhs.instance_number = dhsnap.instance_number  
    WHERE 
       dhsnap.end_interval_time >= SYSDATE - 1  
       AND dhs.parsing_schema_name NOT IN ('SYS', 'SYSTEM', 'AUDSYS', 'MDSYS')  
       AND nvl(dhs.elapsed_time_delta, 0) > 0  
    GROUP BY dhs.dbid, dhs.sql_id, dhs.parsing_schema_name
) 
SELECT 
    a.sqlid, 
    a.username,
    a.instnum,
    a.execcount,
    a.totaltime,
    a.avgtime,
    a.cputime,
    a.iowait,
    a.reads,
    t.sql_text AS sqltext
FROM slow_sql a
JOIN dba_hist_sqltext t 
    ON a.dbid = t.dbid 
    AND a.sqlid = t.sql_id
WHERE a.execcount>1 and (a.totaltime > 60 OR a.avgtime > 5 )
ORDER BY a.totaltime DESC, a.avgtime DESC
sql 复制代码
SELECT 
    owner    ,
    db_link  AS dblink ,
    username  ,
    host,
    TO_CHAR(created,'YYYY-MM-DD HH24:MI:SS') AS created ,
    valid  
FROM dba_db_links
相关推荐
麦麦鸡腿堡2 小时前
MySQL数据库操作指令
数据库·mysql
陈天伟教授8 小时前
人工智能训练师认证教程(2)Python os入门教程
前端·数据库·python
Elastic 中国社区官方博客9 小时前
Elasticsearch:在分析过程中对数字进行标准化
大数据·数据库·elasticsearch·搜索引擎·全文检索
聪明努力的积极向上9 小时前
【MYSQL】字符串拼接和参数化sql语句区别
数据库·sql·mysql
代码or搬砖9 小时前
RBAC(权限认证)小例子
java·数据库·spring boot
神仙别闹9 小时前
基于QT(C++)实现学本科教务系统(URP系统)
数据库·c++·qt
2301_768350239 小时前
MySQL为什么选择InnoDB作为存储引擎
java·数据库·mysql
上海蓝色星球9 小时前
迈向智慧电网新纪元:上海蓝色星球数字孪生变电主子站系统
运维·数据库
是大芒果9 小时前
数据库表设计
数据库