oracle数据库快速定位问题指引

2024年 1月 10日 61.9k 0

编辑

1、检查数据库服务器操作系统-磁盘\CPU\内存(内存主要看swap)等使用率

2、检查数据库监听是否正常 lsnrctl status

编辑

3、检查数据库实例是否正常

编辑

处理方法:

1、日志磁盘满的情况:直接删除早期归档日志文件;详细处理方式件附件1;

    CPU和内存使用率满的情况:数据库操作系统不可用直接重启服务器。

2、若监听关闭,手动启动 lsnrctl start

若监听状态一致unknow ,可手动静态注册监听。

 alter system set local_listener=‘监听器名称' scope=both;

3、若实例状态非open,可重启下实例,shutdown immediate;startup

4、检查数据库告警日志

编辑

1、cd /oradata/exa2nbuip/lxplmprd/lxplmprd2/diag/diag/rdbms/lxplmprd2/lxplmprd2/trace/

2、tail -1000f alert_lxplmprd2.log

主要关注ORA-0XXXX的告警信息,自行百度处理

编辑

1、检查数据库服务器操作系统-IO使用率,IO等待会导致数据库慢   iostat –x 2 10

编辑

处理方法:

 分析数据库物理读top5,进行优化

SELECT * FROM   (SELECT PARSING_USER_ID EXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,sql_text FROM  v$sqlarea ORDER BY disk_reads DESC ) 

  WHERE ROWNUM sysdate - &minutes /( 60*24)
group by sql_id, SQL_PLAN_HASH_VALUE   , aud.name 
order by sum(decode(session_state,'ON CPU',1,1))   desc
) where  rownum < 10
/

topsql.sql脚本:

var tuning_task varchar2(100);
  DECLARE
          l_sql_id v$session.prev_sql_id%TYPE;
          l_tuning_task VARCHAR2(30);
        BEGIN
          l_sql_id:='&sqlid';
          l_tuning_task := dbms_sqltune.create_tuning_task(sql_id => l_sql_id);

          :tuning_task:=l_tuning_task;
          dbms_sqltune.execute_tuning_task(l_tuning_task);
          dbms_output.put_line(l_tuning_task);
      END;
   /

topsql.sql脚本:

print tuning_task;
SET linesize 180
SET longchunksize 180
SET pagesize 900
SET long 1000000
col TUNING_TASK format a80

SELECT dbms_sqltune.report_tuning_task('&task') FROM dual;

编辑

编辑

4、redo日志切换频繁,归档日志剧增

logmnr使用:

select * from v$archived_log order by sequence# desc

begin

   dbms_logmnr.add_logfile(logfilename=>'/oradata/exa2nbuip/lxplmprd/lxplmprd2/fra/LXPLMPRD2/archivelog/2023_11_22/o1_mf_1_329_lotjyts5_.arc',options=>dbms_logmnr.new);

   dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);

end;

/

 select * from v$logmnr_contents

begin

   dbms_logmnr.end_logmnr;

   end;

/

可查看redo日志内容,发给开发团队解决。

5、SGA、PGA内存分析

可通过AWR报告分析:

su – oracle

Sqlplus / as sysdba

@?/rdbms/admin/awrrpt  本实例

@?/rdbms/admin/awrrpti   RAC中选择实例号

选择“html”

编辑

编辑

编辑

附件1:

使用sql命令查看:

Sql>sqlplus / as sysdba;

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            USE_DB_RECOVERY_FILE_DEST -–如果是直接路径可直接进去改路径删除早期归档日志

Oldest online log sequence     330

Next log sequence to archive   331

Current log sequence           331

SQL> show parameter db_recovery_file_dest;

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string      /oradata/exa2nbuip/lxplmprd/lx

                                                 plmprd2/fra

db_recovery_file_dest_size           big integer 100G

SQL>

发现默认的归档路径为/oradata/exa2nbuip/lxplmprd/lxplmprd2/fra。而且限制使用空间为100G。

可直接进/oradata/exa2nbuip/lxplmprd/lxplmprd2/fra 路径下删除早期归档日志。

物理删除后,通过rman命令手动过期掉已删除的归档记录。(若磁盘空间未满也可通过rman删除归档日志)

使用delete expired archivelog all 命令删除所有过期归档日志:

rman target /

RMAN> crosscheck archivelog all;

delete expired archivelog all;

或delete noprompt archivelog until time 'sysdate - 3' ;删除3天归档日志

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论