Oracle AWR学习之二-利用ChatGPT编写一键获取AWR报告的脚本

Oracle AWR学习之二-ChatGPT提升效率之n


背景

之前生成awr报告比较麻烦, 想着能够一键生成.
再辅以部分shell或者是python处理就可以进行细致的分析.

这一块其实还是比较简单的, 在ChatGPT加持下的确能够极大的提高自己的工作效率. 
但是怀疑国内的学习资料太low了, 需要处理很多研发错误才可以继续进行下一步的操作

ChatGPT的答复

问题为: shell一键获取awr报告
回答为: 
#!/bin/bash

# Oracle数据库信息
ORACLE_SID=<SID>
ORACLE_HOME=<ORACLE_HOME>
ORACLE_USER=<USERNAME>
ORACLE_PASSWORD=<PASSWORD>

# 连接数据库获取AWR报告
sqlplus -S ${ORACLE_USER}/${ORACLE_PASSWORD}@${ORACLE_SID} << EOF
  set pagesize 0 feedback off verify off heading off echo off;
  spool awr_report.txt;
  select DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML((select max(snap_id)-1 from dba_hist_snapshot), (select max(snap_id) from dba_hist_snapshot)) from dual;
  spool off;
  exit;
EOF

echo "AWR report has been generated in awr_report.txt"

存在的问题

1. DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML 的语法不正确
2. 没有采取文件变量.

修改后的一键获取awr报告的SQL为:

#!/bin/bash
# 注意这个SQL获取的是最近6个小时的awr报告.  
ORACLE_SID=oradb
ORACLE_HOME='/u01/app/oracle/product/19.0.0/dbhome_1'
ORACLE_USER=system
ORACLE_PASSWORD=YourPassword
now=`date +%Y%m%d%H`

sqlplus -S ${ORACLE_USER}/${ORACLE_PASSWORD}@${ORACLE_SID} << EOF
  set pagesize 0 feedback off verify off heading off echo off;
  spool awr_report_${now}.html;
  select DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML((select dbid from v\$database),(select instance_number from v\$instance),(select min(snap_id) from dba_hist_snapshot where begin_interval_time >trunc(sysdate) - 6/24),(select max(snap_id) from dba_hist_snapshot where begin_interval_time >trunc(sysdate) - 6/24)) from dual ;
  spool off;
  exit;
EOF

echo "AWR report has been generated in awr_report_${now}.html"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章