[20211126]完善tpt pr.sql脚本.txt --//tpt提供pr.sql脚本把原来横向输出的内容变成纵向输出,便于阅读。但是有一个小问题,通过例子说明: 1.环境: SCOTT@book> @ ver1 PORT_STRING VERSION BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production 2.测试: SCOTT@book> @ spid SID SERIAL# PROCESS SERVER SPID PID P_SERIAL# C50 ---------- ---------- ------------------------ --------- ------ ------- ---------- -------------------------------------------------- 44 1574 35220 DEDICATED 35221 27 146 alter system kill session '44,1574' immediate; SCOTT@book> @ usid 44 USERNAME SID AUDSID OSUSER MACHINE PROGRAM SPID OPID CPID SQL_ID HASH_VALUE LASTCALL STATUS SADDR PADDR TADDR ----------------------- -------------- ----------- ---------------- ------------------ -------------------- -------------- ------ ------------------------ ------------- ----------- ---------- -------- ---------------- ---------------- ---------------- LOGON_TIME ------------------- SCOTT '44,1574' 18290945 oracle xxxxxxdg4 (TNS V1-V3) 35221 27 35220 9r6m4c0hpg6dx 559389117 0 ACTIVE 000000008638EC10 000000008620F338 2021-11-26 11:12:29 --//输出内容太多换行了。 SCOTT@book> @ pr ERROR: ORA-01756: quoted string not properly terminated --//出现ora-01756错误。检查pr.sql脚本,发现使用\字符作为分隔。 0 c clob := q'\ 0 declare 999999 \';; $ grep '\\' usid.sql substr(s.machine,instr(s.machine,'\')) u_machine, --//而usid脚本里面正好也有字符\.这样导致分隔报错。这样修改pr.sql选择一个不常用的字符作为分隔就ok了。选择那个呢? --//实际上任何可见的字符都可能出现问题,很简单选择一个不可见字符ctrl+g(小喇叭发生声音,一般代码不会出现)或者ctrl+f作为分隔. --//在linux 的vim下通过ctrl+v ctrl+f输入。 SCOTT@book> @ pr PL/SQL procedure successfully completed. --//嗯,没有输出。查看代码可以发现usid.sql脚本里面有&1要替换,修改如下执行: SCOTT@book> @ pr 44 ============================== U_USERNAME : SCOTT U_SID : '44,1574' U_AUDSID : 18290945 U_OSUSER : oracle U_MACHINE : xxxxxxdg4 U_PROGRAM : (TNS V1-V3) U_SPID : 35221 U_PID : 27 CPID : 35220 SQL_ID : 2jwdj6msnrx81 USID_SQL_HASH_VALUE : 4048286977 LASTCALL : 0 STATUS : ACTIVE SADDR : 000000008638EC10 PADDR : 000000008620F338 TADDR : LOGON_TIME : 2021-11-26 11:12:29 PL/SQL procedure successfully completed. --//OK。 $ cat -vs pr.sql . -- Notes: This script is based on Tom Kyte's original printtbl code ( http://asktom.oracle.com ) -- For coding simplicity (read: lazyness) I'm using custom quotation marks ( q'\ ) so -- this script works only from Oracle 10gR2 onwards def _pr_tmpfile=&_tpt_tempdir/pr_&_tpt_tempfile..tmp @@saveset set serverout on size 1000000 termout off save &_pr_tmpfile replace set termout on 0 c clob := q'^F 0 declare 999999 ^F';; 999999 l_theCursor integer default dbms_sql.open_cursor;; 999999 l_columnValue varchar2(4000);; 999999 l_status integer;; 999999 l_descTbl dbms_sql.desc_tab;; 999999 l_colCnt number;; 999999 begin 999999 dbms_sql.parse( l_theCursor, c, dbms_sql.native );; 999999 dbms_sql.describe_columns( l_theCursor, l_colCnt, l_descTbl );; 999999 for i in 1 .. l_colCnt loop 999999 dbms_sql.define_column( l_theCursor, i, 999999 l_columnValue, 4000 );; 999999 end loop;; 999999 l_status := dbms_sql.execute(l_theCursor);; 999999 while ( dbms_sql.fetch_rows(l_theCursor) > 0 ) loop 999999 dbms_output.put_line( '==============================' );; 999999 for i in 1 .. l_colCnt loop 999999 dbms_sql.column_value( l_theCursor, i, 999999 l_columnValue );; 999999 dbms_output.put_line 999999 ( rpad( l_descTbl(i).col_name, 999999 30 ) || ': ' || l_columnValue );; 999999 end loop;; 999999 end loop;; 999999 exception 999999 when others then 999999 dbms_output.put_line(dbms_utility.format_error_backtrace);; 999999 raise;; 999999 end;; / @@loadset get &_pr_tmpfile nolist host &_delete &_pr_tmpfile --//注意开头的. 可不是多余的。
[20211126]完善tpt pr.sql脚本.txt
来源:这里教程网
时间:2026-03-03 17:14:42
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 几种主要的oracle数据库问题发生后数据恢复的成功概率分析
几种主要的oracle数据库问题发生后数据恢复的成功概率分析
26-03-03 - ORACLE 11.2.0.4 for solaris更换硬件后主机时间改变导致一节点集群服务无法启动
- oracle打补丁回顾
oracle打补丁回顾
26-03-03 - 2021 DFA亚洲最具影响力设计奖作品
2021 DFA亚洲最具影响力设计奖作品
26-03-03 - 被格式化的硬盘文件能恢复吗,三步恢复格式化硬盘
被格式化的硬盘文件能恢复吗,三步恢复格式化硬盘
26-03-03 - 【ASK_ORACLE】Oracle Data Guard(一)DG架构
【ASK_ORACLE】Oracle Data Guard(一)DG架构
26-03-03 - Oracle:open_cursors
Oracle:open_cursors
26-03-03 - EXCEL不可读怎么办,修复EXCEL文件不可读
EXCEL不可读怎么办,修复EXCEL文件不可读
26-03-03 - goldengate抽取进程延迟90小时
goldengate抽取进程延迟90小时
26-03-03 - 文件夹删除了如何恢复?轻松恢复教学
文件夹删除了如何恢复?轻松恢复教学
26-03-03
