先做个广告:如需代注册ChatGPT或充值 GPT4.0会员(plus),请添加站长微信:gptchongzhi
背景
之前生成awr报告比较麻烦, 想着能够一键生成.
再辅以部分shell或者是python处理就可以进行细致的分析.
这一块其实还是比较简单的, 在ChatGPT加持下的确能够极大的提高自己的工作效率.
但是怀疑国内的学习资料太low了, 需要处理很多研发错误才可以继续进行下一步的操作
ChatGPT的答复
问题为: shell一键获取awr报告
回答为:
#!/bin/bash
# Oracle数据库信息
ORACLE_SID=
ORACLE_HOME=
ORACLE_USER=
ORACLE_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"
推荐使用GPT中文版,国内可直接访问:https://ai.gpt86.top