日期:2014-05-16 浏览次数:20545 次
一个用户要删除数据库的表空间,首先该用户要具备drop tablespace的权限
在当前用户下执行以下语句来查询确认
?
select a2.username,a1.privilege
from dba_sys_privs a1 , user_role_privs a2
where a1.privilege = 'DROP TABLESPACE' and a1.grantee =a2.granted_role
?
SQL> conn xxx/xxx
已连接。
SQL> select a2.username,a1.privilege
2 from dba_sys_privs a1 , user_role_privs a2
3 where a1.privilege = 'DROP TABLESPACE' and a1.grantee =a2.granted_role;
?
USERNAME PRIVILEGE
------------------------------ ----------------------------------------
WULW DROP TABLESPACE
?
如果没有 drop tablespace,请先用更高级的用户(如sys)给予授权
?
SQL> conn sys/oracle@ibm as sysdba;
已连接。
SQL> grant drop tablespace to wulw;
授权成功。
?
以上前提条件确认完,下面开始实验.
确认已有的表空间
SQL> select a.TS# ,a.NAME , b.NAME
2 from v$tablespace a,v$datafile b
3 where a.TS# = b.TS#;
TS# NAME NAME
0 SYSTEM L:\ORACLE\ORADATA\IBM\SYSTEM01.DBF
1 UNDOTBS1 L:\ORACLE\ORADATA\IBM\UNDOTBS01.DBF
3 CWMLITE L:\ORACLE\ORADATA\IBM\CWMLITE01.DBF
4 DRSYS L:\ORACLE\ORADATA\IBM\DRSYS01.DBF
5 EXAMPLE L:\ORACLE\ORADATA\IBM\EXAMPLE01.DBF
6 INDX L:\ORACLE\ORADATA\IBM\INDX01.DBF
7 ODM L:\ORACLE\ORADATA\IBM\ODM01.DBF
8 TOOLS L:\ORACLE\ORADATA\IBM\TOOLS01.DBF
9 USERS L:\ORACLE\ORADATA\IBM\USERS01.DBF
10 XDB L:\ORACLE\ORADATA\IBM\XDB01.DBF
12 TDATA_01 L:\ORACLE\ORADATA\IBM\TDATA_01.ORA
14 TINDEX_01 L:\ORACLE\ORADATA\IBM\TINDEX_01.ORA
已选择12行。(为看起来直观,上面的显示作了手工格式化)
?
创建新的测试表空间:
SQL> create tablespace mytbs01
2 logging
3 datafile 'L:\ORACLE\ORADATA\IBM\mytbs01.dbf' size 10m REUSE ;
表空间已创建。
SQL> CREATE TABLESPACE "MYTBS02"
2 LOGGING
3 DATAFILE 'L:\ORACLE\ORADATA\IBM\MYTBS02.dbf' SIZE 10M REUSE ;
表空间已创建。
?
如果表空间里面没有任何数据对象,可以直接删除.
SQL> drop tablespace mytbs01;
表空间已丢弃。
?
这种删除方式相关的数据文件仍然存在于磁盘上.
(可以进入数据文件所在目录L:\ORACLE\ORADATA\IBM 进行查看 MYTBS01.DBF )
如果表空间里面含有数据对象,那么该表空间就不能像上面那样做直接删除了.
SQL> create tablespace mytbs01
2 logging
3 datafile 'L:\ORACLE\ORADATA\IBM\mytbs01.dbf' size 10m REUSE;
表空间已创建。
SQL> create table test(mobile number(13))
2 tablespace mytbs01;
表已创建。
SQL> drop tablespace mytbs01;
drop tablespace mytbs01
*
ERROR 位于第 1 行:
ORA-01549: 表空间非空,请使用 INCLUDING CONTENTS 选项
?
看到了吧,提示ora-01549错误.