Oracle 数据库巡检检查清单
本文档整理了Oracle数据库日常巡检的核心检查项,涵盖数据库状态、性能、空间、安全等多个维度。
一、数据库基础状态检查
1.1 数据库状态
- 检查目的:确认数据库实例运行状态、日志模式、打开模式等关键信息
- 涉及视图 :
gv$database
sql
SELECT inst_id, dbid, name, created, log_mode, open_mode, database_role, platform_name
FROM gv$database
ORDER BY inst_id;
1.2 实例状态
- 检查目的:检查实例名称、主机名、状态、版本、启动时间
- 涉及视图 :
gv$instance
sql
SELECT instance_number, INSTANCE_NAME, host_name, status, version, STARTUP_TIME
FROM gv$instance
ORDER BY 1;
1.3 组件状态
- 检查目的:检查数据库各组件的注册状态和版本信息
- 涉及视图 :
dba_registry
sql
SELECT comp_id, status, version, comp_name
FROM dba_registry
ORDER BY comp_id;
二、内存与资源检查
2.1 SGA(系统全局区)
- 检查目的:检查SGA各组件的内存分配情况
- 涉及视图 :
gv$sgainfo
sql
SELECT inst_id, name, ROUND(bytes/1024/1024) MBytes, resizeable
FROM gv$sgainfo
ORDER BY 3 DESC;
2.2 PGA(程序全局区)
- 检查目的:检查PGA统计信息和使用情况
- 涉及视图 :
gv$pgastat
sql
SELECT inst_id, name, ROUND(value/1024/1024/1024, 2) value_gb, unit
FROM gv$pgastat
ORDER BY 1, 3 DESC;
2.3 Shared Pool
- 检查目的:检查共享池中大于50MB的内存对象
- 涉及视图 :
gv$sgastat
sql
SELECT inst_id, pool, name, TRUNC(bytes/1024/1024/1024, 4) size_gb
FROM gv$sgastat
WHERE pool = 'shared pool'
AND TRUNC(bytes/1024/1024, 4) > 50
ORDER BY 1, 3 DESC, 2;
2.4 用户连接数
- 检查目的:统计各实例不同状态、类型的会话数量及偏差
- 涉及视图 :
gv$session
sql
WITH a AS (
SELECT inst_id, status, type, COUNT(*) CNT
FROM gv$session
GROUP BY ROLLUP(inst_id, status, type)
ORDER BY 1, 2, 3
),
b AS (
SELECT inst_id, status, type, MAX(cnt) cnt, AVG(cnt) avg
FROM a
GROUP BY inst_id, status, type
ORDER BY 1, 2, 3
)
SELECT b.*, ROUND(ABS(cnt - avg) / avg * 100, 2) piancha
FROM b;
三、日志与告警检查
3.1 最近日志(最近10天)
- 检查目的:查看最近1000条数据库告警日志
- 涉及视图 :
v$diag_alert_ext,v$database,v$diag_info
sql
SELECT *
FROM (
SELECT TO_CHAR(originating_timestamp, 'YYYY-MM-DD HH24:MI:SS') alert_date,
message_text,
a.HOST_ID,
a.HOST_ADDRESS,
a.PROCESS_ID,
a.RECORD_ID,
a.FILENAME,
DENSE_RANK() OVER(PARTITION BY 1 ORDER BY a.RECORD_ID DESC) RN
FROM v$diag_alert_ext a
WHERE TRIM(a.COMPONENT_ID) = 'rdbms'
AND A.FILENAME = (
SELECT D.VALUE ||
(SELECT CASE
WHEN D.PLATFORM_NAME LIKE '%Microsoft%' THEN CHR(92)
ELSE CHR(47)
END PLATFORM
FROM V$DATABASE D) || 'log.xml'
FROM V$DIAG_INFO D
WHERE D.NAME = 'Diag Alert'
)
AND originating_timestamp >= SYSDATE - 10
AND TRIM(a.MESSAGE_TEXT) IS NOT NULL
)
WHERE rn <= 1000
ORDER BY record_id;
四、性能分析检查
4.1 AWR 数据库报告
- 检查目的:生成DB Time异常的AWR报告SQL语句
- 涉及视图 :
dba_hist_snapshot,dba_hist_sys_time_model,v$parameter
sql
WITH a AS (
SELECT snap_id, dbid,
(SELECT startup_time FROM dba_hist_snapshot hs
WHERE hs.instance_number = hstm.instance_number
AND hs.snap_id = hstm.snap_id) startup_time,
(SELECT end_interval_time FROM dba_hist_snapshot hs
WHERE hs.instance_number = hstm.instance_number
AND hs.snap_id = hstm.snap_id) end_time,
instance_number, stat_name, value
FROM (SELECT * FROM (SELECT * FROM dba_hist_sys_time_model
WHERE stat_name IN ('DB time')
ORDER BY snap_id DESC)
WHERE ROWNUM < 500) hstm
ORDER BY snap_id
),
timeinv AS (
SELECT ROUND(
(SELECT value FROM v$parameter WHERE name = 'cpu_count') *
(EXTRACT(HOUR FROM snap_interval) * 60 + EXTRACT(MINUTE FROM snap_interval)) * 0.7, 2) inv
FROM dba_hist_wr_control
),
base AS (
SELECT a.dbid, a.snap_id bsnap, b.snap_id esnap, b.instance_number,
a.end_time, b.stat_name,
ROUND((b.value - a.value) / 1000000, 2) db_time
FROM a a, a b
WHERE a.snap_id = b.snap_id - 1
AND a.instance_number = b.instance_number
AND a.stat_name = b.stat_name
AND a.STARTUP_TIME = b.startup_time
AND ROUND((b.value - a.value) / 1000000 / 60, 2) > (SELECT inv FROM timeinv)
ORDER BY 1
)
SELECT b.*,
'select * from table(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(' || dbid || ',' ||
instance_number || ',' || bsnap || ',' || esnap || '))' awrsql
FROM base b;
sql
-- 实操案例
SET PAGESIZE 0
SET LINESIZE 32767 -- Oracle 最大行宽
SET LONG 1000000
SET TRIMSPOOL ON
SET FEEDBACK OFF
SET HEADING OFF
SPOOL \\10.xxx.xx.xx6\network_folder\TsDomain\testUser01\My Documents\202602file\0611-awr_report.html
SELECT output
FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(
l_dbid => 1494364764, -- 替换v$database查到的dbid
l_inst_num => 2, -- 单实例填1
l_bid => 5037, -- 起始snap_id
l_eid => 5038 -- 结束snap_id
));
SPOOL OFF
4.2 慢 SQL
- 检查目的:查找执行时间超过60秒的长操作SQL
- 涉及视图 :
v$session_longops,v$sql
sql
SELECT DISTINCT MAX(target) target,
MAX(LAST_UPDATE_TIME) LAST_UPDATE_TIME,
MAX(elapsed_seconds) elapsed_seconds,
sl.sql_id, s.child_number,
sql_plan_operation, sql_plan_options,
MAX(DBMS_LOB.SUBSTR(SQL_FULLTEXT, 3000, 1)) sqltext
FROM v$session_longops sl, v$sql s
WHERE s.sql_id = sl.sql_id
AND s.HASH_VALUE = sl.sql_hash_value
AND NOT REGEXP_LIKE(message, 'EXPORT|RMAN|Gather|Advisor')
AND elapsed_seconds > 60
GROUP BY sl.sql_id, sql_plan_operation, sql_plan_options, s.child_number
ORDER BY LAST_UPDATE_TIME, elapsed_seconds, sl.sql_id;
五、参数与统计信息检查
5.1 非默认参数
- 检查目的:查看所有非默认值的初始化参数
- 涉及视图 :
gv$parameter
sql
SELECT inst_id, name, type, value, display_value
FROM gv$parameter
WHERE ISDEFAULT = 'FALSE'
ORDER BY 2, 1;
5.2 统计信息相关参数
- 检查目的:查看与统计信息收集相关的参数设置
- 涉及视图 :
gv$parameter
sql
SELECT num, name, type, value, DISPLAY_VALUE, ISDEFAULT, DESCRIPTION
FROM v$parameter
WHERE name LIKE '%statistic%';
5.3 表统计信息
- 检查目的:检查表的统计信息锁定和过时情况
- 涉及视图 :
dba_tab_statistics
sql
SELECT owner, stattype_locked, stale_stats, COUNT(*) cnt
FROM dba_tab_statistics
GROUP BY owner, stattype_locked, stale_stats
ORDER BY 1, 2, 3;
5.4 索引统计信息
- 检查目的:检查索引的统计信息锁定和过时情况
- 涉及视图 :
dba_ind_statistics
sql
SELECT owner, stattype_locked, stale_stats, COUNT(*) cnt
FROM dba_ind_statistics
GROUP BY owner, stattype_locked, stale_stats
ORDER BY 1, 2, 3;
六、补丁与版本检查
6.1 数据库补丁
- 检查目的:查看数据库补丁安装历史
- 涉及视图 :
dba_registry_history,v$instance
sql
SELECT action_time, ACTION, version, comments
FROM dba_registry_history
ORDER BY 1;
七、存储空间检查
7.1 共享存储(ASM)
- 检查目的:检查ASM磁盘组的使用情况
- 涉及视图 :
v$asm_diskgroup
sql
SELECT name, STATE, total_mb, free_mb,
TRUNC((total_mb - free_mb) / total_mb * 100, 2) || ' %' pect, type
FROM v$asm_diskgroup
ORDER BY 1;
7.2 数据表空间
- 检查目的:检查数据表空间的使用率
- 涉及视图 :
dba_tablespace_usage_metrics,dba_tablespaces
sql
SELECT dt.tablespace_name AS tablespace,
dt.contents AS type,
TRUNC(dt.block_size * dtum.used_space / 1024 / 1024 / 1024, 2) AS used_gb,
TRUNC(dt.block_size * dtum.tablespace_size / 1024 / 1024 / 1024, 2) AS max_gb,
TRUNC(dt.block_size * (dtum.tablespace_size - dtum.used_space) / 1024 / 1024 / 1024, 2) AS free_gb,
TRUNC(dtum.used_space / dtum.tablespace_size * 100, 2) used_pect
FROM dba_tablespace_usage_metrics dtum, dba_tablespaces dt
WHERE dtum.tablespace_name = dt.tablespace_name
ORDER BY tablespace;
7.3 临时表空间
- 检查目的:检查临时表空间大小及用户分配情况
- 涉及视图 :
dba_users,v$tempfile,v$tablespace
sql
WITH tff AS (
SELECT ts.name, SUM(tf.bytes) / 1024 / 1024 / 1024 size_gb
FROM v$tempfile tf, v$tablespace ts
WHERE tf.ts# = ts.ts#
GROUP BY ts.name
ORDER BY 2
),
us AS (
SELECT username, default_tablespace dt_name, temporary_tablespace ts_name
FROM dba_users du
WHERE created > (SELECT created + 1 FROM dba_users WHERE username = 'SYS')
)
SELECT us.*, tff.size_gb
FROM tff, us
WHERE tff.name = us.ts_name;
7.4 归档空间统计
- 检查目的:检查闪回恢复区(FRA)的使用情况
- 涉及视图 :
v$flash_recovery_area_usage
sql
SELECT * FROM v$flash_recovery_area_usage;
八、归档与Redo日志检查
8.1 归档日志
- 检查目的:统计最近14天的归档日志生成情况
- 涉及视图 :
v$archived_log
sql
SELECT TO_CHAR(first_time, 'yyyy-mm-dd hh24:mi') time,
COUNT(*) cnt,
TRUNC(SUM(blocks * block_size) / 1024, 2) size_mb
FROM v$archived_log
WHERE creator = 'ARCH'
AND first_time > SYSDATE - 14
GROUP BY TO_CHAR(first_time, 'yyyy-mm-dd hh24:mi')
ORDER BY 1;
8.2 归档日志分析(按小时维度)
- 检查目的:分析最近15天的归档日志按小时分布情况
- 涉及视图 :
gv$log_history
sql
SELECT a.THREAD#,
SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'), 1, 5) Day,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '00', 1, 0)) H00,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '01', 1, 0)) H01,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '02', 1, 0)) H02,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '03', 1, 0)) H03,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '04', 1, 0)) H04,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '05', 1, 0)) H05,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '06', 1, 0)) H06,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '07', 1, 0)) H07,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '08', 1, 0)) H08,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '09', 1, 0)) H09,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '10', 1, 0)) H10,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '11', 1, 0)) H11,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '12', 1, 0)) H12,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '13', 1, 0)) H13,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '14', 1, 0)) H14,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '15', 1, 0)) H15,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '16', 1, 0)) H16,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '17', 1, 0)) H17,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '18', 1, 0)) H18,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '19', 1, 0)) H19,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '20', 1, 0)) H20,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '21', 1, 0)) H21,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '22', 1, 0)) H22,
SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'), 10, 2), '23', 1, 0)) H23,
COUNT(*) TOTAL
FROM gv$log_history a
WHERE first_time >= TO_CHAR(SYSDATE - 15)
GROUP BY a.THREAD#, SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'), 1, 5)
ORDER BY a.THREAD#, SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'), 1, 5) DESC;
8.3 Redo 日志状态
- 检查目的:检查Redo日志组的状态和大小
- 涉及视图 :
v$log
sql
SELECT group# group_id, thread# thread_id, sequence# sequence_id,
bytes / 1024 / 1024 size_mb, members, status, first_time, next_time
FROM v$log
ORDER BY 2, 1, 3;
九、对象与空间分析检查
9.1 大表(>10GB)
- 检查目的:找出占用空间超过10GB的数据库对象
- 涉及视图 :
dba_segments
sql
SELECT owner, segment_name, segment_type, COUNT(*) cnt,
TRUNC(SUM(bytes) / 1024 / 1024 / 1024, 2) size_gb
FROM dba_segments
GROUP BY owner, segment_name, segment_type
HAVING TRUNC(SUM(bytes) / 1024 / 1024 / 1024, 2) > 10
ORDER BY 5 DESC, 4 DESC;
9.2 分区表存在普通非分区索引
- 检查目的:检查分区表上是否存在非分区普通索引(可能导致性能问题)
- 涉及视图 :
dba_indexes,dba_tables,dba_users
sql
SELECT table_owner, table_name, owner, index_name, index_type, status
FROM dba_indexes
WHERE index_type <> 'LOB'
AND partitioned = 'NO'
AND uniqueness <> 'UNIQUE'
AND (owner, table_name) IN (
SELECT owner, table_name
FROM dba_tables
WHERE partitioned = 'YES'
AND owner IN (
SELECT username FROM dba_users
WHERE created > (SELECT created + 1 FROM dba_users WHERE username = 'SYS')
)
)
ORDER BY 1, 2, 3, 4;
9.3 高水位过高 - 普通表
- 检查目的:检查普通表的实际数据量与占用空间的比例,发现高水位线问题
- 涉及视图 :
dba_users,DBA_tables
sql
SELECT owner, table_name,
TRUNC(num_rows * avg_row_len / 1024 / 1024, 2) data_size_mb,
TRUNC(blocks * 8 / 1024, 2) disk_size_mb,
TRUNC(TRUNC(num_rows * avg_row_len / 1024 / 1024, 2) /
(TRUNC(blocks * 8 / 1024, 2) + 1) * 100, 2) used_pect,
empty_blocks
FROM DBA_tables
WHERE owner IN (
SELECT USERNAME FROM dba_users
WHERE NOT REGEXP_LIKE(account_status, 'LOCKED|EXPIRED|GRACE')
AND USERNAME IN (
SELECT username FROM dba_users
WHERE created >= (SELECT created + 1 FROM dba_users WHERE username = 'SYS')
)
)
AND owner NOT IN ('SQLTXPLAIN')
ORDER BY disk_size_mb DESC;
9.4 高水位过高 - 分区表
- 检查目的:检查分区表的实际数据量与占用空间的比例
- 涉及视图 :
DBA_TAB_PARTITIONS,dba_users
sql
SELECT table_owner, table_name,
TRUNC(num_rows * avg_row_len / 1024 / 1024, 2) data_size_mb,
TRUNC(blocks * 8 / 1024, 2) disk_size_mb,
TRUNC(TRUNC(num_rows * avg_row_len / 1024 / 1024, 2) /
(TRUNC(blocks * 8 / 1024, 2) + 1) * 100, 2) used_pect,
empty_blocks
FROM DBA_TAB_PARTITIONS
WHERE table_owner IN (
SELECT USERNAME FROM dba_users
WHERE NOT REGEXP_LIKE(account_status, 'LOCKED|EXPIRED|GRACE')
AND USERNAME IN (
SELECT username FROM dba_users
WHERE created >= (SELECT created + 1 FROM dba_users WHERE username = 'SYS')
)
)
AND table_owner NOT IN ('SQLTXPLAIN')
ORDER BY disk_size_mb DESC;
9.5 存放在系统表空间下的表
- 检查目的:检查用户表是否错误地存放在SYSTEM、SYS、USERS等系统表空间中
- 涉及视图 :
dba_segments,dba_users
sql
SELECT owner, segment_name, partition_name, tablespace_name
FROM dba_segments
WHERE tablespace_name IN ('SYS', 'SYSTEM', 'USERS')
AND owner IN (
SELECT USERNAME FROM dba_users
WHERE NOT REGEXP_LIKE(account_status, 'LOCKED|EXPIRED|GRACE')
AND USERNAME NOT IN ('SYS', 'SYSTEM', 'SQLTXPLAIN')
)
ORDER BY 1, 2;
9.6 用户空间统计
- 检查目的:统计各业务用户的对象数量和占用空间大小
- 涉及视图 :
dba_objects,dba_segments,dba_users
sql
WITH a AS (
SELECT owner, COUNT(*) obj_cnt
FROM dba_objects
WHERE owner IN (SELECT username FROM dba_users
WHERE created >= (SELECT created + 1 FROM dba_users WHERE username = 'SYS'))
GROUP BY owner
),
b AS (
SELECT owner, TRUNC(SUM(bytes) / 1024 / 1024 / 1024, 1) size_gb
FROM dba_segments
WHERE owner IN (SELECT username FROM dba_users
WHERE created >= (SELECT created + 1 FROM dba_users WHERE username = 'SYS'))
GROUP BY owner
)
SELECT a.owner, a.obj_cnt, b.size_gb
FROM a, b
WHERE a.owner = b.owner
ORDER BY 3, 2, 1;
十、配置与对象变更检查
10.1 表并行度
- 检查目的:检查设置了并行度的用户表(可能影响OLTP性能)
- 涉及视图 :
dba_tables
sql
SELECT owner, table_name, tablespace_name, status, degree
FROM dba_tables
WHERE TRIM(degree) > '1'
AND owner NOT IN ('SYS', 'SYSTEM');
10.2 最近7天结构发生变化的数据库对象
- 检查目的:追踪近期DDL变更,排查异常变更
- 涉及视图 :
dba_objects,dba_users
sql
SELECT owner, object_name, object_type, object_id, created, last_ddl_time
FROM dba_objects
WHERE (created > SYSDATE - 7 OR last_ddl_time > SYSDATE - 7)
AND owner IN (
SELECT username FROM dba_users
WHERE default_tablespace NOT IN ('SYSAUX', 'SYSTEM')
AND account_status <> 'LOCKED'
)
AND object_type NOT LIKE '%PARTITION%'
ORDER BY owner, last_ddl_time DESC, created DESC;
10.3 序列信息
- 检查目的:检查业务用户序列的缓存设置(缓存过小可能影响并发性能)
- 涉及视图 :
dba_sequences,dba_users
sql
SELECT SEQUENCE_OWNER owner, sequence_name sname, CACHE_SIZE,
MIN_VALUE, TO_CHAR(MAX_VALUE) MAX_VALUE, INCREMENT_BY, LAST_NUMBER
FROM dba_sequences
WHERE SEQUENCE_OWNER IN (
SELECT username FROM dba_users
WHERE created > (SELECT created + 1 FROM dba_users WHERE username = 'SYS')
)
AND CACHE_SIZE < 200
ORDER BY LAST_NUMBER DESC;
十一、连接与外部对象检查
11.1 DBLinks
- 检查目的:查看数据库链接配置情况
- 涉及视图 :
dba_db_links
sql
SELECT owner, db_link, username, host, created
FROM dba_db_links
ORDER BY owner, created;
11.2 回收站对象
- 检查目的:检查回收站中对象占用空间情况
- 涉及视图 :
DBA_RECYCLEBIN
sql
SELECT owner, ts_name, COUNT(*) CNT, SUM(SPACE * 8) / 1024 size_mb
FROM DBA_RECYCLEBIN
GROUP BY owner, ts_name
ORDER BY 1, 2, 4;
十二、备份检查
12.1 数据库备份(RMAN)
- 检查目的:检查RMAN备份作业的执行情况
- 涉及视图 :
V$RMAN_BACKUP_JOB_DETAILS
sql
SELECT TO_CHAR(command_id, 'MM-DD hh24:mi') command_id,
TO_CHAR(start_time, 'MM-DD hh24:mi') start_time,
TO_CHAR(end_time, 'MM-DD hh24:mi') end_time,
status, input_type,
TRUNC(elapsed_seconds, 2) elapsed_seconds,
TRUNC(compression_ratio, 2) compression_ratio,
input_bytes_display, output_bytes_display
FROM V$RMAN_BACKUP_JOB_DETAILS
ORDER BY start_time;
检查项汇总表
| 序号 | 检查类别 | 检查项 | 涉及视图 | 启用状态 |
|---|---|---|---|---|
| 1 | 基础状态 | 数据库状态 | gv$database |
✅ |
| 2 | 基础状态 | 实例状态 | gv$instance |
✅ |
| 3 | 基础状态 | 组件状态 | dba_registry |
✅ |
| 4 | 资源 | 用户连接数 | gv$session |
✅ |
| 5 | 内存 | SGA | gv$sgainfo |
✅ |
| 6 | 内存 | PGA | gv$pgastat |
✅ |
| 7 | 内存 | Shared Pool | gv$sgastat |
✅ |
| 8 | 日志 | 最近日志 | v$diag_alert_ext 等 |
✅ |
| 9 | 性能 | 数据库报告(AWR) | dba_hist_snapshot 等 |
✅ |
| 10 | 性能 | 慢SQL | v$session_longops, v$sql |
✅ |
| 11 | 参数 | 非默认参数 | gv$parameter |
✅ |
| 12 | 统计信息 | 表统计信息 | dba_tab_statistics |
✅ |
| 13 | 统计信息 | 索引统计信息 | dba_ind_statistics |
✅ |
| 14 | 参数 | 统计信息相关参数 | gv$parameter |
✅ |
| 15 | 版本 | 数据库补丁 | dba_registry_history |
✅ |
| 16 | 存储 | 共享存储(ASM) | v$asm_diskgroup |
✅ |
| 17 | 存储 | 数据表空间 | dba_tablespace_usage_metrics |
✅ |
| 18 | 存储 | 临时表空间 | dba_users, v$tempfile |
✅ |
| 19 | 存储 | 归档空间统计 | v$flash_recovery_area_usage |
✅ |
| 20 | 日志 | 归档日志 | v$archived_log |
✅ |
| 21 | 日志 | 归档日志分析 | gv$log_history |
✅ |
| 22 | 日志 | Redo状态 | v$log |
✅ |
| 23 | 对象分析 | 大表 | dba_segments |
✅ |
| 24 | 对象分析 | 分区表存在普通非分区索引 | dba_indexes, dba_tables |
✅ |
| 25 | 对象分析 | 高水位过高-普通表 | DBA_tables, dba_users |
✅ |
| 26 | 对象分析 | 高水位过高-分区表 | DBA_TAB_PARTITIONS |
✅ |
| 27 | 对象分析 | 存放在系统表空间下的表 | dba_segments, dba_users |
✅ |
| 28 | 对象分析 | 用户空间统计 | dba_objects, dba_segments |
✅ |
| 29 | 配置 | 表并行度 | dba_tables |
✅ |
| 30 | 配置 | 最近7天结构变更 | dba_objects, dba_users |
❌ |
| 31 | 配置 | 序列信息 | dba_sequences, dba_users |
✅ |
| 32 | 连接 | DBLinks | dba_db_links |
✅ |
| 33 | 对象分析 | 回收站对象 | DBA_RECYCLEBIN |
✅ |
| 34 | 备份 | 数据库备份(RMAN) | V$RMAN_BACKUP_JOB_DETAILS |
✅ |
说明:
- 所有SQL均基于Oracle 11g/12c/19c 动态性能视图
- 部分SQL需要DBA权限才能执行
- 检查项30(最近7天结构变更)当前标记为未启用(0),其余均为启用状态(1)
- 涉及业务用户的查询均以SYS用户创建时间为基准筛选(排除系统内置用户)