1、使用drop tablespace including contents;方式直接来删除.
SQL>set linesize 132
SQL>set pagezie 0
SQL>set timing on
SQL>drop tablespace TBS_TEST including contents
已用时间: 03: 35: 39.10
经过我耐心的等待,花了三个半小时。
2、测一下同样的表空间,把它转换为Local方式管理的删除效率。
a、把TBS_TEST通过恢复回来。
b、把TBS_TEST转化为Local管理的方式。
SQL>set timing on
SQL> exec sys.dbms_space_admin.tablespace_migrate_to_local(’TBS_TEST’) ;
已用时间: 00: 06: 33.25
c、删出这个空间。
SQL> drop tablespace TBS_TEST including contents
2 /
已用时间: 00: 00: 45.56
可以看到总共才花费了7分多钟。
3、测一下同样的表空间,先删除其中的对象,然后再删这个表空间的效率如何。
a、把TBS_TEST通过恢复回来。
b、形成删除表的语句
SQL>set linesize 132
SQL>set pagezie 0
SQL>set timing off
SQL>spool drop_test_tables.sql
SQL>SELECT ’Drop table ’||TABLE_name||’;’ FROM dba_tables WHERE tablespace_name=’TBS_TEST’;
SQL>spool off
c、删除表
SQL>@drop_test_tables.sql
这一步大约花费20秒。
d、删出这个空间。
SQL>set timing on
SQL> drop tablespace TBS_TEST including contents;
已用时间: 00: 07: 35.53
可以看到总共才花费了将近8分钟。
总结:我们在做数据字典管理的表空间的删除时,最好先删除表空间中的对象再进行删除该表空间操作。也可以先把它转换为本地(local)管理的空间再进行删除。不过需要补充的是本地管理的空间在8i以后的版本中才没有简单的方法来删除表空间的数据文件,唯一的方法是删除整个定义的表空间,步骤有下面(前提是这个数据文件上的数据是不需要了):
如果数据库运行在非归档模式:
1. MOUNT数据库 - startup mount
2. 删除数据文件 - alter database datafile xxx offline drop
3. 打开(OPEN)数据库 - alter database open
4. 查看属于该表空间的所有对象:
select owner, segment_name, segment_type
from dba_segments
where tablespace_name='tbs_name'
5. 导出该表空间的所有对象------用exp命令来做
6. 删除表空间 - drop tablespace tbs_name including contents
7. 删除这个表空间的所有物理的数据文件Delete the physical datafiles belonging to the tablespace
8. 重建表空间,导入前面导出的DMP文件.
如果数据库是运行在归档模式:
1. MOUNT数据库 - startup mount
2. 删除数据文件 - alter database datafile xxx offline
(Note: offline这个数据文件,此数据文件还是属于这个数据库的一部分,只是在控制文件中将它的状态标记为offline.)
3. 在操作系统一级删除物理的数据文件
4. 打开(OPEN)数据库 - alter database open
5. 后面的可以做下面操作:
导出该表空间的对象
删除表空间
重建表空间并导入对象
如果数据库运行在归档模式下,并且数据文件有备份:
1.MOUNT数据库
2.OFFLINE数据文件:alter database datafile xxx offline;
3.将备份的数据文件拷贝到原来数据文件的位置.
4.将备份数据文件到目前的所有归档日志放到归档目录.
5.恢复数据文件:recover automatic datafile xxx(要输入全路径名)
6.然后ONLINE数据文件:alter database datafile xxx online;
7.打开(OPEN)数据库:alter database open;
8.做一次数据库的关机全备份.
SQL>set linesize 132
SQL>set pagezie 0
SQL>set timing on
SQL>drop tablespace TBS_TEST including contents
已用时间: 03: 35: 39.10
经过我耐心的等待,花了三个半小时。
2、测一下同样的表空间,把它转换为Local方式管理的删除效率。
a、把TBS_TEST通过恢复回来。
b、把TBS_TEST转化为Local管理的方式。
SQL>set timing on
SQL> exec sys.dbms_space_admin.tablespace_migrate_to_local(’TBS_TEST’) ;
已用时间: 00: 06: 33.25
c、删出这个空间。
SQL> drop tablespace TBS_TEST including contents
2 /
已用时间: 00: 00: 45.56
可以看到总共才花费了7分多钟。
3、测一下同样的表空间,先删除其中的对象,然后再删这个表空间的效率如何。
a、把TBS_TEST通过恢复回来。
b、形成删除表的语句
SQL>set linesize 132
SQL>set pagezie 0
SQL>set timing off
SQL>spool drop_test_tables.sql
SQL>SELECT ’Drop table ’||TABLE_name||’;’ FROM dba_tables WHERE tablespace_name=’TBS_TEST’;
SQL>spool off
c、删除表
SQL>@drop_test_tables.sql
这一步大约花费20秒。
d、删出这个空间。
SQL>set timing on
SQL> drop tablespace TBS_TEST including contents;
已用时间: 00: 07: 35.53
可以看到总共才花费了将近8分钟。
总结:我们在做数据字典管理的表空间的删除时,最好先删除表空间中的对象再进行删除该表空间操作。也可以先把它转换为本地(local)管理的空间再进行删除。不过需要补充的是本地管理的空间在8i以后的版本中才没有简单的方法来删除表空间的数据文件,唯一的方法是删除整个定义的表空间,步骤有下面(前提是这个数据文件上的数据是不需要了):
如果数据库运行在非归档模式:
1. MOUNT数据库 - startup mount
2. 删除数据文件 - alter database datafile xxx offline drop
3. 打开(OPEN)数据库 - alter database open
4. 查看属于该表空间的所有对象:
select owner, segment_name, segment_type
from dba_segments
where tablespace_name='tbs_name'
5. 导出该表空间的所有对象------用exp命令来做
6. 删除表空间 - drop tablespace tbs_name including contents
7. 删除这个表空间的所有物理的数据文件Delete the physical datafiles belonging to the tablespace
8. 重建表空间,导入前面导出的DMP文件.
如果数据库是运行在归档模式:
1. MOUNT数据库 - startup mount
2. 删除数据文件 - alter database datafile xxx offline
(Note: offline这个数据文件,此数据文件还是属于这个数据库的一部分,只是在控制文件中将它的状态标记为offline.)
3. 在操作系统一级删除物理的数据文件
4. 打开(OPEN)数据库 - alter database open
5. 后面的可以做下面操作:
导出该表空间的对象
删除表空间
重建表空间并导入对象
如果数据库运行在归档模式下,并且数据文件有备份:
1.MOUNT数据库
2.OFFLINE数据文件:alter database datafile xxx offline;
3.将备份的数据文件拷贝到原来数据文件的位置.
4.将备份数据文件到目前的所有归档日志放到归档目录.
5.恢复数据文件:recover automatic datafile xxx(要输入全路径名)
6.然后ONLINE数据文件:alter database datafile xxx online;
7.打开(OPEN)数据库:alter database open;
8.做一次数据库的关机全备份.
发表评论
-
ORACLE 手工备份与恢复
2013-10-25 09:50 9031、手工冷备 1.1、在非归档模式下,ORACLE只能 ... -
oracle 分页,oracle 随机数
2012-11-16 17:23 900oracle分页 select * from ( sele ... -
Oracle函数next_day
2012-11-14 17:53 1120--获取date日期的下一个星期weekday; next_d ... -
trunc函数截断日期
2012-11-08 14:26 1326截断日期: 先执行命令:alter session set ... -
复杂的SQL语句
2012-10-25 17:30 973--select 语句中执行判断 select sysdate ... -
oracle 密码永不过期
2012-07-06 11:54 16731. 成功安装ORACLE11g后,默认密码有效期为180天, ... -
ORACLE 错误记录
2012-06-29 17:34 9031. ORACL数据库表空间不够,试图增加表空间,之后进行大量 ... -
关于ORA-01034和ORA-27101的一种解决方法(转)
2012-06-29 17:11 20251 先看oracle的监听和oracle的服务是否都启动了。启 ... -
Oracle导出文件
2012-03-13 11:35 970SET echo off --是否显示脚本中正在 ... -
oracle 备份、还原(导入|导出)
2012-01-10 13:42 851下面介绍的是导入导出的实例。 数据导出: 1 将数据库TE ... -
oracle 启动状态介绍
2011-12-09 15:39 14041、startup nomount 读初始化参数文 ... -
oracle日期时间型timestamp相关学习
2011-09-14 15:12 353191、获取系统时间的语句(ssxff6获取小数点后面六位) se ... -
数据库性能优化
2011-07-12 14:14 920Oracle数据库性能优化 ... -
oracle死锁处理
2011-05-05 12:10 659--1.查看数据库中那些用户产生了锁 select usern ... -
ORACLE sysdate 相加减
2011-04-27 16:01 7970加法 select sysdate,add_months ... -
oracle job(定时任务)
2011-04-27 13:53 18691、创建job 使用Submit()过 ... -
Oracle snapshot (快照)
2011-03-28 16:56 2893--在BMS中创建快照日志 create snapshot l ... -
Oracle bug 汇总
2011-03-28 11:33 1025database link --访问database link ... -
oracle游标
2011-03-11 16:05 1379一 游标是什么 游标字面理解就是游动的光标。 用数据库 ... -
oracle 包、方法、存储过程
2011-03-11 15:30 979--定义包 create or replace package ...
相关推荐
本篇文章将详细介绍如何在Oracle数据库中快速删除表空间,以及相关的重要知识点。 首先,理解表空间在Oracle中的角色至关重要。表空间是数据库的逻辑存储单元,它由一个或多个数据文件组成,用于存储数据库对象,如...
Oracle 表删除大量数据后查询变慢问题分析 在 Oracle 数据库中,如果删除了大量数据(千万级别),可能会出现查询变慢的问题。下面我们将分析这个问题的原因,并提供解决方案。 问题的原因主要有两个方面: 1. 表...
在Oracle数据库管理过程中,误删表是常见的操作失误之一,而如何有效、快速地恢复这些被误删的表对于DBA(数据库管理员)来说至关重要。本文将详细介绍如何在Oracle环境下利用回收站功能进行误删表的恢复。 ### ...
### 完整Oracle创建表空间、用户及设置用户权限脚本解析 #### 一、创建表空间 在Oracle数据库管理中,创建表空间是数据库管理的基础之一。表空间是Oracle数据库中逻辑存储结构的一部分,它将数据库物理存储空间...
这是因为 TRUNCATE TABLE 可以快速释放表空间,而其他两种方式会保留表的元数据,导致表空间被占用。 #### 十、查询表空间和数据文件信息 可以使用以下 SQL 查询来查看表空间的相关信息: ```sql SELECT ...
在Linux环境下管理Oracle数据库时,有时需要删除不再使用的用户及其关联的表空间。这通常涉及到数据库的安全性和资源优化。本文将详细介绍如何在Linux下的Oracle环境中删除用户和表空间,以及处理可能遇到的问题。 ...
### Oracle数据库删除表中重复记录的方法 在Oracle数据库管理中,经常会遇到需要处理表中的重复数据的情况。重复数据不仅会占用不必要的存储空间,还可能导致数据统计错误或业务逻辑混乱等问题。因此,掌握如何有效...
- **表空间的删除与调整大小**:通过`DROP TABLESPACE`命令可以删除表空间,同时可以选择`INCLUDING CONTENTS AND DATAFILES`来一并删除所有内容和数据文件。而`ALTER DATABASE DATAFILE`命令则用于调整数据文件的...
本文将深入探讨如何快速专业地进行Oracle表空间转移,这是一项在维护数据库性能、扩展性和安全性时经常需要执行的任务。 ### 快速转移Oracle数据库用户的表所属空间 在Oracle数据库中,表空间是存储数据的基本单位...
Oracle数据库在面对UNDO表空间持续增长的问题时,通常涉及...此外,定期维护和备份是防止类似问题的关键,同时,了解和熟悉Oracle数据库的内部机制,如SMON进程的作用和UNDO表空间管理,对快速定位和解决问题至关重要。
使用RMAN进行基于表空间的恢复 - Oracle Life.files 使用RMAN进行基于时间点的不完全恢复 - Oracle Life.files 使用RMAN进行快速Dataguard数据库创建 - Oracle Life.files Oracle RMAN物理备份技术详解 Oracle RMAN...
另外,`TRUNCATE TABLE`可以快速清空表,但不记录删除操作,而`DELETE`则会记录在回滚段中。 索引是提升查询性能的关键工具。Oracle支持B树索引、位图索引、函数索引等多种类型。`CREATE INDEX`用于创建索引,`...
ORACLE的UNDO表空间 ORACLE的UNDO表空间是Oracle数据库中一个非常重要的组件,playing a crucial role in maintaining data consistency and providing a way to undo changes made to the database. 在本节中,...
在Oracle数据库管理中,表空间的管理是一项重要的任务。当表空间设置为自动扩展时,随着数据的增长,表空间也会自动增加其大小,以适应数据存储的需求。然而,在某些情况下,表空间可能会出现所谓的“暴涨”现象,即...
- **原理**:当使用`DROP`命令删除表后,Oracle并没有立即清除表占用的空间,而是将其放入了一个特殊的区域——回收站中,直到这些空间被新的数据覆盖。 - **查询回收站**:可以通过查询`USER_TABLES`视图或`USER_...
针对用户表空间故障,可以采用一个比较快速简单的故障排除方法:将损坏的数据文件直接指向备份文件,然后恢复。具体操作过程如下: 1. 创建实验用表空间tbs-test。 2. 创建测试用户test,并授予权限。 3. 在test...
在IT行业中,数据库管理是至关重要的任务之一...这些脚本可以帮助开发者和DBA快速地完成表空间的创建、删除,以及用户的管理,极大地提升了工作效率。在实际应用中,可以根据具体需求对这些脚本进行适当的调整和扩展。
Oracle数据库表空间是数据库中非常重要的逻辑单位,它对数据的存储和管理起着至关重要的作用。随着Oracle数据库在各个领域的广泛使用,其维护工作变得尤为重要,其中表空间的维护是数据库维护中的一个重要组成部分。...
通过这种方式可以快速了解各表空间的状态。 #### 示例二:包括临时表空间在内的更全面统计 ```sql SELECT t.* FROM (SELECT D.TABLESPACE_NAME, SPACE AS "SUM_SPACE(M)", BLOCKS AS SUM_BLOCKS, SPACE - NVL...
### 使用Oracle 10g的Flashback闪回功能快速恢复被删除的表 #### Oracle 10g Flashback 特性概述 Oracle Database 10g 引入了一项非常强大的特性——Flashback,该特性使得数据库管理员(DBA)能够轻松地恢复误删除...