sqlplus下show recycebin的小问题
sqlplus下执行show recycebin遇到一些疑问,通过测试慢慢展开问题的探究.
1.环境:
SCOTTtest01p> ver1
PORT_STRING VERSION BANNER CON_ID
IBMPC/WIN_NT64-9.1.0 12.2.0.1.0 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 0
SCOTTtest01p> create table tx as select * from dept ;
Table created.
SCOTTtest01p> create table ty as select * from dept ;
Table created.
2.测试:
SCOTTtest01p> show recyclebin
SCOTTtest01p> drop table tx ;
Table dropped.
SCOTTtest01p> drop table ty ;
Table dropped.
SCOTTtest01p> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
TX BIN$T7f14az+TMuluJgGIOXiPA==$0 TABLE 2021-07-21:20:33:43
TY BIN$5quvB25qT7eMZtdPExTTZg==$0 TABLE 2021-07-21:20:33:45
--//OK正确.在结尾加入分号看看.
SCOTTtest01p> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
TX BIN$T7f14az+TMuluJgGIOXiPA==$0 TABLE 2021-07-21:20:33:43
TY BIN$5quvB25qT7eMZtdPExTTZg==$0 TABLE 2021-07-21:20:33:45
--//OK正确.在结尾加入空格(tab键)与分号看看.
SCOTTtest01p> show recyclebin ;
--//显示为空,为什么?
3.使用toad自带的SQL Tracker跟踪:
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'
AND ORIGINAL_NAME = UPPER(:NMBIND_SHOW_OBJ)
ORDER BY ORIGINAL_NAME,DROPTIME DESC,OBJECT_NAME;
--//为了美观,我做了格式化处理.你可以发现下划线带入参数:NMBIND_SHOW_OBJ.很明显我在分号前一个空格的情况下,
--//带入的参数为空,这样就没有显示.
SCOTTtest01p> show recyclebin tx
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
TX BIN$T7f14az+TMuluJgGIOXiPA==$0 TABLE 2021-07-21:20:33:43
SCOTTtest01p> show recyclebin tx ;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
TX BIN$T7f14az+TMuluJgGIOXiPA==$0 TABLE 2021-07-21:20:33:43
--//你可以发现带入游戏参数的情况下显示正确.如果你执行show recyclebin;执行的sqlplus如下:
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'
ORDER BY ORIGINAL_NAME,DROPTIME DESC,OBJECT_NAME
文章图片来源:游戏
--//没有绑定变量,说明我的判断正确.
4.继续,以上测试在windows下进行,如果linux呢?
SCOTTbook> 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
SCOTTbook> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
TY BIN$x5jlVlgTFx3gU05kqMAqNg==$0 TABLE 2021-07-21:09:20:02
SCOTTbook> show recyclebin ;
ORA-24550: signal received: [si_sig游戏ttp://www.cungun.comno=11] [si_errno=0] [si_code=1] [si_int=33260000] [si_ptr=0x1fb81e0] [si_addr=(nil)]
kpedbg_dmp_stack()+362
<-kpeDbgCrash()+192
<-kpeDbgSignalHandler()+119
<-skgesig_sigactionHandler()+218
<-__sighandler()
<-afiwsk()+544
<-afinsym()+80
<-afishosop()+1930
<-afisho()+516
<-aficmd()+2714
<-aficfd()+2669
<-aficdr()+138
<-afidrv()+4237
<-frame_dummy()+123
<-__libc_start_main()+244
--//注:我做了折行处理,不然太长了。
rlwrap: warning: sqlplus crashed, killed by SIGSEGV.
rlwrap itself has not crashed, but for transparency,
it will now kill itself (without dumping core) with the same signal
warnings can be silenced by the --no-warnings (-n) option
Segmentation fault
--//在分号前有空格的情况下,连接进程直接crash.
--//使用查询,拷贝和粘贴如下:
kpedbg_dmp_stack()+362
<-kpeDbgCrash()+192
<-kpeDbgSignalHandler()+119
<-skgesig_sigactionHandler()+218
<-__sighandler()
<-afiwsk()+544
<-afinsym()+80
<-afishosop()+1930
<-afisho()+516
<-aficmd()+2714
<-aficfd()+2669
<-aficdr()+138
<-afidrv()+4237
<-frame_dummy()+123
<-__libc_start_main()+244
Parsed stack:
Discovered stack type: short stack