130108还原临时表空间

临时表空间由于其特殊性,不能也不需要备份,在临时表空间出错时或者还原数据库到新环境需要新建临时表空间时,我们使用两种方法对其进行还原: 方法1)建立新的临时表空间文件,删除受损的临时表空间旧文件; 方法2)替换一个受损的临时表空间,修改系统默认表空间到新的临时表空间上; 方法1)建立新的临时表空间文件,删除受损的临时表空间旧文件; SQL> alter tablespace temp begin backup; alter tablespace temp begin backup * ERROR at line 1: ORA-03217: invalid option for alter of TEMPORARY TABLESPACE 由于是临时表空间,所以不能进行备份,也不需要进行备份 SQL> alter tablespace temp add tempfile 'temp02.dbf' size 10M; Tablespace altered. SQL> select t.name, d.name, d.bytes / 1024 / 1024 from v$tablespace t, v$tempfile d where d.TS# = t.TS#; NAME ------------------------------ NAME ------------------------------------------------------------------------------------------------------------------------ D.BYTES/1024/1024 ----------------- TEMP D:\ORACLE\ORADATA\TEST\TEMP01.DBF 29 TEMP D:\ORACLE\PRODUCT\11.2.0\TEST\DATABASE\TEMP02.DBF 10 NAME ------------------------------ NAME ------------------------------------------------------------------------------------------------------------------------ D.BYTES/1024/1024 ----------------- 由于没有指定目录,所以添加临时表空间文件到默认位置;不是正确位置; SQL> alter database tempfile 'temp01.dbf' offline; alter database tempfile 'temp01.dbf' offline * ERROR at line 1: ORA-01516: nonexistent log file, data file, or temporary file "temp01.dbf" 删除时需要先offline,并且填写完整路径; SQL> alter database tempfile 'D:\ORACLE\ORADATA\TEST\TEMP01.DBF' offline; Database altered. SQL> ALTER DATABASE TEMPFILE 'D:\ORACLE\ORADATA\TEST\TEMP01.DBF' DROP; ALTER DATABASE TEMPFILE 'D:\ORACLE\ORADATA\TEST\TEMP01.DBF' DROP * ERROR at line 1: ORA-25152: TEMPFILE cannot be dropped at this time SQL> ALTER DATABASE TEMPFILE 'D:\ORACLE\ORADATA\TEST\TEMP01.DBF' DROP; ALTER DATABASE TEMPFILE 'D:\ORACLE\ORADATA\TEST\TEMP01.DBF' DROP * ERROR at line 1: ORA-25152: TEMPFILE cannot be dropped at this time 是因为还有用户在,所以暂时无法删除; SQL> alter database tempfile 'D:\ORACLE\ORADATA\TEST\TEMP01.DBF' offline; Database altered. SQL> ALTER DATABASE TEMPFILE 'D:\ORACLE\ORADATA\TEST\TEMP01.DBF' DROP; ALTER DATABASE TEMPFILE 'D:\ORACLE\ORADATA\TEST\TEMP01.DBF' DROP * ERROR at line 1: ORA-25152: TEMPFILE cannot be dropped at this time SQL> EXIT 当前用户由于执行过查询命令,所以有可能使用到临时表空间,退出该用户; Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production PS D:\oracle\diag\rdbms\test\test\trace> PS C:\Users\calvin> SQLPLUS / AS SYSDBA SQL*Plus: Release 11.2.0.1.0 Production on Tue Jan 8 18:00:14 2013 Copyright (c) 1982, 2010, Oracle.  All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production SQL> ALTER DATABASE TEMPFILE 'D:\ORACLE\ORADATA\TEST\TEMP01.DBF' DROP; Database altered. 重新连接后在此删除,成功;以上为通过替换一个受损的临时文件,还原临时表空间的方法; 方法2)替换一个受损的临时表空间,修改系统默认表空间到新的临时表空间上; 新建临时表空间 temp02; SQL> CREATE temporary tablespace TEMP02 TEMPFILE 'D:\ORACLE\ORADATA\TEST\TEMP02_A.DBF' SIZE 10M; Tablespace created. 将数据库默认的临时表空间修改为新建的临时表空间; SQL> alter database default temporary tablespace TEMP02; Database altered. 删除旧的临时表空间,一并将系统磁盘上的内容及数据文件删除; SQL> drop tablespace temp including contents and datafiles; Tablespace dropped. SQL>

转载于:https://blog.51cto.com/1310976/1111921


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部