10g删除表没有进入回收站(二)
上一篇 / 下一篇 2008-03-19 19:54:18 / 个人分类:ORACLE
今天在删除一个表的时候以外发现被删除的表没有进入回收站。
定位导致具体问题的真正原因。
继续昨天的问题,根据重现问题的过程,怀疑问题可能与以下的一个或多个方法有关:分区表、表空间改名以及导入9i版本的表。
个人认为由于9i没有回收站的功能,因此9i导入的表很可能在某些情况下删除时不放入回收站中;而表空间改名也很可能是导致问题的原因,至于分区表,似乎可能性并不大,这个放到最后进行测试。
首先测试是否是表空间重命名造成的问题,这里仍然可以使用前一篇文章步骤中导出的文件,只需要在目标数据库中添加一个新的表空间,使得导入可以顺利完成。
SQL> CONN YANGTK/YANGTK@YTK102ITPUB个人空间9y%dpE j
已连接。
7RS(Et y3q0SQL> SELECT * FROM TAB;
TNAME TABTYPE CLUSTERIDITPUB个人空间m_%t#rO@5T/_*D
------------------------------ ------- ----------
"{x#G
gTf#{)j["vS0T_LOGMNR TABLE
\+e4DpJ [0`jQ.l0TEST_LOB TABLE
[^h t+C'r`1M0T2 TABLEITPUB个人空间z!L4w\#T$w
T1 TABLEITPUB个人空间$Fu A.JR OQ
T TABLE
SQL> SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;
TABLESPACE_NAMEITPUB个人空间+\INGE
KC1A c/xg
------------------------------
B
j&R;k Z N0\h0SYSTEM
s8m"nS9La0UNDOTBS1ITPUB个人空间"iTF/iw(T8Y8d.\
SYSAUX
LF4`'Vw1|| H0TEMP
%\2_*| JLS8s0USERS
RAhN3g/D.Rj#O9lX0EXAMPLEITPUB个人空间5k1Oa4g2Eh-c
YANGTK
ApB9BW!L2|)\0LOB_SPACE
已选择8行。
SQL> CREATE TABLESPACE TEST DATAFILE 'E:\ORACLE\ORADATA\YTK102\TEST01.DBF' SIZE
表空间已创建。
下面执行导入操作:
E:\>imp yangtk/yangtk@ytk102 file=t_partition.dmp tables=t_partition
Import: Release
Copyright (c) 1982, 2005, Oracle. All rights reserved.
2AXs_ gyW8zo0连接到: Oracle Database
wT0UE}0With the Partitioning, OLAP and Data Mining options
经由常规路径由EXPORT:V
警告:这些对象由TEST导出,而不是当前用户
已经完成ZHS16GBK字符集和AL16UTF16 NCHAR字符集中的导入ITPUB个人空间 O.WPHe
j
.正在将TEST的对象导入到YANGTKITPUB个人空间4`"zZZ2RL+E{&ob/N
C9]
.正在将TEST的对象导入到YANGTK
)VRm
MZ-y.t
V|b"|0. .正在导入分区 "T_PARTITION":"P1"导入了 0行
S:]~y8Y\z)G0. .正在导入分区 "T_PARTITION":"P2"导入了 0行ITPUB个人空间4YH6J)j%\"Z9Wd3r
成功终止导入,没有出现警告。
然后检查这个对象删除后是否进入回收站。
SQL> DROP TABLE T_PARTITION;
表已删除。
SQL> SELECT * FROM TAB;
TNAME TABTYPE CLUSTERIDITPUB个人空间.h `t0fm Ud2Z
------------------------------ ------- ----------ITPUB个人空间%?"jU4ryW
T_LOGMNR TABLEITPUB个人空间T.U8|2BA*d
f,R
TEST_LOB TABLEITPUB个人空间3{ZK#g*yMkY/H
T2 TABLEITPUB个人空间)A6}-l)]!B[
T1 TABLE
%Y%MGw
{z0T TABLE
既然没有执行RENAME TABLESPACE的操作,问题就出现了,说明这个问题应该和RENAME TABLESPACE没有关系,那么下面就可以排查是否和9i版本导入的表有关。
SQL> ALTER USER YANGTK DEFAULT TABLESPACE SYSTEM;
用户已更改。
SQL> CREATE TABLE T_PARTITION (ID NUMBER, NAME VARCHAR2(30))
3_"X*F0@c(V0 2 PARTITION BY RANGE (ID)
$qr9y`8SQ!dk+y0 3 (PARTITION P1 VALUES LESS THAN (100) TABLESPACE TEST,
,vH-`6Pir0 4 PARTITION P2 VALUES LESS THAN (200) TABLESPACE TEST);
表已创建。
在
E:\>exp yangtk/yangtk@ytk102 file=t_partition_
Export: Release
Copyright (c) 1982, 2005, Oracle. All rights reserved.
ITPUB个人空间o+u"vEaV3o{,F
连接到: Oracle Database
_.H
e,FQ-h8x0With the Partitioning, OLAP and Data Mining optionsITPUB个人空间a] LdF)\2N
F
已导出ZHS16GBK字符集和AL16UTF16 NCHAR字符集
即将导出指定的表通过常规路径...ITPUB个人空间e:Lq:L.F
. .正在导出表 T_PARTITIONITPUB个人空间D:O6JJ ~O
. .正在导出分区 P1导出了 0行ITPUB个人空间3K M O)pJk;K
. .正在导出分区 P2导出了 0行ITPUB个人空间m/b5L"l&imr
T
成功终止导出,没有出现警告。
删除分区表和对应的表空间:
SQL> DROP TABLE T_PARTITION;
表已删除。
SQL> PURGE TABLE T_PARTITION;
表已清除。
SQL> DROP TABLESPACE TEST INCLUDING CONTENTS AND DATAFILES;
表空间已删除。
现在为了确保
SQL> ALTER TABLESPACE YANGTK RENAME TO TEST;
表空间已更改。
执行导入操作:
E:\>imp yangtk/yangtk@ytk102 file=t_partition_
Import: Release
Copyright (c) 1982, 2005, Oracle. All rights reserved.
d+g} w/np0连接到: Oracle Database
With the Partitioning, OLAP and Data Mining options
经由常规路径由EXPORT:V
+}/d+EL0{*ts0已经完成ZHS16GBK字符集和AL16UTF16 NCHAR字符集中的导入
q~&o+[2Y:T
I"Ns0.正在将YANGTK的对象导入到YANGTKITPUB个人空间"k&\f9g(IL1j
.正在将YANGTK的对象导入到YANGTK
I
p*j:d2N
P0. .正在导入分区 "T_PARTITION":"P1"导入了 0行