#!/usr/bin/ksh

##############paramter######################
startdate=$1' 00:00:01'
enddate=$2' 23:59:59'
reporttype=$3
reportformat='text'
###################env######################
oraclehome=`echo $ORACLE_HOME`

#############################################
dbname=`sqlplus -s "/ as sysdba" <<EOF
set head off
set echo off
set feedback off
set linesize 120 ;
set pagesize 0;
set heading off;
select distinct name from gv\\$database;
quit;
EOF
`
dbid=`sqlplus -s "/ as sysdba" <<EOF
set head off
set echo off
set feedback off
set linesize 120 ;
set pagesize 0;
set heading off;
select distinct dbid from gv\\$database;
quit;
EOF
`

instid=`sqlplus -s "/ as sysdba" <<EOF
set head off
set echo off
set feedback off
set linesize 120 ;
set pagesize 0;
set heading off;
select instance_number from gv\\$instance;
quit;
EOF
`

instname=`sqlplus -s "/ as sysdba" <<EOF
set head off
set echo off
set feedback off
set linesize 120 ;
set pagesize 0;
set heading off;
select instance_name from gv\\$instance;
quit;
EOF
`

for i in $instid
do
instanceid=`echo $i|tr -d ' '`
echo "from database-->"$dbname" database id--->"$dbid" instance id--->"$instanceid
echo "report type--->"$reporttype"|"$reporttype" snapshot from--->"$startdate" to--->"$enddate
echo $instanceid

if [ $reporttype = 'AWR' ];
then

export NLS_LANG=american_america.AL32UTF8
echo "generate the awr report sql...."
$ORACLE_HOME/bin/sqlplus -s "/ as sysdba" <<EOF >awrreport.sql
set head off
set echo off
set feedback off
set linesize 120 ;
set pagesize 0;
set heading off;
select * from (
select snap_id as snaped,
lag(snap_id, 1) OVER(ORDER BY snap_id) as snapst,
to_char(end_interval_time, 'yyyymmddhh24miss') as snaped1,
lag(to_char(end_interval_time, 'yyyymmddhh24miss'), 1) OVER(ORDER BY to_char(end_interval_time, 'yyyymmddhh24miss')) as snaped2
from dba_hist_snapshot a
where a.begin_interval_time >=to_date('$startdate', 'yyyy-mm-dd hh24:mi:ss')
and a.begin_interval_time <=to_date('$enddate', 'yyyy-mm-dd hh24:mi:ss')
--and rtrim(ltrim(to_char(a.begin_interval_time,'day','NLS_DATE_LANGUAGE=AMERICAN'))) not in ('saturday','sunday')
--and to_char(a.begin_interval_time,'HH24')>=0
--and to_char(a.end_interval_time,'HH24') <=23
and a.DBID='$dbid'
and a.INSTANCE_NUMBER='$instanceid'
) where snapst is not null AND substr(snaped1,1,8)=substr(snaped2,1,8)
order by snapst;
quit;
EOF

export NLS_LANG=american_america.AL32UTF8
cat awrreport.sql | while read line
do
endd=`echo $line | awk ' { print $1 } '`
startd=`echo $line | awk ' { print $2 } '`
endt=`echo $line | awk ' { print $3 } '`
startt=`echo $line | awk ' { print $4 } '`
instid=`echo $instanceid`
awrrp="awrrpt_"$startt"_"$endt"_"$instid".txt"
$ORACLE_HOME/bin/sqlplus -s "/ as sysdba" <<EOF
@?/rdbms/admin/awrrpti.sql;
$reportformat
$dbid
$instanceid
1
$startd
$endd
$awrrp
quit;
EOF

done

echo "generate the node"$instid "report finish,please check..."

else

echo "error!!!please check the input parameters..."

fi

done
tar cvf awr.tar *.txt

2. how to

chmod +x auto-awr-11g.sh
nohup sh auto-awr-11g.sh '2016-05-26' '2016-06-02' AWR & 3.FAQ:

ash出现ORA-01843: 无效的月份错误解决

select sysdate from dual;

本帖最后由 drower 于 2013-10-16 15:36 编辑

今天在做优化第十四课作业生成ash时出现错误
select output from table(dbms_workload_repository.ash_report_html(
:dbid, * 第 1 行出现错误: ORA-01843: 无效的月份 ORA-06512: 在
"SYS.DBMS_SWRF_REPORT_INTERNAL", line 10999 ORA-06512: 在
"SYS.DBMS_SWRF_REPORT_INTERNAL", line 10421 ORA-06512: 在
"SYS.DBMS_WORKLOAD_REPOSITORY", line 1554 ORA-06512: 在 line 1

通过alter session set nls_date_format='DD-MM-YY';修改当前会话。
select sysdate from dual;查看当前时间格式,发现客户端字符集不对。
exit,退出
set  NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 设置客户端字符集
随后进行生成ash就可以了


感谢逝鸿

https://blog.csdn.net/qq_21127313/article/details/52471580

ORA-01843 When Generating ASH Report (文档 ID 1147253.1)

Please set nls_language to AMERICAN and re-generate the ASH report:

SQL> alter session set nls_language='AMERICAN';
SQL> @?/rdbms/admin/ashrpt.sql
 
 
-》有问题机器

[appuser@pommodb02 ~]$ env|grep LANG
LANG=en_US.UTF-8

-》正确机器

[appuser@sportalfront01 ~]$ env|grep LANG
LANG=zh_CN.UTF-8

 

auto_ash的更多相关文章

随机推荐

  1. 【Python@Thread】锁示例

    当出现竞态条件时候,即在同一个时刻只有一个线程可以进入临界区,需要使用同步. 常见的同步原语有两种:锁/互斥,信号量. 锁是最简单,最低级的机制. 首先看一个不使用锁时候的多线程示例: from at ...

  2. wpf 异步加载 只需6段代码

    private BackgroundWorker worker = null; ProgressBar probar = new ProgressBar(); private int percentV ...

  3. for、while循环的洪荒之力

    在python里,如果说print语句是用得最多的话,那么,要我说,除了for语句,谁都不敢认老二. 下面,让我们来看看for语句能搞出什么花样 1. 计时(无限次数) 说到计时,我们先来试下显示当前 ...

  4. 【Machine Learning in Action --4】朴素贝叶斯分类

    1.概述 朴素贝叶斯分类是贝叶斯分类器的一种,贝叶斯分类算法是统计学的一种分类方法,利用概率统计知识进行分类,其分类原理就是利用贝叶斯公式根据某对象的先验 概率计算出其后验概率(即该对象属于某一类的概 ...

  5. CentOS 7 多网卡绑定

    根据官方文档Red_Hat_Enterprise_Linux-7-Networking_Guide-en-US用nmcli做起来还是相当容易的.下面把俺的步骤贴下. 1.查看目前网卡的名称和状态.#n ...

  6. laravel 邮箱改密功能

    参考网址: http://laravelacademy.org/post/1290.html

  7. php 即时输出

    <?phpset_time_limit(0);ob_end_clean();ob_implicit_flush(1);$i=0;while ( $i>=0 ) { sleep(1); ec ...

  8. 个人项目中的WCF使用

    今天闲着无事,给大家分享一下我的一个项目中WCF的使用.我这项目使用的是Silverlight,至于其他类型的使用方法也是一样的. 1.建立一个Silverlight带Web项目的解决方案. 2.在w ...

  9. 用Jedis获取redis连接(集群和非集群状态下)

    第一:非集群状态下 非集群状态下用Jedis获取redis连接,得到Jedis对象即可,一共有两种: 1.利用Jedis构造器,仅限用于测试,在实际项目中肯定是用JedisPool. Jedis(St ...

  10. mysql、sqlserver数据库常见数据类型对应java中的的类型探究

    由于本次测试表的结构不涉及到主键的自增长,所以mysql.sqlserver建表语句相同: CREATE TABLE testType ( id INT NOT NULL DEFAULT 0, gen ...