ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 关于Oracle 动态临控报表的小笔记

关于Oracle 动态临控报表的小笔记

原创 Linux操作系统 作者:DandSuki 时间:2012-04-27 14:33:39 0 删除 编辑
为了拿到证据给顽固的德国老头子证明inactive session的问题是由application的bug导致的,今天M吩咐D产生一份动态报表来临控PRO环境上的inactive session的趋势图,M不希望这个脚本运行在PRO上,所以D只能让他运行在个人PC上
D的设想是:
1:windows Task Scheduer 每15分钟调用sql plus去取得v$session表的数据
 
关于WIN7的 windows task scheduer ,要达到15分钟运行一次的话,在最开始的建造过程是只有one day,one moth之类的,这个设置是在schedule完成了后,在properties里改动的,
Trigger->Advanced settings
 
2:记忆中windows Task scheduler是没有办法直接调用SQLPLUS的,所以准备了一个bat脚本是调sqlplus如下,running.bat
 
sqlplus username/password@tnsname @filedirectory and name
 
sqlplus */*@***  @c:\Test.sql
 
当D在确保D的running bat可以正常运行的时候,悲剧出现了,在CMD里运行这个命令一直出现着ORA12154 :TNS Couldn't  resolve the connect identifier specified
根据GOOGLE, D运行了tnsping tnsname, 运行成功!
D也直接打了了sqlplus的程序,输入用户名,TNSNAME,登录成功
可是如果CMD调用sqlplus的格式的话,依然失败
最后D把Oracle_Home的变量加入到了windows的变量中
1:Right Click Computer ->Properties
2: Advanced System settings->Advanced
3: Environment variables , add the Oracle Home variable
 
Oracle_Home , 安装目录c:\Oracle\Product\10.2.0\client_1
当时装客户端的时候,是第一次接触ORACLE,狂点NEXT的后果--,不过D不明白为什么会TNSPING成功,而且D的tnsname是放在默认的安装目录下,并没有在其他的路径,因为好像如果不在默认的路径下的话,是要配TNS_ADMIN的环境变量才能找到正确的TNSNAME进么localnaming的解析,
 
3:  第三步当然是要保证正确的TestSQL啦,在这儿有一个问题
 
D选择的是,用ORACLE SPOOL命令将结果导入到一个文件里,spool的话是会覆盖原文件,而不是追加,在ORACLE 10G的时候才有追加的功能
spool append
 
使用方法:
 
SPOOL  C:\results.xls append
select count(*) from v$session ;
SPOOL Off
 
如果是覆盖的话,就是直接的spool c:\results.xls
 
还有一个呢,是要这个session在运行完退出的啦,所以在这个testsql里的最后加上了exit;
 
最后一个问题是设置好EXCEL的格式,
 
不过,D 也发现,第一次运行的时候如果用append的话,会有点乱码在XLS,所以第一次运行的时候在SQL的脚本里不是APPEND,后面才加上的
 
 
 
 
 
 
 
 
 
 
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26919949/viewspace-722362/,如需转载,请注明出处,否则将追究法律责任。

上一篇: D和Suki
请登录后发表评论 登录
全部评论

注册时间:2012-04-26

  • 博文量
    5
  • 访问量
    3365