sqlplus spool 到动态日志文件名

      通过sqlplus的spool功能我们将数据库日常运维的结果输出到日志文件,而有时候则需要定时输出,为避免日志文件名的重复,我们可以将输出的日志文件名采用动态命名方式来实现。本文则是针对这个问题给出一个示例,供大家参考。

1、生成动态日志文件的脚本  

robin@SZDB:~> more dynamic_logfile_name.sql
--+ ================================================================+ 
--| Filename:dynamic_logfile_name.sql                               |
--| Desc:                                                           |
--|         This is only a sapmle to generate dynamic log file name |
--| Author: Robinson                                                | 
--| Blog: http://blog.csdn.net.robinson_0612                        |
--+ ================================================================+
SET TERMOUT OFF ECHO OFF VERIFY OFF
SET FEEDBACK OFF
VARIABLE dt VARCHAR2(13);
COL dt FORMAT a15
COL report_name FORMAT a35

BEGIN
   SELECT TO_CHAR (SYSDATE, 'yyyymmdd_hh24mi') INTO :dt FROM DUAL;
END;
/

PRINT dt;
COL report_name NEW_VALUE rpt_name

SELECT 'dynamic_logfile_' || :dt || '.log' AS report_name FROM DUAL;

PROMPT "variable rpt_name value is &rpt_name"
SPOOL &rpt_name
ALTER SESSION SET nls_date_format='yyyymmdd hh24:mi:ss';

SELECT SYSDATE FROM DUAL;

SPOOL OFF;
SET TERMOUT ON  ECHO ON VERIFY ON;
SET FEEDBACK ON;
UNDEFINE rpt_name
EXIT;

2、测试脚本

robin@SZDB:~> sqlplus -S scott/tiger@cnmmbo @dynamic_logfile_name.sql
robin@SZDB:~> date
Fri Mar 15 11:13:04 CST 2013
robin@SZDB:~> sqlplus -S scott/tiger@cnmmbo @dynamic_logfile_name.sql
robin@SZDB:~> ls -hltr dyna*.log
-rw-r--r-- 1 robin oinstall  45 2013-03-15 11:11 dynamic_logfile_20130315_1111.log
-rw-r--r-- 1 robin oinstall  45 2013-03-15 11:13 dynamic_logfile_20130315_1113.log

3、说明 a、有关sqlplus命令的具体用法请参考:SQL*Plus User's Guide and Reference b、在上面的脚本中主要通过定义变量variable dt来存储系统时间日期用于动态日志文件的后半部分 c、变量使用:dt方式由sql查询进行赋值 d、begin end 块不可省略,否则,上面赋值不成功 e、一些提示信息可以自行移除,如print dt,prompt部分等

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网开发者交流社区

数据库的总结

1474
来自专栏乐沙弥的世界

PL/SQL --> 游标

映射在结果集中某一行数据的具体位置,类似于C语言中的指针。即通过游标方式定位到结果集中某个特定的行,然后根据业务需求

762
来自专栏大内老A

创建代码生成器可以很简单:如何通过T4模板生成代码?[上篇]

在《基于T4的代码生成方式》中,我对T4模板的组成结构、语法,以及T4引擎的工作原理进行了大体的介绍,并且编写了一个T4模板实现了如何将一个XML转变成C#代码...

7398
来自专栏DeveWork

WordPress主题下funtions.php的一段“恶意”代码

不多说了,相信有很多WordPresser都知道这段在WordPress主题下fountions.php的“恶意”代码,之所以为“恶意”加个双引号是想说:其实也...

30910
来自专栏乐沙弥的世界

PL/SQL --> 异常处理(Exception)

Exception是一种PL/SQL标识符,当运行的PL/SQL块出现错误或警告,则会触发异常处理。为了提高程序的健壮性,可以在PL/SQL块中引

811
来自专栏Android Note

Android—Room数据库(介绍)

1505
来自专栏微服务生态

用尽洪荒之力整理的Mysql数据库32条军规

2、控制单表数据量 int型不超过1000w,含char则不超过500w; 合理分表; 限制单库表数量在300以内;

883
来自专栏肖蕾的博客

安卓端强大数据库ORM框架(XAndrDB)的使用及介绍XAndrDB一、新建数据库二、或者你这样新建数据库三、查询操作四、新增操作五、删除操作六、更新数据操作

1384
来自专栏杂七杂八

Scrapy爬取伯乐在线

Scrapy爬取伯乐在线文章 准备工作: python环境,我是用Anaconda Scrapy环境,上一篇文章提到过 MySQL,我们准备将爬取的数据保存到M...

3039
来自专栏游戏杂谈

node-mysql操作transactions的实例

如果执行commit后,再执行node.js脚本(执行的是一句更新sql--UPDATE user_info SET userName = ‘张一’ WHERE...

1251

扫码关注云+社区

领取腾讯云代金券