天达云 科技型企业
|
亚太互联网络信息中心(APNIC)成员
|
注册免费体验
[
加载中...
] - [
免费注册
]
|
用户中心
|
在线充值
|
投诉举报
首页
域名注册
云虚拟主机
云服务器
网站模板
网站制作
渠道合作
帮助中心
天达云首页
>
互联网学习教程
>
关系型数据库
> Oracle不正规操作导致drop表空间drop用户报错ora38301(记录,未解决)
Oracle不正规操作导致drop表空间drop用户报错ora38301(记录,未解决)
更新:HHH 时间:2023-1-7
操作系统版本:
[
oracle
@
oracle trace
]
$
uname
-
a
Linux oracle
.
example
.
com 2
.
6
.
32
-
431
.
el6
.
x86_64 #1 SMP Sun Nov 10 22
:
19
:
54 EST 2013 x86_64 x86_64 x86_64 GNU
/
Linux
[
oracle
@
oracle trace
]
$
lsb_release
-
a
LSB Version
:
:
base
-
4
.
0
-
amd64
:
base
-
4
.
0
-
noarch
:
core
-
4
.
0
-
amd64
:
core
-
4
.
0
-
noarch
:
graphics
-
4
.
0
-
amd64
:
graphics
-
4
.
0
-
noarch
:
printing
-
4
.
0
-
amd64
:
printing
-
4
.
0
-
noarch
Distributor ID
:
RedHatEnterpriseServer
Description
:
Red Hat Enterprise Linux Server
release
6
.
5
(
Santiago
)
Release
:
6
.
5
Codename
:
Santiago
数据库版本:
SYS
@
proc
>
select
*
from
v$version
where
rownum
=
1
;
BANNER
--------------------------------------------------------------------------------
Oracle
Database
11g Enterprise Edition
Release
11
.
2
.
0
.
4
.
0
-
64bit Production
环境构造:
SYS
@
proc
>
create
table
t
(
id int
)
;
Table
created
.
SYS
@
proc
>
insert
into
t
values
(
1
)
;
1
row
created
.
SYS
@
proc
>
insert
into
t
select
*
from
t
;
1
row
created
.
SYS
@
proc
>
/
2
rows
created
.
.
.
.
省略相同步骤
.
.
.
SYS
@
proc
>
/
1048576
rows
created
.
SYS
@
proc
>
commit
;
Commit complete
.
SYS
@
proc
>
select
BYTES
/
1024
/
1024 mb
from
dba_segments
where
owner
=
'SYS'
and
segment_name
=
'T'
;
MB
----------
25
SYS
@
proc
>
create
tablespace
abc datafile
'/u01/app/oracle/oradata/proc/abc01.dbf'
size
26m
;
Tablespace
created
.
SYS
@
proc
>
create
user
km
identified
by
oracle account unlock
;
User
created
.
SYS
@
proc
>
grant
connect
,
create
table
to
km
;
Grant
succeeded
.
SYS
@
proc
>
alter
user
km quota 26m
on
abc
;
User
altered
.
SYS
@
proc
>
select
AUTOEXTENSIBLE
from
dba_data_files
where
tablespace_name
=
'ABC'
;
AUT
---
NO
SYS
@
proc
>
create
table
km
.
t
tablespace
abc
as
select
*
from
t
;
create
table
km
.
t
tablespace
abc
as
select
*
from
t
*
ERROR at line 1
:
ORA
-
01652
:
unable
to
extend temp segment
by
128
in
tablespace
ABC
SYS
@
proc
>
col
file_name
for
a50
SYS
@
proc
>
select
file_name
from
dba_data_files
;
FILE_NAME
--------------------------------------------------
/
u01
/
app
/
oracle
/
oradata
/
proc
/
test01
.
dbf
/
u01
/
app
/
oracle
/
oradata
/
proc
/
example01
.
dbf
/
u01
/
app
/
oracle
/
oradata
/
proc
/
users01
.
dbf
/
u01
/
app
/
oracle
/
oradata
/
proc
/
abc01
.
dbf
/
u01
/
app
/
oracle
/
oradata
/
proc
/
sysaux01
.
dbf
/
u01
/
app
/
oracle
/
oradata
/
proc
/
system01
.
dbf
/
u01
/
app
/
oracle
/
oradata
/
proc
/
undotbs2_1
.
dbf
/
u01
/
app
/
oracle
/
oradata
/
proc
/
undotbs2_2
.
dbf
8
rows
selected
.
SYS
@
proc
>
alter
database
datafile
'/u01/app/oracle/oradata/proc/abc01.dbf'
resize 30m
;
Database
altered
.
SYS
@
proc
>
create
table
km
.
t
tablespace
abc
as
select
*
from
t
;
Table
created
.
SYS
@
proc
>
conn km
/
oracle
Connected
.
KM
@
proc
>
drop
table
t
;
Table
dropped
.
KM
@
proc
>
show
recycle
;
ORIGINAL NAME RECYCLEBIN NAME
OBJECT
TYPE
DROP
TIME
---------------- ------------------------------ ------------ -------------------
T BIN$Q38bmJwFDYXgU28cqMDtew
=
=
$
0
TABLE
2016
-
12
-
13
:
07
:
03
:
11
KM
@
proc
>
conn
/
as
sysdba
Connected
.
SYS
@
proc
>
delete
from
recyclebin$
;
--不正规操作,正确应该在km用户下执行purge table t或者purge table "
BIN$Q38bmJwFDYXgU28cqMDtew
=
=
$
0
"
1
row
deleted
.
SYS
@
proc
>
commit
;
Commit complete
.
SYS
@
proc
>
conn km
/
oracle
Connected
.
KM
@
proc
>
show
recycle
;
KM
@
proc
>
conn
/
as
sysdba
Connected
.
SYS
@
proc
>
create
table
km
.
t
tablespace
abc
as
select
*
from
t
;
create
table
km
.
t
tablespace
abc
as
select
*
from
t
*
ERROR at line 1
:
ORA
-
01536
:
space quota exceeded
for
tablespace
'ABC'
SYS
@
proc
>
alter
user
km quota unlimited
on
abc
;
User
altered
.
SYS
@
proc
>
create
table
km
.
t
tablespace
abc
as
select
*
from
t
;
create
table
km
.
t
tablespace
abc
as
select
*
from
t
*
ERROR at line 1
:
ORA
-
01652
:
unable
to
extend temp segment
by
128
in
tablespace
ABC --这里可以看出虽然在km用户执行show recycle已经是空的,但是真正的空间并没被释放。
SYS
@
proc
>
drop
tablespace
abc
including
contents
and
datafiles
;
drop
tablespace
abc
including
contents
and
datafiles
*
ERROR at line 1
:
ORA
-
00604
:
error occurred at recursive SQL
level
1
ORA
-
38301
:
can
not
perform DDL
/
DML over objects
in
Recycle Bin
SYS
@
proc
>
drop
user
km
cascade
;
drop
user
km
cascade
*
ERROR at line 1
:
ORA
-
00604
:
error occurred at recursive SQL
level
1
ORA
-
38301
:
can
not
perform DDL
/
DML over objects
in
Recycle Bin
正规清理回收站的表:
1、使用 PURGE TABLE original_table_name; 这里的 original_table_name 表示未 drop 以 前的名称
2、使用 PURGE TABLE recyclebin_object_name; 这里的 recyclebin_object_name 表示回 收站中的对象名称
3、使用 PURGE TABLESPACE tablespace_name 从指定的表空间中清除所有的丢弃对象
4、使用 PURGE TABLESPACE tablespace_name USER user_name 从回收站中清除属 于某个特定用户的所有丢弃对象。
5、DROP USER user_name cascade 直接删除指定用户及其所属的全部对象,也就是说, DROP USER 命令会绕过回收站进行直接删除。
6、使用 PURGE RECYCLEBIN 命令清除用户自己的回收站
7、PURGE DBA_RECYCLEBIN 从所有用户的回收站清除所有对象
假如发生了这个场景,应该怎么去解决?
返回关系型数据库教程...
新手上路
全站内容搜索
互联网教程
域名购买流程
域名解析方法
产品管理
域名解析管理
云虚拟主机管理
数据库 . 管理
云服务器. 管理
支付方式
在线支付
付款方式
银联付款
发票开具
关于我们
关于我们
公司资质
代理加盟
代理登录
400-837-6568
7 * 24小时全天全国服务热线400电话