使用 sqlplus / as sysdba
登录到 Oracle 数据库后,你可以执行一系列命令来检查数据库的状态、配置和性能。以下是一些常用的命令和操作,帮助你检查 Oracle 数据库的健康状况:
1. 检查数据库状态
查看数据库是否已启动:
SELECT status FROM v$instance;
- 正常状态应为
OPEN
。
- 正常状态应为
查看数据库的启动时间:
SELECT startup_time FROM v$instance;
2. 检查表空间使用情况
- 查看表空间的使用情况:
SELECT tablespace_name, ROUND(SUM(bytes) / 1024 / 1024, 2) AS total_mb, ROUND(SUM(bytes - NVL(free_bytes, 0)) / 1024 / 1024, 2) AS used_mb, ROUND(SUM(free_bytes) / 1024 / 1024, 2) AS free_mb FROM (SELECT tablespace_name, file_id, SUM(bytes) AS bytes FROM dba_data_files GROUP BY tablespace_name, file_id) LEFT JOIN (SELECT tablespace_name, file_id, SUM(bytes) AS free_bytes FROM dba_free_space GROUP BY tablespace_name, file_id) USING (tablespace_name, file_id) GROUP BY tablespace_name;
- 关注
free_mb
,确保表空间有足够的空闲空间。
- 关注
3. 检查数据库日志
- 查看告警日志(Alert Log):
SELECT value FROM v$diag_info WHERE name = 'Diag Trace';
- 然后到返回的路径下查看
alert_<SID>.log
文件,检查是否有错误或警告信息。
- 然后到返回的路径下查看
4. 检查数据库性能
查看当前会话的等待事件:
SELECT event, total_waits, time_waited FROM v$session_event WHERE sid = (SELECT sid FROM v$mystat WHERE rownum = 1);
- 关注
time_waited
,识别性能瓶颈。
- 关注
查看当前活动的 SQL 语句:
SELECT sid, serial#, sql_id, sql_text FROM v$session WHERE status = 'ACTIVE' AND sql_id IS NOT NULL;
5. 检查数据库参数
- 查看当前数据库参数:
SHOW PARAMETER;
- 或者查看特定参数:
SHOW PARAMETER <parameter_name>;
- 或者查看特定参数:
6. 检查数据库对象状态
检查无效对象:
SELECT owner, object_name, object_type FROM dba_objects WHERE status = 'INVALID';
检查索引的状态:
SELECT index_name, table_name, status FROM dba_indexes WHERE status = 'UNUSABLE';
7. 检查数据库备份
- 查看最近的 RMAN 备份信息:
SELECT * FROM v$rman_backup_job_details ORDER BY start_time DESC;
8. 检查数据库连接
查看当前连接的会话:
SELECT sid, serial#, username, status, machine, program FROM v$session;
查看数据库的最大连接数和当前连接数:
SELECT resource_name, current_utilization, max_utilization FROM v$resource_limit WHERE resource_name = 'processes';
9. 检查数据库版本
- 查看数据库版本:
SELECT * FROM v$version;
10. 检查数据库锁
查看当前锁的信息:
SELECT sid, serial#, username, lockwait, status FROM v$session WHERE lockwait IS NOT NULL;
查看锁定的对象:
SELECT * FROM dba_locks;
11. 检查数据库存储
查看数据文件的状态:
SELECT file_name, status, bytes / 1024 / 1024 AS size_mb FROM dba_data_files;
查看控制文件的状态:
SELECT name, status FROM v$controlfile;
12. 检查数据库统计信息
- 查看统计信息的收集时间:
SELECT table_name, last_analyzed FROM dba_tables WHERE owner = '<schema_name>';
13. 检查数据库角色和权限
查看当前用户的角色:
SELECT * FROM session_roles;
查看当前用户的权限:
SELECT * FROM session_privs;
14. 检查数据库错误
- 查看数据库中的错误信息:
SELECT * FROM dba_errors;
15. 退出 SQL*Plus
- 退出 SQL*Plus:
EXIT;
通过以上命令,你可以全面检查 Oracle 数据库的健康状况,识别潜在问题并采取相应的措施。