Oracle UNDO表空间重建方法

来源:岁月联盟 编辑:zhuzhu 时间:2009-10-23

Oracle还是比较常用的,于是我研究了一下Oracle UNDO表空间,在这里拿出来和大家分享一下,希望对大家有用。

一.为了打开数据库,首先想到的是将坏的日志清除掉,但是:

  1. SQL> alter database clear unarchived logfile group 3 ;  
  2. SQL> alter database clear unarchived logfile group 3 unrecoverable datafile;  
  3. alter database clear unarchived logfile group 3 unrecoverable datafile 

二.系统Oracle UNDO表空间的重建

1. 创建新的Oracle UNDO表空间

  1. CREATE UNDO TABLESPACE "UNDOTEMP"  
  2. DATAFILE 'G:/ORACLE/ORADATA/HOME/UNDOTEMP.ora' SIZE 5M  
  3. CREATE UNDO TABLESPACE "UNDOTEMP"  DATAFILE 
  4. '/home/oracle/oradata/oracle9/UNDOTEMP.ora' SIZE 50M 

2. 在OEM控制台修改系统默认的Oracle UNDO表空间名,由UNDOTBS改为UNDOTEMP,或通过下面的命令修改默认Oracle UNDO表空间的标识

  1. ALTER SYSTEM SET UNDO_TABLESPACE = UNDOTEMP 

3. 删除原来的系统默认Oracle UNDO表空间,并重建UNDOTBS

  1. DROP TABLESPACE "UNDOTBS1" INCLUDING CONTENTS AND DATAFILES 

4. 在OEM控制台修改系统默认的Oracle UNDO表空间名,由 UNDOTEMP 改为 UNDOTBS,改回原有的Oracle UNDO表空间标识

  1. ALTER SYSTEM SET UNDO_TABLESPACE = UNDOTBS 

5. 删除临时创建的Oracle UNDO表空间UNDOTEMP

  1. DROP TABLESPACE "UNDOTEMP" INCLUDING CONTENTS AND DATAFILES 

三.ORACLE 9I 重建 TEMP 表空间

1.startup:启动数据库

2.create temporary tablespace  TEMP_TEMP TEMPFILE '/home/oracle/oradata/oracle9/temp_temp.dbf' SIZE 128M REUSE AUTOEXTEND
ON NEXT 640K MAXSIZE UNLIMITED:创建中转临时表空间

3.alter database default  temporary tablespace  TEMP_TEMP:改变缺省临时表空间 为刚刚创建的新临时表空间temp2

4.drop tablespace temp including contents and datafiles:删除原来临时表空间

5.create temporary tablespace  TEMP TEMPFILE '/home/oracle/oradata/oracle9/temp01.dbf' SIZE 512M REUSE AUTOEXTEND ON NEXT  640K MAXSIZE UNLIMITED:重新创建临时表空间

6.alter database default  temporary tablespace  temp:重置缺省临时表空间