[20211126]完善tpt pr.sql脚本.txt「建议收藏」

[20211126]完善tpt pr.sql脚本.txt「建议收藏」[20211126]完善tpt pr.sql脚本.txt–//tpt提供pr.sql脚本把原来横向输出的内容变成纵向输出,便于阅读。但是有一个小问题,通过例子说明:1.环境:SCOTT@book&g

[20211126]完善tpt pr.sql脚本.txt

[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

–//注意开头的. 可不是多余的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5669.html

(0)
上一篇 2023-04-29 18:30
下一篇 2023-04-29

相关推荐

  • Python NumPy中的delete方法

    Python NumPy中的delete方法a href=”https://www.python100.com/a/sm.html”font color=”red”免责声明/font/a a href=”https://beian.miit.gov.cn/”苏ICP备2023018380号-1/a Copyright www.python100.com .Some Rights Reserved.

    2024-06-24
    39
  • 数据库内置系统表学习

    数据库内置系统表学习一、MySQL数据库内置系统表 mysql5.7之后的版本自带数据库为 1.information_schema数据库 这个库在mysql中就是个信息数据库,它保存着mysql服务器所维护的所有其他数

    2023-06-10
    137
  • MySQL安装——Linux「建议收藏」

    MySQL安装——Linux「建议收藏」MySQL安装——Linux MySQL下载链接:http://downloads.mysql.com/archives/community/ mysql安装(5.5) (1)查询是否安装过 #查看…

    2023-01-28
    151
  • Python 分布图

    Python 分布图在现代大数据分析环境下,数据可视化已经成为了一种强大的工具,其中最常用的可视化之一就是分布图。Python 作为一种强大的编程语言,在数据分析和可视化方面拥有强大的功能。Python 的分布图能够呈现数据的分布情况,同时让人们在数据分析过程中更直观地获得洞察力,并支持更准确的决策。本文将详细介绍 Python 分布图的相关知识和用法。

    2024-06-28
    47
  • 使用Python同时遍历两个列表,生成标题

    使用Python同时遍历两个列表,生成标题Python作为一种高级编程语言,有着广泛的应用场景。Python中提供了很多高效的方法来处理列表,而同时遍历两个列表,则是这些方法中常用的一种。在本文中,我们将介绍如何使用Python同时遍历两个列表,并生成对应的标题。

    2024-08-21
    28
  • XtraBackup_oracle rman备份与恢复

    XtraBackup_oracle rman备份与恢复1.wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.12/binary/redhat/6/x86_6…

    2023-02-12
    171
  • 高性能内存图数据库RedisGraph(二)[通俗易懂]

    高性能内存图数据库RedisGraph(二)[通俗易懂]这篇文章主要介绍用一下RedisGraph的历史和现状。 2018年5月,Redis Labs发布了RedisGraph的预览/测试版。6个月后,在Redis Labs和开源社区的开发者们的共同努力下

    2023-04-19
    175
  • 重新学习数据库(1)

    重新学习数据库(1)数据库学习 1.简单查询 2022-07-13 测试脚本: drop TABLE emp;drop TABLE dept;drop TABLE salgrade;create table dept(d

    2023-05-26
    127

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注