ITPub博客

首页 > 数据库 > Oracle > [20230501]为什么没有显示输出.txt

[20230501]为什么没有显示输出.txt

原创 Oracle 作者:lfree 时间:2023-05-04 08:52:21 0 删除 编辑

[20230501]为什么没有显示输出.txt

--//前几天在使用tpt usid.sql脚本查询时遇到的问题.

1.环境:
SYS@192.168.31.8:1521/hrp430> @ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.3.0     Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

2.问题:
SYS@192.168.31.8:1521/hrp430> @ usid 1255
USERNAME SID            AUDSID OSUSER MACHINE  PROGRAM SPID  OPID CPID  SQL_ID  HASH_VALUE LASTCALL STATUS SADDR            PADDR            TADDR LOGON_TIME
-------- -------------- ------ ------ -------- ------- ----- ---- ----- ------ ----------- -------- ------ ---------------- ---------------- ----- -------------------
          '1255,14883'       0 oracle xhserver (ARC1)  13995   43 13995                  0   608226 ACTIVE 00000000BCD0A680 00000000BD7BD160       2023-04-20 10:54:05
--//LOGON_TIME=2023-04-20 10:54:05,当时超长显示.我使用pr.sql纵向输出.

SYS@192.168.31.8:1521/hrp430> @ pr
PL/SQL procedure successfully completed.

--//嗯,没有输出。突然想起以前遇到类似问题: 链接 [20211126]完善tpt pr.sql脚本.txt.
--//执行如下ok:
SYS@192.168.31.8:1521/hrp430> @ pr 1255
--//结果略.

3.分析:
--//不过我当时想我前面已经执行@ usid 1255,相当于已经定义了参数1=1255,我并没有清除参数1的定义,调用pr时应该自动使用我前面
--//的赋值.当时事情太多,这个问题暂时放一下.如果当时执行define 1 也许问题就很容易定位.

--//五一放假,仔细查看usid.sql的源代码发现实际上在执行完成时tpt的脚本修改参数1,2的定义.
def 1=&usid_sql_hash_value
def 2=%

--//对于我的例子相当于将参数1定义为0.执行 @pr 相当于执行 @pr 0,而没有sid=0的信息,没有输出就正常了.
--//作者这样写的主要目的是方便其他脚本调用时不用再输入参数.比如sqlh.sql脚本.


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

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7970810