我申请这个blog是为了督促自己,把自己平时的一些想法和思考结果保留下来。 本博客所有内容均为原创,如有转载请注明作者和出处

10g删除表没有进入回收站(一)

上一篇 / 下一篇  2008-03-18 20:25:33 / 个人分类:ORACLE

今天在删除一个表的时候以外发现被删除的表没有进入回收站。

 

 

在删除一个表的时候,由于忘记了加PURGE语句,随后准备将这个表PURGE掉,但是发现这个表并没有被放到回收站中:

SQL> DROP TABLE T_PARTITION;

表已删除。

SQL> PURGE TABLE T_PARTITION;ITPUB个人空间/pPa{-i{'Ou
PURGE TABLE T_PARTITION
Sv@:e0\0*
IV$za&XO7~ p0
1行出现错误
:ITPUB个人空间-{$uMs'|r"{
ORA-38307:
对象不在回收站中

SQL> SELECT * FROM TAB;

TNAME                          TABTYPE  CLUSTERID
\Yv7Wq+C-w.w0------------------------------ ------- ----------
0iq;y7oV6X@/KPs0T_LOGMNR                       TABLEITPUB个人空间F D\"}~
TEST_LOB                       TABLE
g1r#Uv?3fP V z3\0T2                             TABLEITPUB个人空间$oc.W)?%D(`VQo
T1                             TABLE
4f5A$V$y CS(]?0T                              TABLE

难道是我记错了,连接到了一个9i数据库

SQL> SELECT * FROM V$VERSION;

BANNERITPUB个人空间t'v+{8H Y
----------------------------------------------------------------ITPUB个人空间k'pE:S5X {2@Vl
Oracle Database10gEnterprise Edition Release10.2.0.1.0 - Prod
/] Wl8@_` t0PL/SQL Release 10.2.0.1.0 - Production
D3\1FUos,U0CORE    10.2.0.1.0      Production
LPZJ4F K2Xv/m0TNS for 32-bit Windows: Version 10.2.0.1.0 - ProductionITPUB个人空间7s9@]J*x
NLSRTL Version 10.2.0.1.0 - Production

尝试重现问题:

SQL> CREATE TABLE T_PARTITION (ID NUMBER, NAME VARCHAR2(30))ITPUB个人空间Pga0n!C&q5NNo
  2  PARTITION BY RANGE(ID)
9m&i-{'c}ni*i bU0  3  (PARTITION P1 VALUES LESS THAN (100) TABLESPACE YANGTK,
U9G3I(Z~ |N[,a0  4  PARTITION P2 VALUES LESS THAN (200) TABLESPACE YANGTK);

表已创建。

SQL> DROP TABLE T_PARTITION;

表已删除。

SQL> SELECT * FROM TAB;

TNAME                          TABTYPE  CLUSTERID
$r)s5qU2vg|%_0------------------------------ ------- ----------ITPUB个人空间 V2\O;A.i,P
T_LOGMNR                       TABLE
.j*Z$yf,k;~p @I0TEST_LOB                       TABLEITPUB个人空间r-dPl-_1]2@
T2                             TABLE
@,Q|CW8J?0T1                             TABLE
5T4qZY4Lgz5C0T                              TABLE
.H@Me.z2|.];F!p0BIN$mSf8xKbZTP2wa74Y3EFVRg==$0 TABLE

已选择6行。

SQL> PURGE TABLE T_PARTITION;

表已清除。

无法重现问题,看来和表本身有关,检查这个表是如何建立的,发现这个表和普通的表果然有不同之处。

这张表的由来可以参考:EXP转化表空间(二):http://yangtingkun.itpub.net/post/468/456284

这张表是从9204导出的分区表,然后通过10g导入数据库中,且在导入之前,修改了表空间的名称,在导入结束后,又将表空间的名称改了回来。

下面仿照这篇文章的过程,看看能否重现问题:

9204上建立一个表空间,并建立分区表:

SQL> CREATE TABLESPACE TEST DATAFILE 'F:\ORACLE\ORADATA\TEST1\TEST01.DBF' SIZE10M;

表空间已创建。

SQL> CREATE TABLE T_PARTITION (ID NUMBER, NAME VARCHAR2(30))
#db@Uv0a6`k F#TKj0  2  PARTITION BY RANGE (ID)ITPUB个人空间#ckM:qJO5WZ!B K
  3  (PARTITION P1 VALUES LESS THAN (100) TABLESPACE TEST,ITPUB个人空间:p }W4WY0fj
  4  PARTITION P2 VALUES LESS THAN (200) TABLESPACE TEST);

表已创建。

下面要将T_PARTITION迁移到另外一个数据库中,但是目标数据库中不存在TEST表空间:

F:\>exp test/test@test1 file=t_partition.dmp tables=t_partition

Export: Release9.2.0.4.0 - Production on星期日32 16:55:34 2008

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

ITPUB个人空间{e R7abI{].d
连接到: Oracle9i Enterprise Edition Release9.2.0.4.0 - Production
2{*RjnN w!}gL3Z0With the Partitioning, Oracle Label Security, OLAP and Oracle Data Mining option
Pl(S e XE0sITPUB个人空间o)gOI,R`X
JServer Release 9.2.0.4.0 - Production
m4Pf7J;l3Z,R0
已导出ZHS16GBK字符集和AL16UTF16 NCHAR字符集

即将导出指定的表通过常规路径...ITPUB个人空间1]-N"fBg
. .
正在导出表
                     T_PARTITION
8SCwH\`)v0. .
正在导出分区                              P1          0行被导出
ITPUB个人空间 y;l3o(oj \%e6w
. .
正在导出分区                              P2          0行被导出
H(l#Bs7w(};M4b0
在没有警告的情况下成功终止导出。

10g中进行下面的操作:

SQL> CONN YANGTK/YANGTK@YTK102
~ R#O+eR_0
已连接。ITPUB个人空间/_*WPH'JE6~_1^5`.Gm
SQL> SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;

TABLESPACE_NAME
#w c%t X ?$G0------------------------------ITPUB个人空间7YK.cr0T^I_
SYSTEMITPUB个人空间#y?:U2[o.|c
UNDOTBS1
? C"Ab8I iH0SYSAUX
fQW"x&Zq F0TEMP
~mNg9h$q(P7Oo0USERS
Z6gQH9fwx:o&bM0EXAMPLE
b0q O:` S#c0YANGTK
2b`,cn2j0LOB_SPACE

已选择8行。

SQL> ALTER TABLESPACE YANGTK RENAME TO TEST;

表空间已更改。

将表导入:

E:\>imp yangtk/yangtk@ytk102 file=t_partition.dmp tables=t_partition

Import: Release10.2.0.1.0 - Production on星期日32 17:11:55 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

ITPUB个人空间6u2Xe `j4g/Z Zv
连接到: Oracle Database10gEnterprise Edition Release10.2.0.1.0 - Production
e DP#IP7@ r ~0With the Partitioning, OLAP and Data Mining options

经由常规路径由EXPORT:V09.02.00创建的导出文件

警告:这些对象由TEST导出,而不是当前用户

已经完成ZHS16GBK字符集和AL16UTF16 NCHAR字符集中的导入
9t.J.b6V ?0.
正在将TEST的对象导入到YANGTK
5^0i [8{%\!g*i%J0.
正在将TEST的对象导入到
YANGTKITPUB个人空间(Z9d:dF;bd,Z;]#d
. .
正在导入分区              "T_PARTITION":"P1"导入了           0

RpFs0DG1i0. .
正在导入分区              "T_PARTITION":"P2"导入了           0ITPUB个人空间z`*g*m5d3J
成功终止导入,没有出现警告。

导入后通过修改表空间名称的方法将表空间名称修改会原来的名称:

SQL> ALTER TABLESPACE TEST RENAME TO YANGTK;

表空间已更改。

下面就是验证问题是否重现的关键之处了:

SQL> DESC T_PARTITIONITPUB个人空间D X0g(XeLd
 
名称                                     是否为空?类型ITPUB个人空间&Ps1p$`0^3]X/X
 ----------------------------------------- -------- -----------------ITPUB个人空间_oP5{$I\v1{"k
 ID                                                 NUMBER
IxLy-ut a0 NAME                                               VARCHAR2(30)

SQL> DROP TABLE T_PARTITION;

表已删除。

SQL> SELECT * FROM TAB;

TNAME                          TABTYPE  CLUSTERIDITPUB个人空间^?^,i A$e
------------------------------ ------- ----------
$@N} V-_G8f0T_LOGMNR                       TABLEITPUB个人空间9^ qK:[x*hgT
TEST_LOB                       TABLE
0O~w:[tF0T2                             TABLE
W e#z)si|U'f0T1                             TABLEITPUB个人空间_ E7@*L9@
T                              TABLE

SQL> PURGE TABLE T_PARTITION;
%?%]@0wQ%^!Qs jl MV0PURGE TABLE T_PARTITIONITPUB个人空间]4U,m-id#oo B'pC
*ITPUB个人空间1M!lD'KF)p)]&U
1行出现错误:
2W0RI`8k[!y7IFx+Fv0ORA-38307:
对象不在回收站中

问题重现了,解决这个问题必须先要重现问题,否则无法找到问题的真正原因,下面就可以通过各种方法寻找这个问题的真正原因。

 


TAG:

引用 删除 Kamus   /   2008-03-23 17:40:16
让老虎去改。。。
yangtingkun的个人空间 引用 删除 yangtingkun   /   2008-03-19 11:07:39
to Kamus
rss的输出我这里恐怕没有办法设置吧
yangtingkun的个人空间 引用 删除 yangtingkun   /   2008-03-19 11:05:14
回楼上两位,这两天不舒服,在家休息,所以一个问题就分开了写了。
Chanel [K] 引用 删除 Kamus   /   2008-03-19 02:52:09
另外,你这里的rss输出简直是太糟糕了。。。google reader里面完全没法儿看
Chanel [K] 引用 删除 Kamus   /   2008-03-19 02:49:13
等着老杨继续找问题真正原因
yxyup's footprint 引用 删除 yxyup   /   2008-03-18 21:39:31
问题是找到了,但最终说明什么呢?

1.import进来的分区表drop时不进recyclebin?
2.还是和exp/imp前后修改表空间名字有关?
3.还是其他?
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar