日期:2014-05-16 浏览次数:20542 次
删除表空间的操作
一个用户要删除数据库的表空间,首先该用户要具备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 )
如果