oracle 如何删除被误删物理文件的表空间

合集下载

oracle 删除数据后释放数据文件大小的方法

oracle 删除数据后释放数据文件大小的方法

oracle 删除数据后释放数据文件大小的方法(原创版3篇)篇1 目录1.Oracle 简介2.数据删除与数据文件大小的关系3.删除数据后释放数据文件大小的方法4.结论篇1正文1.Oracle 简介Oracle 是一款广泛应用于企业级数据管理的关系型数据库管理系统。

其出色的性能、高度可扩展性和稳定性赢得了众多用户的信赖。

在 Oracle 数据库中,数据以表空间为单位进行存储和管理,表空间又分为数据文件和日志文件。

数据文件用于存储数据,而日志文件用于记录数据库的操作。

2.数据删除与数据文件大小的关系在 Oracle 数据库中,当我们删除数据时,被删除的数据并不会立即从数据文件中移除,而是被移动到回收站(Recycle Bin)中。

只有在回收站中的数据被彻底删除后,数据文件的大小才会减小。

因此,在删除数据后,数据文件大小并不会立即释放,需要通过特定的操作才能实现。

3.删除数据后释放数据文件大小的方法(1)使用 DELETE 语句要使用 DELETE 语句释放数据文件大小,需要先将回收站中的数据彻底删除。

可以使用以下语句:```DELETE FROM RECYCLEBIN;```执行该语句后,回收站中的数据将被永久删除,数据文件大小得到释放。

(2)使用 DBMS_RECYCLEBIN.DELETE_EXPIRED_RECORDS 过程该过程用于删除回收站中过期的记录,可以自动执行,无需手动干预。

过期记录的定义是:在回收站中存放超过 RECYCLEBIN_TIME 限制的时间。

可以通过以下语句创建一个名为“cleanup_recyclebin”的作业:```BEGINDBMS_RECYCLEBIN.DELETE_EXPIRED_RECORDS(TO_CHAR(SYSTIMESTAMP, "YYYYMMDDHH24MISS"));END;```其中,"YYYYMMDDHH24MISS"表示过期时间的截止点。

oracle误删除表空间文件

oracle误删除表空间文件

近日在搞rman备份恢复的实验,因为在虚拟机建立一个rman表空间,但是发现磁盘空间不够大,所以删除了,导致数据库启动不了了,解决办法如下:
1.误删rman表空间
SQL> ! rm -f /opt/oracle/oradata/rman.dbf;
2.连接oracle并启动
SQL> startup;
3.查询oracle启动状态
SQL> select status from v$instance;
STATUS
------------
MOUNTED
4.执行drop
SQL> alter database datafile '/opt/oracle/oradata/rman.dbf' offline drop; Database altered.
5.从mount状态启动到open状态
SQL> alter database open;
Database altered.
SQL> select status from v$instance;
STATUS
------------
OPEN
6.级联删除表空间
SQL> drop tablespace rman including contents;
Tablespace dropped.
7.查询表空间,数据文件,发现已成功删除
SQL> select tablespace_name,file_name from dba_data_files;
8.删除该表空间的用户,并级联收回权限
SQL> drop user rman cascade;
OK,一切搞定,数据库恢复正常。

ORACLE 回滚段表空间数据文件丢失或损坏处理方法

ORACLE 回滚段表空间数据文件丢失或损坏处理方法

ORACLE 回滚段表空间数据文件丢失或损坏处理方法问题描述:这是一个回滚段表空间数据文件丢失或损坏的情景,这时oracle不能识别相应的数据文件。

当你试图startup 数据文件时会报ORA-1157,ORA-1110,并且可能会伴随着标识操作系统级别的错误,比如ORA-7360。

当你试图以shutdown normal或shutdown immediate模式关闭数据库时会导至ORA-1116,ORA-1110,并可能伴随标识操作系统级别的错误,比如ORA-7368,有时以正常方式shutdown数据库根本shutdown不下来。

警告:文章中所提及的步骤是供oracle的全球技术支持使用的。

特别是步骤6中的_corrupted_rollback_segments参数,使用后需要重建数据库,在使用这个参前请观察一下所有其它的选项。

解决方法解释:如下的解决方法取于检测问题出现时数据库所处于状态:I. 数据库是处于关闭状态的。

试图打开数据库时报ORA-1157和ORA-1110错误,这时的解决方法取于数据库是否是正常shutdown的(使用normal或immediate选项。

I.A.数据库是正常shutdown的如果数据数据库是正常shutdown的,最简单的解决方法是以offline drop选项删除丢失或损坏的数据文件,以restriceted模式打个数据库,删除并重建这个数据文件所属的那个回滚表空间。

如果数据库是以shutdown abort或自己崩溃掉的则不要遵循这个过程。

步骤如下:1、确认数据库是正常shutdown的。

可以检查alter.log这个文件,定位到最后几行看是否可以看到如下的信息:"alter database dismountCompleted: alter database dismount"这当然也包括以正常方式shutdown,接然试图启动数据库确失败的状况。

Oracle误删UNDO表空间故障处理

Oracle误删UNDO表空间故障处理

Oracle 误删UNDO表空间故障处理H.sdon操作人员操删除ORACLE UNDO表空间,系统报ORA-01116: error in opening database file 25错误。

解决思路:删除原有UNDO表空间,新建一个UNDOTBS2表空间进行替换。

1、生成init文件Create pfile from spfile记住:在生成新的init文件前应对原有文件做好备份或将init文件生成在不同的目录名称下面2、修改init.ora文件undo_management=MANUALundo_retention=10800undo_tablespace=undotbs01rollback_segments='SYSTEM'3、使用PFILE重新启动数据库Startup pfile=’$ORACLE_HOME/dbs/init[sid].ora此步数据库已经能正常OPEN,但在做数据库操作的时候还会报以下错误SQL> shutdown immediate;ORA-00376: file 2 cannot be read at this timeORA-01110: data file 2: '/oradata/irms/undotbs01.dbf'4、使用以下命令对数据文件进行offline dropalter database datafile '/oradata/irms/undotbs04.dbf' offline drop;alter database datafile '/oradata/irms/undotbs03.dbf' offline drop;alter database datafile '/oradata/irms/undotbs01.dbf' offline drop;alter database datafile '/oradata/irms/undotbs02.dbf' offline drop;5、创建新的UNDO表空间UNDOTBS2create undo tablespace undotbs2datafile '/oradata/irms/undotbs20.dbf' size 500M;6、在init.ora更改默认UNDO表空间,使其启动后默认UNDO表空间为undotbs2,undo_management=AUTO后重新启动7、删除UNDOTBS1表空间,报Drop tablespace undotbs1ORA-01548: 已找到活动回退段'_SYSSMU1$',8、查看回滚段使用情况select segment_name,status,tablespace_name from dba_rollback_segs;SEGMENT_NAME STATUS TABLESPACE_NAME------------------------------ ---------------- ------------------------------SYSTEM ONLINE SYSTEM_SYSSMU1$ NEEDS RECOVERY UNDOTBS1_SYSSMU2$ NEEDS RECOVERY UNDOTBS1_SYSSMU3$ NEEDS RECOVERY UNDOTBS1_SYSSMU4$ NEEDS RECOVERY UNDOTBS1_SYSSMU5$ NEEDS RECOVERY UNDOTBS1_SYSSMU6$ NEEDS RECOVERY UNDOTBS1_SYSSMU7$ NEEDS RECOVERY UNDOTBS1_SYSSMU8$ NEEDS RECOVERY UNDOTBS1_SYSSMU9$ NEEDS RECOVERY UNDOTBS1_SYSSMU10$ NEEDS RECOVERY UNDOTBS1可以看到_SYSSMU1$-_SYSSMU10$状态都为need recovery状态9、关闭数据库,更改init.ora默认UNDO表空间及其它参数undo_management=manualundo_retention=10800undo_tablespace=undotBS2_CORRUPTED_ROLLBACK_SEGMENTS=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$, _SYSSMU10$)10、以新的init.ora启动数据库Startup pfile=’$ORACLE_HOME/dbs/init[sid].ora11、删除UNDOTBS1Drop tablespace undotbs1 including contents查看回滚段状态,UNDOTBS中的信息已经没有SQL> select segment_name,status,tablespace_name from dba_rollback_segs;SEGMENT_NAME STATUS TABLESPACE_NAME------------------------------ ---------------- ------------------------------SYSTEM ONLINE SYSTEMSYSSMU11$ ONLINE UNDOTBS2_SYSSMU12$ ONLINE UNDOTBS2_SYSSMU13$ ONLINE UNDOTBS2_SYSSMU14$ ONLINE UNDOTBS2_SYSSMU15$ ONLINE UNDOTBS2_SYSSMU16$ ONLINE UNDOTBS2_SYSSMU17$ ONLINE UNDOTBS2_SYSSMU18$ ONLINE UNDOTBS2_SYSSMU19$ ONLINE UNDOTBS2_SYSSMU20$ ONLINE UNDOTBS211、将SPFILE中的UNDO_TABLESPACE改成UNDOTBS2后启动正常附言:。

oracle数据文件被误删除后的灾难处理方法

oracle数据文件被误删除后的灾难处理方法
sqlplus> drop tablespace surevytemp including contents;
简单的问题搞这么复杂?
按下面步骤做即可:
1.shutdown immediate
2.startup mount
3.alter database datafile 'xxx' offline drop;
import表空间的所有数据对象。
如果需要减少表空间的数据文件,可以采用以下办法:
export除表空间的内容:exp ... tablespaces=xxx;
使用include content子句删除表空间:drop tablespace xxx include content;
重见表空间,使之不包括需要去除掉的数据文件;
sqlplus "/as sysdba";
sqlplus>shutdown abort;
2、装载数据库
sqlplus>startup mount;
3、删除无效的数据库文件
sqlplus>alter database datafile '/home/oracle/survey/survey.dbf' offline drop
4.alter database open
5.drop tablespace xxxx including contents and datafiles;
先说明一下alter database datafile ... oபைடு நூலகம்fline drop:
在非归档模式下,可以使用... offline drop,在归档模式下,使用... offline. 这个命令的意思并不是从表空间将这个数据文件彻底删除,而是说将这个数据文件“冻结”住:它的scn不在变化,不会再向它写入任何数据;但是原有存在这个文件中对象和数据还可以继续使用。因此在使用这个命令后,通过修改控制文件将它删除,数据库在启动时就会报文件丢失的错误,并且会在数据字典中产生一个 MISGXXXXX的纪录。因此,以一个数据文件是无法被直接从数据库中删除掉的。

oracle删除恢复语句举例

oracle删除恢复语句举例

oracle删除恢复语句举例如何使用Oracle删除和恢复数据。

Oracle是一种功能强大的数据库管理系统,它提供了许多功能来操作数据库中的数据,包括删除和恢复数据。

在本文中,我们将一步一步地介绍如何使用Oracle进行数据删除和恢复,并举例说明。

第一步:连接到数据库首先,您需要连接到要删除或恢复数据的Oracle数据库。

您可以使用sqlplus命令行工具或任何其他数据库管理工具(如SQL Developer)连接到数据库。

例如,使用sqlplus命令行工具,您可以执行以下命令连接到数据库:sqlplus username/password@database其中“username”是您的数据库用户名,“password”是您的数据库密码,“database”是您要连接的数据库的SID或服务名称。

第二步:备份数据(可选)在执行任何删除操作之前,我们建议您先备份数据库以防止意外删除数据。

备份数据库可以确保您有一个可用的数据库副本,以便在需要时恢复数据。

备份数据库的方法很多,您可以使用Oracle提供的备份工具(如RMAN)或者使用其他第三方备份工具。

第三步:删除数据一旦连接到数据库并备份数据(如果需要),您可以开始删除数据。

在Oracle中,删除数据有两种常用方法:使用DELETE语句或使用TRUNCATE TABLE语句。

使用DELETE语句删除数据:DELETE FROM table_name WHERE condition;在上述命令中,您需要将“table_name”替换为要删除数据的表名,并使用“condition”指定要删除的数据行。

条件可以是任何适用的WHERE子句,以选择要删除的数据行。

例如,假设我们有一个名为“employees”的表,其中包含员工的姓名和年龄。

要删除年龄大于30岁的员工,我们可以执行以下命令:DELETE FROM employees WHERE age > 30;使用TRUNCATE TABLE语句删除数据:TRUNCATE TABLE table_name;在上述命令中,您只需要指定要删除数据的表名即可。

oracle回退delete语句

oracle回退delete语句

一、介绍在数据库管理系统中,delete语句用于删除表中的数据记录。

然而,有时候用户可能会错误地执行delete语句,导致删除了重要的数据。

在这种情况下,需要进行回退操作来恢复被误删除的数据记录。

二、oracle回退delete语句的方法1. 使用flashback技术Oracle数据库提供了flashback技术,可以通过回退操作来恢复被删除的数据记录。

使用flashback技术需要先确定数据库中是否启用了flashback功能,如果启用了,则可以使用flashback查询被删除的数据记录,然后通过flashback操作将数据记录回退至删除前的状态。

2. 使用备份和恢复如果数据库中没有启用flashback功能,可以通过数据库备份和恢复来回退delete语句。

首先需要找到数据库中删除数据之前的备份,然后进行数据恢复操作,将备份中的数据恢复至数据库中,从而实现回退操作。

3. 使用日志文件Oracle数据库中的日志文件记录了数据库中的所有操作,包括delete 语句的执行情况。

通过查询日志文件,可以找到被删除的数据记录,然后使用日志文件中的信息进行数据恢复操作,将数据记录回退至删除前的状态。

三、注意事项在进行回退delete语句的操作时,需要注意以下几点:1. 数据库备份的重要性及时做好数据库的备份工作非常重要,可以在意外删除数据时提供及时的恢复操作。

2. 谨慎执行delete语句在执行delete语句时,务必要谨慎操作,确保不会误删除重要数据记录。

3. 使用flashback技术需谨慎虽然flashback技术可以实现数据回退操作,但也需要谨慎操作,以免对数据库产生不必要的影响。

四、结论在数据库管理中,回退delete语句是一项非常重要的操作,可以帮助恢复误删除的数据记录,保证数据库的完整性和稳定性。

在日常的数据库管理工作中,需要时刻关注数据库的备份情况,谨慎执行delete 语句,并掌握回退delete语句的操作方法,以保障数据库的安全性和稳定性。

Oracle 回收站功能,彻底删除表

Oracle 回收站功能,彻底删除表

Oracle10g开始,Oracle引入了flashback drop的新特性,这个新特性,允许你从当前数据库中恢复一个被drop了的对象。

在执行drop操作时,现在Oracle不是真正删除它,而是将该对象自动将放入回收站。

对于一个对象的删除,其实仅仅就是简单的重令名操作。

所谓的回收站,是一个虚拟的容器,用于存放所有被删除的对象。

在回收站中,被删除的对象将占用创建时的同样的空间,你甚至还可以对已经删除的表查询,也可以利用flashback功能来恢复它,这个就是flashback drop功能。

这个功能虽然可以极大的简化误drop导致的恢复操作,但是长时间的积累可能会导致大量的空间占用(虽然Oracle具有自己的清理机制),很多时候我们需要手工介入去清理回收站。

本文主要介绍清理回收站的几种方法.1.大量累计的空间占用Connected to Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 Connected as SYSSQL> col owner for a12SQL> select owner,object_name,CREATETIME,DROPTIME from dba_recyclebin2 order by droptime3 /OWNER OBJECT_NAME CREATETIME DROPTIME------------ ------------------------------ --------------------------------------COMMON BIN$AHsQ+pi+Kb/gRAADumkBdQ==$0 2005-08-29:16:42:192005-09-11:15:36:17COMMON BIN$AHsQ+pi9Kb/gRAADumkBdQ==$0 2005-08-29:16:42:192005-09-11:15:36:17PDA BIN$AdEb4zqqUcTgRAADumkBdQ==$0 2005-09-05:10:31:012005-09-28:15:40:39......BJLAIS_RUN BIN$BtkGRT0dSwfgRAADumkBdQ==$0 2005-11-30:10:54:072005-12-01:16:13:17BJLAIS_RUN BIN$BtkGRT0cSwfgRAADumkBdQ==$0 2005-11-30:10:54:072005-12-01:16:13:172.不同用户在回收站的对象SQL> select owner,count(*) from dba_recyclebin group by owner; OWNER COUNT(*)-------------------- ----------BJLAIS_RUN 44COMMON 8MMSBLOG 618MMSHAWA_RUN 2PDA 8RING_RUN 706 rows selected.4.指定清除某个表空间的所有回收站对象SQL> purge tablespace common;Tablespace purged.SQL> select owner,count(*) from dba_recyclebin group by owner; OWNER COUNT(*)-------------------- ----------BJLAIS_RUN 44MMSBLOG 618MMSHAWA_RUN 2PDA 8RING_RUN 706.禁用recyclebin如果我们不希望使用Oracle的recyclebin,可以通过参数禁用这个特性。

解决oracle闪回区存储空间耗尽问题的方法

解决oracle闪回区存储空间耗尽问题的方法

解决oracle闪回区存储空间耗尽问题的方法
解决Oracle闪回区存储空间耗尽问题的方法如下:
1.通过增加闪回区的存储空间来解决空间耗尽的问题。

可以通过以
下步骤来完成:ALTER DATABASE FLASHBACK ON、ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=[G|M]1。

2.把数据库启动到mount状态并把闪回空间改大。

可以通过以下步
骤来完成:SQL>startup mount、SQL>alter system set db_recovery_file_dest_size=10G scope=both、SQL>alter database open。

3.用RMAN命令删除老的日志文件。

可以通过以下步骤来完成:操
作系统命令,删除物理文件(rm -vf ) 进入rman、RMAN>crosscheck archivelog all、RMAN>delete expired archivelog all、SQL>select (space_used/space_limit)*100 from v$recovery_file_dest; 查看闪回空间使用率查看alert告警,以及oracle给出的处理建议。

oracle purge用法

oracle purge用法

oracle purge用法Oracle是目前最常用的关系数据库管理系统,在日常的生产环境中,会产生大量的数据,但是这些数据存在一定的风险,比如不必要的数据存储会影响系统性能,不需要的数据也会增加备份和恢复的时间并浪费宝贵的空间。

为了解决这些问题,管理员可以使用“Oracle Purge”工具来清除不必要的数据。

Oracle Purge是一个高级数据库管理工具,可以清除表空间、对象(表、索引、分区)、闪回日志、审计日志等数据,从而释放空间并提高系统性能。

下面是Oracle Purge使用方法的详细步骤:1. 针对表空间的清理可以使用以下命令清除表空间:purge tablespace <tablespace_name>;2. 针对对象(表、索引、分区)的清理可以使用以下命令清除对象:purge table <table_name>;purge index <index_name>;purge partition <partition_name>;3. 针对闪回日志的清理可以使用以下命令清除闪回日志:purge DBA_FLASHBACK_ARCHIVE;4. 针对审计日志的清理可以使用以下命令清除审计日志:purge dba_audit_trail;需要注意的是,在使用Oracle Purge工具前,应该先备份好相关数据,防止误操作导致数据无法恢复。

此外,清除数据时应该具有一定的权限,否则会因为权限不足而无法完成操作。

总之,Oracle Purge是一个非常实用的数据库管理工具,在清除不必要的数据的同时,也为系统性能优化提供了很好的帮助。

管理员可以通过上述的使用方式快速开启Oracle Purge,并有效地管理自己的Oracle数据库。

建错oracle 表空间路径 处理方法-概述说明以及解释

建错oracle 表空间路径 处理方法-概述说明以及解释

建错oracle 表空间路径处理方法-概述说明以及解释1.引言1.1 概述概述部分的内容应该对文章的主题进行简要介绍,并提供一些背景信息。

在这种情况下,我们正在讨论错误的Oracle表空间路径以及处理方法。

下面是文章1.1概述部分的一个例子:引言:Oracle是一种广泛使用的关系型数据库管理系统,被广泛用于企业级应用程序的开发和管理。

然而,在使用Oracle时,有时候会遇到错误的表空间路径的问题,这可能会对我们的数据库工作和业务流程产生负面影响。

本文旨在探讨这些错误的原因,并提供几种处理方法来解决这些问题。

在这篇文章中,我们将首先分析导致错误表空间路径的可能原因。

之后,我们将介绍三种常见的处理方法,以帮助我们解决这些问题。

最后,我们将总结本文的主要观点,并提供一些建议和展望未来可能的研究方向。

通过阅读本文,读者将能够更好地理解和解决与错误表空间路径相关的问题,并提高他们在Oracle数据库管理方面的技能和知识。

无论是初学者还是有经验的数据库管理员,本文都将向他们提供有用的信息和实用的解决方案。

接下来,我们将详细阐述错误表空间路径的原因以及相应的处理方法。

1.2 文章结构文章结构部分主要介绍了本篇文章的组织结构和内容安排。

本文分为引言、正文和结论三个部分。

引言部分首先概述了文章的主要内容,即处理Oracle表空间路径建错的方法。

然后说明了本文的结构,包括引言、正文和结论三个部分。

最后,明确了本文的目的,即帮助读者了解并掌握处理建错Oracle表空间路径的方法。

正文部分是本文的核心内容,主要包括错误原因分析和处理方法。

在错误原因分析部分,将详细探讨导致建错Oracle表空间路径的原因,包括操作失误、配置错误等。

在处理方法部分,将提供三种不同的处理方法,分别是处理方法1、处理方法2和处理方法3。

每种方法都会详细介绍具体的操作步骤和注意事项,以便读者能够根据自己的实际情况选择合适的处理方法。

结论部分对整篇文章进行总结,并提出具体的建议和展望。

oracle误删除表空间

oracle误删除表空间
பைடு நூலகம்Database mounted.
SQL> alter database datafile '/oracle/database/tabjj_tab.dbf' offline drop;
Database altered.
SQL> alter database open;
Database altered.
Redo Buffers 14753792 bytes
Database mounted.
ORA-01122: database file 10 failed verification check
ORA-01110: data file 10: '/oracle/database/tabjj_tab.dbf'
ORA-01251错误oracle服务启动无法连接误删非法删除数据文件导致数据库不能打开ORA-01122 ORA-01251
分类: oracle异常 2013-12-20 21:55 179人阅读 评论(1) 收藏 举报
oracle服务启动 非法删除数据文件
今天一同事找我,说他本地的数据库被他误删除了文件,导致不能打开,然给看看。
SQL>
数据库恢复正常。
以上只是测试环境下的操作,正式系统上,千万不能这样随意删除文件了
SQL> conn jjw/jjw
ERROR:
ORA-01033: Oracle initialization or shutdown in progress
Warning: You are no longer connected to ORACLE.
SQL>

oracle清空表数据的语句

oracle清空表数据的语句

oracle清空表数据的语句清空Oracle表数据的语句在Oracle数据库中,我们经常需要清空表中的数据,以便进行数据的重置或者测试。

清空表数据的语句可以通过使用DELETE或者TRUNCATE语句来实现。

下面将详细介绍这两种方式的使用方法和注意事项。

1. 使用DELETE语句清空表数据:DELETE语句用于删除数据库中的数据行。

要清空表中的数据,可以使用以下语法:```DELETE FROM 表名;```例如,要清空名为"employees"的表中的所有数据,可以执行以下SQL语句:```DELETE FROM employees;```需要注意的是,DELETE语句只会删除表中的数据行,而不会删除表的结构。

因此,执行DELETE语句后,表的结构及其约束、索引等仍然保持不变。

此外,如果表中有关联的外键约束,删除操作可能会受到限制。

要想删除带有外键关联的数据,需要先解除关联,或者通过级联删除等策略来处理。

2. 使用TRUNCATE语句清空表数据:TRUNCATE语句用于快速清空表中的数据,并且比DELETE语句更高效。

TRUNCATE语句会立即释放表空间,并重置表的存储结构。

要清空表中的数据,可以使用以下语法:```TRUNCATE TABLE 表名;```例如,要清空名为"employees"的表中的所有数据,可以执行以下SQL语句:```TRUNCATE TABLE employees;```与DELETE语句不同,TRUNCATE语句不会在系统日志中生成删除记录,因此执行速度更快。

但需要注意的是,TRUNCATE语句一旦执行,无法回滚并恢复数据,因此在使用该语句前要谨慎核实。

此外,类似于DELETE语句,TRUNCATE语句也可能受到外键约束的限制。

同样,要想删除带有外键关联的数据,需要先解除关联或者使用级联删除等策略。

总结:在Oracle数据库中,清空表数据的常用语句有DELETE和TRUNCATE两种方式。

关于ORACLE清理表空间

关于ORACLE清理表空间

关于ORACLE清理表空间--1.查看索引和表的初始大小select bytes/1024/1024 ||'m' s ,u.* from dba_segments u order by bytes/1024/1024 desc --2.通过上面语句找到占用空间较大的表,删除表记录delete from cif.tywqqcl t where t.sqrq <'20180901';--3.消除行迁移,清除空间碎片,删除空闲空间,实现缩小所占的空间alter table CIF.TYWQQCL move ;--4.清除CLOB字段空间alter table cif.tywqqcl move tablespace cif lob(req_data) store as (tablespace cif); --5.原建表初始化大小为10M,每次增加5M,会造成空间浪费,例如只要往表中插入一条数据,就会占用10M的空间initial 64K--故修改设置表和索引initial初始化大小为64K,之后每次增加8K。

select 'alter table '||owner||'.'||table_name||' move tablespace '||tablespace_name||' storage(initial 64k next 8k);' from dba_tables where owner='CIF' and table_name='TYWQQCL' ;select 'ALTER INDEX '||owner||'.'||index_name||' REBUILD STORAGE(INITIAL 64k NEXT 8k);' from dba_indexeswhere owner='CIF' and table_name='TYWQQCL';alter index cif.idx_tywqqcl_ywqqid rebuild storage(initial 64k next 8k);alter index cif.pk_tywqqcl rebuild storage(initial 64k next 8k);alter index cif.sys_il0000097686c00015$$ rebuild storage(initial 64k next 8k); alter index cif.idx_tywqqcl_khh rebuild storage(initial 64k next 8k);alter index cif.idx_tywqqcl_fid rebuild storage(initial 64k next 8k);alter index cif.idx_tywqqcl_sqrq rebuild storage(initial 64k next 8k);--6.删除主键alter table cif.tywqqcl drop primary key drop index;--7.重新建主键alter table cif.tywqqcl add constraint pk_tywqqcl primary key (id);--9.重建索引select 'alter index '||index_name||' rebuild;'from dba_indexes where table_name='tywqqcl'and table_owner='cif'and index_name like 'idx_%';alter index cif.idx_tywqqcl_ywqqid rebuild;alter index cif.idx_tywqqcl_khh rebuild;alter index cif.idx_tywqqcl_fid rebuild;alter index cif.idx_tywqqcl_sqrq rebuild;purge RECYCLEBIN压缩表空间查询可压缩的物理文件select a.file#,,a.bytes / 1024 / 1024 CurrentMB,ceil(HWM * a.block_size) / 1024 / 1024 ResizeTo,(a.bytes - HWM * a.block_size) / 1024 / 1024 ReleaseMB,'alter database datafile ''' || || ''' resize ' ||ceil(HWM * a.block_size) / 1024 / 1024 || 'M;' ResizeCmdfrom v$datafile a,(SELECT file_id, MAX(block_id + blocks - 1) HWMFROM DBA_EXTENTSGROUP BY file_id) bwhere a.file# = b.file_id(+)And (a.bytes - HWM * a.block_size) >0and rownum < 10CREATE TABLESPACE auims3_bak DATAFILE '/oradata/ygt3/auims3_bak.ora' SIZE 100M LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTOalter table auims3.tlog enable row movement;ALTER TABLE auims3.tlog SHRINK SPACE CASCADE;select 'alter table AUIMS3_LOG.'||table_name||' move partition '||partition_name||' tablespace AUIMS3_LOG;'from dba_tab_partitions where table_name in ('TLOG') ANDTABLE_OWNER='AUIMS3_LOG';alter table tablename move lob(columeName) store as (tablespace newTableSpaceName);alter table EIMAGE.TDA_KHDA move lob (ATTACHMENT) store as AUIMS3_BAK;select owner,table_name,column_name,segment_name,index_namefrom dba_lobs;alter table EIMAGE.TDA_KHDA move lob (ATTACHMENT) store as (TABLESPACE AUIMS3_BAK)select 'alter table CIFHIS.'||table_name||' move partition '||partition_name||' tablespace AUIMS3_LOG '||'LOB (REQ_DATA) STORE AS (TABLESPACE AUIMS3_LOG);'from dba_tab_partitionswhere table_name IN('TYWQQ','TYWQQCL') AND TABLE_OWNER='CIFHIS';。

oracle表空间误删除

oracle表空间误删除

Oracle(oracle 9i)遇到了这个问题:登陆时候提示:ora-01033:oracle initialization or shutdown in progress进程ID:0 会话ID:0序列号: 0只有:systeam as sysdba能登录原因:我将建的表空间文件删除掉了(系统的也应该一样吧)(注意表空间不要随意直接删除文件,如果要删除的话用命令)分析:Oracle启动,读配置信息,在读配置的时候找不到文件。

解决方法:1、>>cmd2、>>sqlplus /nolog3、>>connect sys/orcl as sysdba orcl(database)提示:已成功4、>>shutdown normal提示:数据库已经关闭已经卸载数据库ORACLE 例程已经关闭5、>>startup mount提示:ORACLE例程已经启动Total System Global Area 118255568 bytesFixed Size 282576 bytesVariable Size 82886080 bytesDatabase Buffers 33554432 bytesRedo Buffers 532480 bytes数据库装载完毕6、>>alter database open; (反复直到出现下列为止)提示:第1 行出现错误:ORA-01157: 无法标识/锁定数据文件8 - 请参阅DBWR 跟踪文件ORA-01110: 数据文件8: ''''D:\oradata\oradb\yuan.dbf''删除表空间数据文件的位置。

继续输入7、>>alter database datafile 8 offline drop;反复直到出现出现“数据库已更改为止提示:数据库已更改。

Oracle误删除数据和表的恢复办法

Oracle误删除数据和表的恢复办法

Oracle误删除数据和表的恢复办法在⼯作中我们操作数据库的时候经常会发⽣⼀个不该发⽣的问题:⽤户意外的删除⼀个⾮常重要的表或者是表中的数据⽽且没有备份,需要尽快的恢复,以下就是解决的办法:主要是利⽤Oracle回收站的闪回特性oracle 回收站recyclebin是10g才有的新特性,当我们drop table cube_scope 【purge】时,如果不指定purge时,系统只是将这个表重命名为BIN$开头的名称,并在数据字典中修改了相关数据,表所占⽤的物理空间并没有真正的回收,此时所占⽤的空间还是原来的表空间,当表空间不够⽤时,ORACLE会跟据DROPSCN#⾃动进⾏逐个清理回收站中对像所占⽤的空间,10g默认是打开回收站功能的。

⼀、delete 数据误删除1、删除数据之后表结构没有变化直接使⽤表闪回,表闪回要求⽤户必须要有flash any table权限先确定删除数据的时间(在删除数据之前的时间就⾏,不过最好要具体到删除数据的时间点)alter table 表名 enable row movement //开启⾏移动功能flashback table 表名 to timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss')//恢复数据到删除时间点之前的状态Alter table 表名 disable row movement //关闭⾏移动功能(⼀定不能忘记)2、删除数据之后表结构发⽣了变化select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss')//找出被删除的数据insert into 表名 (select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss')); //把删除的数据重新插回原表,但注意主键不要重复⼆、drop命令删除表由于oracle在删除表时,没有直接清空表所占的块,oracle把这些已删除的表的信息放到了⼀个虚拟容器“回收站”中,⽽只是对该表的数据块做了可以被覆写的标志,所以在块未被重新使⽤前还可以恢复。

oracle如何删除被误删物理文件的表空间

oracle如何删除被误删物理文件的表空间

oracle如何删除被误删物理文件的表空间oracle 如何删除被误删物理文件的表空间.txt为什么我们在讲故事的时候总要加上从前?开了一夏的花,终落得粉身碎骨,却还笑着说意义。

oracle 如何删除被误删物理文件的表空间.txt如果有来生,要做一棵树,站成永恒,没有悲伤的姿势。

一半在土里安详,一半在风里飞扬,一半洒落阴凉,一半沐浴阳光,非常沉默非常骄傲,从不依靠从不寻找。

如何删除alter database ... offline drop掉文件的表空间?QL> connect / as sysdbaConnected to an idle instance.SQL> startupORACLE instance started.Total System Global Area 336662768 bytesFixed Size 450800 bytesVariable Size 117440512 bytesDatabase Buffers 218103808 bytesRedo Buffers 667648 bytesDatabase mounted.ORA-01157: cannot identify/lock data file 3 - see DBWR trace fileORA-01110: data file 3: '/home/oracle/oradata/esal/ts_cybercafe01.dbf'SQL> alter tablespace cybercafe offline;alter tablespace cybercafe offline*ERROR at line 1:ORA-01109: database not openSQL> alter database datafile '/home/oracle/oradata/esal/ts_cybercafe01.dbf' offline drop;Database altered.SQL> alter database open;Database altered.//如果还提示文件不存在的话,那就继续执行datafile的drop命令,直到数据库可以open 为止;SQL> select * from v$tablespace;TS# NAME INC---------- ------------------------------ ---0 SYSTEM YES1 UNDOTBS1 YES2 TEMP YES3 INDX YES4 TOOLS YES5 USERS YES6 IMUSE01 YES7 IMUSE01_INDEX YES8 BILL YES9 IMUSE01_TEMP YES10 EUP_DATA YESTS# NAME INC---------- ------------------------------ ---11 EUP_TEMP YES12 EUP_INDEX YES13 DLSC YES14 DLSC_TEMP YES15 rows selected.SSQL> drop tablespace imuse01 including contents; Tablespace dropped.SQL> drop user imuse508 cascade;User dropped.SQL> select tablespace_name,status from dba_tablespaces; TABLESPACE_NAME STATUS------------------------------ ---------SYSTEM ONLINEUNDOTBS1 ONLINETEMP ONLINETS_CYBERCAFE OFFLINE。

oracle 删除数据后释放数据文件大小的方法

oracle 删除数据后释放数据文件大小的方法

Oracle 删除数据后释放数据文件大小的方法在Oracle数据库中,删除数据后,数据文件的大小并不会立即减小,而是会维持不变,这是因为Oracle使用了一种称为“延迟块清理”的机制来处理已删除的数据。

延迟块清理机制的目的是为了提高性能,避免频繁的磁盘写入操作。

然而,如果数据库中存在大量已删除的数据,这些未释放的空间可能会导致数据文件变得非常庞大,浪费存储资源。

为了解决这个问题,我们需要采取一些措施来释放已删除数据所占用的空间。

本文将介绍一些有效的方法,可以帮助您在Oracle数据库中删除数据后释放数据文件大小。

方法一:使用ALTER TABLE语句进行数据重组ALTER TABLE语句可以用来重新组织表中的数据,将已删除的数据空间释放出来。

具体步骤如下:1.首先,使用以下语句查看表的碎片化情况:SELECT segment_name, sum(bytes)/1024/1024 AS "Size(MB)"FROM dba_extentsWHERE segment_type = 'TABLE'GROUP BY segment_name;2.找到需要重组的表,并使用以下语句执行数据重组:ALTER TABLE table_name MOVE;其中,table_name是需要重组的表名。

3.重复步骤1,确认表的碎片化情况是否得到改善。

方法二:使用TRUNCATE TABLE语句TRUNCATE TABLE语句可以删除表中的所有数据,并释放已删除数据所占用的空间。

具体步骤如下:1.使用以下语句删除表中的所有数据:TRUNCATE TABLE table_name;其中,table_name是需要清空的表名。

2.使用以下语句查看表的碎片化情况:SELECT segment_name, sum(bytes)/1024/1024 AS "Size(MB)"FROM dba_extentsWHERE segment_type = 'TABLE'GROUP BY segment_name;确认表的空间是否得到释放。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何删除 alter database ... offline drop 掉文件的表空间? QL> connect / as sysdba Connected to an idle instance. SQL> startup ORACLE instance started. Total System Global Area 336662768 bytes Fixed Size 450800 bytes Variable Size 117440512 bytes Database Buffers 218103808 bytes Redo Buffers 667648 bytes Database mounted. ORA-01157: cannot identify/lock data file 3 - see DBWR trace file ORA-01110: data file 3: '/home/oracle/oradata/esal/ts_cybercafe01.dbf'
SQL> alter tablespace cybercafe offline; alter tablespace cybercafe offline * ERROR at line 1: ORA-01109: database not open
SQL> alter database offline drop; Database altered.
datafile
'/home/oracle/oradata/esal/ts_cybercafe01.dbf'
பைடு நூலகம்
SQL> alter database open; Database altered. //如果还提示文件不存在的话,那就继续执行 datafile 的 drop 命令,直到数据库可以 open 为止;
TOOLS USERS IMUSE01 IMUSE01_INDEX BILL IMUSE01_TEMP EUP_DATA NAME -----------------------------EUP_TEMP EUP_INDEX DLSC DLSC_TEMP
YES YES YES YES YES YES YES INC --YES YES YES YES
SQL> select * from v$tablespace; TS# ---------0 1 2 3 NAME -----------------------------SYSTEM UNDOTBS1 TEMP INDX INC --YES YES YES YES
4 5 6 7 8 9 10 TS# ---------11 12 13 14
15 rows selected. SSQL> drop tablespace imuse01 including contents; Tablespace dropped. SQL> drop user imuse508 cascade; User dropped. SQL> select tablespace_name,status from dba_tablespaces; TABLESPACE_NAME -----------------------------SYSTEM UNDOTBS1 TEMP TS_CYBERCAFE STATUS --------ONLINE ONLINE ONLINE OFFLINE
相关文档
最新文档