2018/05/27

Tiptop服务器硬盘空间满

前段时间通过给Tiptop的AP服务器启用外部SMTP发邮件,配合Shell脚本,侦测到AP服务器的磁盘空间使用率达到80%时,会自动发邮件出来。

本次出现空间不足的是根目录,(注:u1:4gl程序及AP配置文件等存放位置;u2:若AP与DB在同一台Server,则用于存放Oracle相关文件;u3:备份文件所在磁盘),利用df和du命令配合,最终查出是apache2的日志文件access_log文件持续增长造成的,有两个办法可以解决该问题:

一、禁止apache2产生log文件,方法如下,但这不符合信息安全的要求,不推荐。
找到apache2的配置文件httpd.conf,将access_log的配置行注释掉即可。
二、让access_log定期产生独立的文件,在将超过期限的独立的日志文件清除。
也是在apache2的配置文件httpd.conf中,修改access_log的配置行,用apache2自带的ratatelogs工具,让日志每天产生一个新文件。
CustomLog "|bin/rotatelogs -l /var/log/logfile_%Y%m%d 86400" common
注意上述路径需为绝对路径。

自动清除超过期限(此处为90天)的日志文件,将下面的命令加入crontab:
find /var/log/logfile_* -mtime +90 -exec rm -f {} \; 
参考资料: Apache官方文档

2018/05/17

Tiptop:用SQL脚本和Shell脚本自动发Excel报表给用户

Tiptop服务器启用外部SMTP发邮件后,一些简单的报表必须要通过邮件发给User时,就不必麻烦去写CR报表了,可以用SQL脚本和Shell脚本配合完成,而且效果也不错。

简单的步骤如下:

一、写SQL脚本。SQL语句先加上如下内容,保证输出资料的可读性。
set linesize 200
set term off verify off feedback off pagesize 999
set markup html on entmap ON spool on preformat off
SPOOL filename.xls;
  以上前三行是为了规范Excel的格式,最后一行是指定输出文件的位置和文件名。请自行调整。
  然后在SQL脚本文件中加入你的SQL语句,以及最后一行为
SPOOL OFF ;
  最后将其保存,例如文件后为myquery.sql。

二、写Shell脚本。直接贴我的吧。
!/bin/sh
export LANG=en_US.utf8
export ORACLE_BASE=/u2/oracle;
export ORACLE_HOME=/u2/oracle/product/11.2.0/dbhome_1;
export ORACLE_SID=topprod;
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8;
export PATH=$PATH:/usr/bin:sbin:/usr/sbin:/usr/contrib/bin:$ORACLE_HOME/bin
cd /yourpath
sqlplus username/password @./myquery.sql〈〈EOF 
quit
EOF
filename=filename.xls
filesize=`ls -l $filename | awk '{ print $5 }'`
normail_size=$((19))
if [ $filesize -ne $normail_size ]
then
        echo "" | mailx -a $filename -s "Email Subject" username@mydomain.com
fi
其中第二到七行为环境变量声明,以避免权限问题和字符集混乱等。第九行中EOF前的尖括号请替换为半角,此处是调用SQL脚本以得到查询结果。第12行的文件名需与SQL脚本中声明的一致。后面几行是用ls和awk得到文件大小,如果是19个字节,就跳过了,因为"no rows selected"加上其前后的换行符等,就刚好19bytes,这个方法其实不算高明,但够用了。😀

最后,如果文件大小不等于19bytes,那就直接把SQL输出的文件作为附件发出了。

我挺喜欢这种方式的,你呢?

参考资料:云和恩墨

CR报表错误:certid驗證失敗 無法開啟報表

今天在Toptest应User需求调整CR报表对应程序后,做测试,程序调用IE浏览器显示报表时,出现错误提示:
certid驗證失敗 無法開啟報表
原来是因为最近把Oracle数据库迁移到了另一台Server,只在AP端改了数据库连接设定,CR服务器的却忘记了。

去Net Manager或直接修改tnsnames.ora文件即可搞定。

2018/05/09

Oracle 默认用户密码的由来

接触过Oracle数据库的朋友可能多少会好奇,为什么Oracle的初始用户和密码是scott和tiger,其由来为何?

Oracle大牛Tony Jambu曾权威解释说:
Scott是Oracle的前身Software Development Laboratories的第4位职员,他是Oracle V1到V3的联合设计师和联合架构师,其全名为Scott Bruce。而tiger是他的宠物猫的名字。

参考信息: Burleson Consulting