- 浏览: 52615 次
- 性别:
- 来自: 北京
最新评论
-
lqwforever:
不错,支持一下
redhat linux卸载自带的Java1.4.2安装JDK6 -
liumiao2011:
keepgoing 写道java代码也可以格式化还是只能格式化 ...
让Editplus自动格式化js、css、html。。。 -
keepgoing:
java代码也可以格式化还是只能格式化HTML/CSS、js代 ...
让Editplus自动格式化js、css、html。。。
一个用户要删除数据库的表空间,首先该用户要具备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错误.
如果要删除该表空间,可加上including contents子句.
如: drop tablespace mytbs01 including contents ;
如果想在删除表空间的同时也删除掉对应的数据文件,那就在上面的语句最后加上 and datafiles
成为 drop tablespace mytbs01
including contents and datafiles;
SQL> drop tablespace mytbs01
2 including contents and datafiles;
表空间已丢弃。
要注意的一点是,如果drop tablespace语句中含有datafiles,那datafiles之前必须有contents关键字,不然会提示ora-01911错误:
SQL> drop tablespace mytbs02
2 including datafiles;
including datafiles
*
ERROR 位于第 2 行: ORA-01911: 需要 CONTENTS 关键字
接下来的实验是:
如果表空间A中有一个表ta,表空间B中有一个表tb,而ta与tb有着某种关系,那么是否可以按上面的方法直接干掉表空间A和表空间B呢?
看试验过程:
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> create table test(mobile number(13))
2 tablespace mytbs01;
表已创建。
SQL> create table test2(mobile number(13))
2 tablespace mytbs02;
表已创建。
SQL> alter table TEST2
2 add primary key (mobile);
表已更改。
SQL> ALTER TABLE test
2 ADD CONSTRAINT FOREIGN con_mobile REFERENCES test2(mobile);
表已更改。
以上的意思是:在表空间mytbs01上创建表test,在表空间mytbs02上创建表test2,两个表test和test2以外键相关联,test2为主表,test为从表.
现在尝试能否用上面的语句直接干掉mytbs02:
SQL> drop tablespace mytbs02;
drop tablespace mytbs02
*
ERROR 位于第 1 行: ORA-01549: 表空间非空,请使用 INCLUDING CONTENTS 选项
SQL> drop tablespace mytbs02
2 including contents;
drop tablespace mytbs02
*
ERROR 位于第 1 行: ORA-02449: 表中的唯一/主键被外部关键字引用
SQL> drop tablespace mytbs02
2 including contents and datafiles;
drop tablespace mytbs02
* ERROR 位于第 1 行: ORA-02449: 表中的唯一/主键被外部关键字引用
可见主表所在表空间因为表与其他空间上的表有联系,所以没办法直接删掉.
那mytbs01表空间能不能干掉?请看:
SQL> drop tablespace mytbs01
2 including contents and datafiles;
表空间已丢弃。
SQL> drop tablespace mytbs02
2 including contents and datafiles ;
表空间已丢弃。
嘿嘿,从表test所在的表空间mytbs01能直接干掉,而且从表的表空间干掉后,主表test2所在的表空间mytbs02也能干掉了!
那么,如果我只想干掉主表所在的表空间,又不想干掉从表所在的表空间那怎么办?
很简单,最笨的一招就是想把两个表的关联关系给灭了,(在上面的两个表中,就是把那个外键给删了)再把主表表所在的表空间删了.但这种方法可不太现实,如果一个表空间里有成百上千个对象与别的表空间里的对象有联系,总不能一个一个去"解铃"吧? 即使你本人就是"系铃"人,估计你也要"解"到郁闷死!
一个更简单的方法当然是级联删除了!
drop tablespace mytbs02
including contents and datafiles cascade constraints
试验如下:
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> create table test(mobile number(13))
2 tablespace mytbs01;
表已创建。
SQL> create table test2(mobile number(13))
2 tablespace mytbs02;
表已创建。
SQL> alter table TEST2
2 add primary key (mobile);
表已更改。
SQL> ALTER TABLE test
2 ADD CONSTRAINT FOREIGN con_mobile REFERENCES test2(mobile);
表已更改。
SQL> drop tablespace mytbs02
2 including contents and datafiles cascade constraints;
表空间已丢弃。
OK!正常搞定!
发表评论
-
查看ORACLE实例名和服务名的方法(AIX系统下)
2013-09-05 12:53 1014数据库命令: sqlplus "/as sysd ... -
JSP禁用缓存常用方法
2013-05-05 12:59 6341.客户端缓存要在<head>中加入类似如 ... -
安装eclipse插件:JadClipse
2013-04-23 13:28 8861.下载反编译工具jad.exe,放在eclipse使用的 ... -
eclipse的JavaWeb工程.classpath设置
2013-03-17 12:21 1198<?xml version="1.0& ... -
tomcat注册成windows服务
2012-12-07 17:28 7611.进入tomcat目标下的bin目录里,执行ser ... -
查看oracle的sid
2012-12-07 13:44 1007有时候我们在tnsnames.ora配了一个连接串,用plsq ... -
调试plsql的存储过程
2012-12-05 21:37 891先右键add debug information 再右键te ... -
如何删除火狐插件
2012-11-25 22:19 668在地址栏输入about:config ,在搜索框中搜索plug ... -
windows查看端口占用情况
2012-11-19 00:47 7821.查看所有的端口占用情况 C:\>netsta ... -
在移动窗口的过程中显示整个窗口
2012-09-09 22:21 652修改注册表[HKEY_CURRENT_USER\CONTROL ... -
删除svn信息
2012-06-07 22:17 1161一、eclipse插件删除svn信息 右键点击项 ... -
Solaris下启动Oracle步骤
2012-05-22 11:08 911先打开一个终端,如果你是以root用户登录的系统 1。 ... -
DBLINK详解
2012-05-21 11:01 9241.创建dblink语法: CREATE [PUBLI ... -
linux命令
2012-05-02 18:52 741解压缩 unzip XXX.tar/zip 注意 ... -
redhat linux卸载自带的Java1.4.2安装JDK6(rpm)
2012-05-02 18:35 1134一.jdk1.4卸载 由于redhat Enterpr ... -
[转]“Microsoft Office Word已停止工作”解决方法
2012-03-27 15:14 1091方法一、双击打开“计算机”在右上方的搜索框中输入“Nor ... -
svn插件
2012-03-26 19:35 2528在线安装(比较慢) 类似: name:subclipse ... -
[转]区分Eclipse中的两种JRE
2012-03-22 00:03 1044Eclipse用到两种JRE,一是 ... -
redhat linux卸载自带的Java1.4.2安装JDK6
2012-03-12 16:58 2895一、卸载jdk1.4 由于Redhat Enterpr ... -
让Editplus自动格式化js、css、html。。。
2012-02-19 16:13 1444本人一般用editp ...
相关推荐
3. **purge操作**:Purge操作是删除已删除行的一种方法,通常用于临时表空间和Undo表空间。执行`PURGE`语句可以立即释放被删除的对象或行,而不是等待下次DML操作或数据库维护任务。 4. **DBMS_SCHEDULE包**:...
在Oracle数据库管理中,删除表空间数据文件是一项关键操作,涉及到数据的安全性和系统的稳定性。本文将详细介绍如何正确地删除Oracle表空间数据文件,探讨OFFLINE和OFFLINE DROP的区别,以及在操作系统层面删除数据...
Oracle 表空间操作详解 Oracle 表空间操作详解是数据库管理员在设计和管理 Oracle 数据库时的一项重要任务。通过表空间,可以控制用户对磁盘空间的使用,限制用户可以使用的磁盘空间大小,避免硬盘空间耗竭。 一、...
删除表空间是一项严肃的操作,因为它不仅会影响到表空间内的所有对象,还可能对数据库的整体性能产生影响。 1. **准备工作** 在删除表空间之前,你需要确保该表空间内没有任何活动的对象。这包括检查是否有正在运行...
在Oracle数据库管理中,创建与删除表空间以及用户授权是非常重要的操作。本文将详细介绍如何在Oracle环境下进行这些操作,包括创建表空间、为用户分配权限、以及如何删除表空间和用户。 ### 一、创建表空间 #### ...
本文将深入解析Oracle表空间的操作,包括通过图形界面和SQL命令进行的创建、修改和删除过程。 ### 创建表空间 #### 图形界面创建表空间 在Oracle数据库的企业管理控制台中,可以通过以下步骤创建一个新的表空间:...
在Oracle数据库系统中,表空间(Tablespace)是存储数据对象(如表、索引、视图等)的逻辑单位,而临时表空间(Temporary Tablespace)则用于存储临时数据,比如排序或联接操作产生的中间结果。创建和管理表空间及...
由于误删除表空间需要system表空间中的信息,因此首先需要恢复system表空间到删除操作之前的版本。这通常通过RMAN的恢复命令实现,例如`RESTORE DATAFILE 1;`,其中1是system表空间对应的数据文件编号。恢复完成后,...
在压缩包中的文件`表空间操作.sql`、`sql_创建表空间.sql`和`sql_删除表空间.sql`可能包含了具体的示例脚本,供你参考和实践这些操作。请根据实际需求进行修改和执行,以确保数据库的管理和组织符合你的业务需求。...
本文将详细介绍Oracle中关于表空间的一些关键操作,包括创建、修改、管理和删除表空间的过程,以及如何处理表空间的在线与离线状态,数据文件的管理,以及表空间的扩展策略。 #### 一、建立表空间 创建表空间是...
如果Temp表空间中有数据正在使用,则可以考虑创建一个新的临时表空间,并将其设置为默认的临时表空间,然后再删除旧的表空间。步骤如下: 1. **创建新表空间**: ```sql CREATE TEMPORARY TABLESPACE TEMP1 TEMP...
### ORACLE表空间操作知识点详解 #### 一、表空间创建与管理 在Oracle数据库中,表空间是逻辑存储单元,用于组织数据文件。通过不同的命令可以实现对表空间的操作,包括创建、调整大小、离线与在线状态切换等。 ##...
本文主要探讨了 Oracle 用户(user)和表空间(tablespace)的相关概念、创建、配置、修改以及删除等核心操作,旨在为初学者提供一个清晰的学习路径。 首先,Oracle 用户是数据库的访问实体,它代表了数据库的认证...
当需要彻底删除一个已创建的或错误的表空间时,需要遵循一定的步骤,因为这涉及到数据库的数据安全性和完整性。下面将详细解释如何在PL/SQL环境中进行这个操作,并解决可能遇到的问题。 首先,我们遇到的问题是无法...
如果数据文件包含对象,可能需要先将对象导出或移动到其他表空间,再执行删除操作。 在Oracle数据库管理中,表空间的操作是数据库维护和优化的关键环节。了解并熟练运用上述操作,有助于提升数据库性能和管理效率。...
8. **预防措施**:为避免类似问题再次发生,应强化数据保护策略,包括定期备份、严格的文件操作权限管理、使用文件系统级别的删除保护,并对重要表空间进行额外的冗余配置。 9. **数据库监控**:设置数据库健康监控...
- **SQL*Plus**:Oracle提供的命令行工具,可执行SQL语句和数据库管理任务,包括表空间操作。 - **Enterprise Manager**:图形化界面,简化了包括表空间在内的许多数据库管理任务。 7. **源码分析**: 标签提到...
### Oracle数据库用户角色、表空间创建与删除命令详解 #### 创建数据表空间 在Oracle数据库中,表空间是逻辑存储单元,它由一个或多个数据文件组成,用于存储数据库对象,例如表、索引等。要创建一个新的数据表...