日期:2014-05-16  浏览次数:20556 次

删除表空间的操作

删除表空间的操作

一个用户要删除数据库的表空间,首先该用户要具备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 from dba_sys_privs a1 , user_role_privs a2
2 where a1.privilege = 'DROP TABLESPACE'
3 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 from v$tablespace a,v$datafile b
2 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 )


如果