开发者社区> lfreeali> 正文

[20180130]sqlplus字段显示问题.txt

简介: [20180130]sqlplus字段显示问题.txt --//昨天下班别人问的问题,就是drop table后使用flashback table恢复,为什么不顺带把索引名字给修改回来.
+关注继续查看

[20180130]sqlplus字段显示问题.txt

--//昨天下班别人问的问题,就是drop table后使用flashback table恢复,为什么不顺带把索引名字给修改回来.
--//我解答也许避免重名问题吧.不过我在跟踪时发现一些细节,做一些简单探究.

1.环境:
SCOTT@book> @ &r/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

create table deptx as select * from dept;
create index pk_deptx on deptx(deptno);
drop table deptx ;

SCOTT@book> select OBJ#,OWNER#,ORIGINAL_NAME,DROPSCN,FLAGS from sys.recyclebin$;
        OBJ#       OWNER# ORIGINAL_NAME                         DROPSCN        FLAGS
------------ ------------ -------------------------------- ------------ ------------
       91061           83 PK_DEPTX                          13278152690           18
       91060           83 DEPTX                             13278152694           30
--//可以发现原始的对象名,oracle是知道的.

--//我在做一些跟踪时,发现执行如下:
SCOTT@book> show recyc
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
DEPTX            BIN$Y/SRPk++5tPgU05kqMDL8Q==$0 TABLE        2018-01-30:08:37:28

--//执行做了过滤实际上执行如下,只不过加了where条件,不显示索引.(我取消了)

SELECT ORIGINAL_NAME ORIGNAME_PLUS_SHOW_RECYC
       ,OBJECT_NAME OBJECTNAME_PLUS_SHOW_RECYC
       ,TYPE OBJTYPE_PLUS_SHOW_RECYC
       ,DROPTIME DROPTIME_PLUS_SHOW_RECYC
  FROM USER_RECYCLEBIN ;

ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
PK_DEPTX         BIN$Y/SRPk+95tPgU05kqMDL8Q==$0 INDEX        2018-01-30:08:37:28
DEPTX            BIN$Y/SRPk++5tPgU05kqMDL8Q==$0 TABLE        2018-01-30:08:37:28

--//你可以注意ORIGNAME_PLUS_SHOW_RECYC实际上显示的是ORIGINAL NAME(中间有空格).很明显登录sqlplus时oracle定义了ORIGNAME_PLUS_SHOW_RECYC.
SCOTT@book> col ORIGNAME_PLUS_SHOW_RECYC
COLUMN   origname_plus_show_recyc ON
HEADING  'ORIGINAL NAME'
FORMAT   a16

--//如果你使用toad,就没有上面的显示字段名.
--//问题是这个定义写在那里,那个文件,做一个简单探究.

$ strings $(which sqlplus) | grep -i ORIGNAME_PLUS_SHOW_RECYC
$ strings $(which oracle)  | grep -i ORIGNAME_PLUS_SHOW_RECYC
--//没有sqlplus.oracle执行文件中.

$ strace -e trace=open -o /tmp/xx.out sqlplus scott/book

$ egrep -v "No such file or directory" /tmp/xx.out | cut -d\" -f2 | xargs -I {} strings {} | grep -i ORIGNAME_PLUS_SHOW_RECYC
origname_plus_show_recyc FORMAT a16 HEADING 'ORIGINAL NAME'
SELECT ORIGINAL_NAME ORIGNAME_PLUS_SHOW_RECYC,OBJECT_NAME OBJECTNAME_PLUS_SHOW_RECYC,TYPE OBJTYPE_PLUS_SHOW_RECYC,DROPTIME DROPTIME_PLUS_SHOW_RECYC FROM USER_RECYCLEBIN WHERE CAN_UNDROP='YES'
COLUMN origname_plus_show_recyc   FORMAT a16 HEADING 'ORIGINAL NAME'
column origname_plus_show_recyc   FORMAT a16 HEADING 'ORIGINAL NAME'

--//无法知道是那个文件.修改如下:
$ egrep -v "No such file or directory" /tmp/xx.out | cut -d\" -f2 | xargs -I {} strings --print-file-name {} | grep -i ORIGNAME_PLUS_SHOW_RECYC
/u01/app/oracle/product/11.2.0.4/dbhome_1/lib/libsqlplus.so: origname_plus_show_recyc FORMAT a16 HEADING 'ORIGINAL NAME'
/u01/app/oracle/product/11.2.0.4/dbhome_1/lib/libsqlplus.so: SELECT ORIGINAL_NAME ORIGNAME_PLUS_SHOW_RECYC,OBJECT_NAME OBJECTNAME_PLUS_SHOW_RECYC,TYPE OBJTYPE_PLUS_SHOW_RECYC,DROPTIME DROPTIME_PLUS_SHOW_RECYC FROM USER_RECYCLEBIN WHERE CAN_UNDROP='YES'


--//很明显在使用sqlplus是调用了/u01/app/oracle/product/11.2.0.4/dbhome_1/lib/libsqlplus.so.里面定义了origname_plus_show_recyc的显示
--//实际上链接http://blog.itpub.net/267265/viewspace-2146887/.
--//VALUE_COL_PLUS_SHOW_SPPARAM应该也是存在这个文件里面的.

$ egrep -v "No such file or directory" /tmp/xx.out | cut -d\" -f2 | xargs -I {} strings --print-file-name {} | grep -i VALUE_COL_PLUS_SHOW_SPPARAM
/u01/app/oracle/product/11.2.0.4/dbhome_1/lib/libsqlplus.so: VALUE_COL_PLUS_SHOW_SPPARAM FORMAT a28 word_wrapped HEADING VALUE
/u01/app/oracle/product/11.2.0.4/dbhome_1/lib/libsqlplus.so: SELECT SID SID_COL_PLUS_SHOW_SPPARAM, NAME NAME_COL_PLUS_SHOW_SPPARAM, TYPE, DISPLAY_VALUE VALUE_COL_PLUS_SHOW_SPPARAM FROM V$SPPARAMETER WHERE UPPER(NAME) LIKE UPPER(:NMBIND_SHOW_OBJ) ORDER BY NAME_COL_PLUS_SHOW_SPPARAM,VALUE_COL_PLUS_SHOW_SPPARAM
/u01/app/oracle/product/11.2.0.4/dbhome_1/sqlplus/admin/zzlogin.sql: column value_col_plus_show_spparam format a100
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--//最后调用我定义的zzlogin.sql,修改显示宽度.

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
[20180628]显示bbed x命令格式.txt
[20180628]显示bbed x命令格式.txt --//测试经常使用bbed x命令显示数据,里面的格式每次输入必须显示表结构才方便输入. --//如果字段很多非常麻烦,写一个脚本完成这个工作.
1226 0
SQLLDR——CTL文件:字段设置
position 关键字用来指定列的开始和结束位置   position(m:n):指从第 m 个字符开始截止到第 n 个字符作为列值   position(*+2:15):直接指定数值的方式叫做绝对偏移量,如果使用*号,则为相对偏移量,表示上一个字段哪里结束,这次就哪里开始,相对便宜量也可以再做运算。
1709 0
[20171218]字段命名与oracle关键字.txt
[20171218]字段命名与oracle关键字.txt --//再次提醒开发应该在数据库字段命令上避开oracle关键字(保留字).避免出现混乱. SCOTT@book> @ &r/ver1 PORT_STRING         ...
856 0
[20161021]关于sqlplus sqlprompt设置.txt
[20161021]关于sqlplus sqlprompt设置.txt --别人的服务器没有设置sqlprompt,随手设置一下,发现一些问题。 --从网上抄了下来: SYS@test> set sqlprompt "_user@_connect_identifier>" SYS@_connect_identifier> --居然变成这样。
1129 0
[20160806]sqlplus 1000行自动提交.txt
[20160806]sqlplus 1000行自动提交.txt --同事要求我提交的插入脚本要求1000行有1个提交. --当时我自己也没有多想,因为toad有一个功能可以直接实现这个功能.
803 0
[20160303]显示bbed x命令格式.txt
[20160303]显示bbed x命令格式.txt --使用bbed显示数据信息时要选对类型,随手写一个脚本 prompt PROMPT DISPLAY BBED EXAMINE(X) FORMAT prompt SELECT REPLACE (wmsys.
861 0
[20150304]关于sql格式化问题.txt
[20150304]关于sql格式化问题.txt --今天看书学习了sql格式化技巧。 --我以前遇到的sql语句很长,喜欢抽取在toad下格式化。一般格式化成如下。
722 0
[20141216]sqlplus的set appinfo.txt
[20141216]sqlplus的set appinfo.txt --今天学习了sqlplus的set appinfo命令,可以设置module参数。做一个简单记录。
603 0
[20140820]显示存储过程的参数.txt
[20140820]显示存储过程的参数.txt --上午写一个显示存储过程参数的例子,便于自己以后使用。 --主要是desc显示的信息太大,查看不是很方便。
556 0
+关注
lfreeali
熟悉oracle数据库性能优化,rman备份,数据库恢复技术.
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载