非当前的还原表空间的恢复

简介: 在oracle系统中一些非关键的表空间可以不进行备份,如果表空间崩溃了,就可以通过重建进行恢复,对于非当前的还原表空间可以使用这一方法: 实验如下: SQL> conn system/yang已连接。

在oracle系统中一些非关键的表空间可以不进行备份,如果表空间崩溃了,就可以通过重建进行恢复,对于非当前的还原表空间可以使用这一方法:

实验如下:

SQL> conn system/yang
已连接。

1。列出数据库中所有的还原表空间
SQL> select tablespace_name ,status,contents
  2  from dba_tablespaces where contents='UNDO';

TABLESPACE_NAME  STATUS    CONTENTS                              
------------------------------ --------- ---------                             
UNDOTBS1                       ONLINE    UNDO                                  

2.列出所有关于还原操作的所有参数,

SQL> SHOW parameter undo

NAME                                 TYPE        VALUE                         
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO                          
undo_retention                       integer     900                           
undo_tablespace                      string      UNDOTBS1                      
SQL> @f:\undo.sql----改代码 在留言里

表空间已创建。

3.再次列出数据库中所有的还原表空间 查看刚才建的undo表空间

SQL> select tablespace_name ,status,contents
  2  from dba_tablespaces where contents='UNDO';

TABLESPACE_NAME                STATUS    CONTENTS                              
------------------------------ --------- ---------                             
UNDOTBS1                       ONLINE    UNDO                                  
YANG_UNDO                      ONLINE    UNDO                                  

SQL> SHOW parameter undo  ---结果显示当前的还原表空间仍未undotbs1

NAME                                 TYPE        VALUE                         
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO                          
undo_retention                       integer     900                           
undo_tablespace                      string      UNDOTBS1     

  4 查询数据库中所有表空间对应的数据文件。               
SQL> set line 120
SQL> col  file_name for a55
SQL> col tablespace_name for a15
SQL> select file_id,file_name,tablespace_name,bytes/1024/1024 MB
  2  from dba_data_files
  3  where tablespace_name like '%UNDO%';

   FILE_ID FILE_NAME                                               TABLESPACE_NAME         MB                          
---------- ------------------------------------------------------- --------------- ----------                          
         3 F:\APP\YANG\ORADATA\ORACL\UNDOTBS01.DBF                 UNDOTBS1                80                          
         6 F:\ORCL\YANG_UNDO.DBF                                   YANG_UNDO               50      

5,。将用户切换到sysdba 用户下,以便接下来进行直接启动。                    

SQL> conn system/yang as sysdba
已连接。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

6 此时,模拟刚才建的yang_undo 表空间损坏,将它删除。之后,重启数据库
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  535662592 bytes                                                                              
Fixed Size                  1334380 bytes                                                                              
Variable Size             130024340 bytes                                                                              
Database Buffers          398458880 bytes                                                                              
Redo Buffers                5844992 bytes                                                                              
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 6 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 6: 'F:\ORCL\YANG_UNDO.DBF'

错误显示 数据文件 6 出现问题 ,所以,使用如下命令将其脱机并删除。
SQL> alter database datafile 6 offline drop;

数据库已更改。

之后,将数据库由mount状态 直接转换为 open

SQL> alter database open;
 

数据库已更改。

7.查询数据库中所有表空间对应的数据文件。

SQL> select file_id,file_name,tablespace_name,bytes/1024/1024 MB
  2  from dba_data_files
  3  where tablespace_name like '%UNDO%';

   FILE_ID FILE_NAME                                               TABLESPACE_NAME         MB                          
---------- ------------------------------------------------------- --------------- ----------                          
         3 F:\APP\YANG\ORADATA\ORACL\UNDOTBS01.DBF                 UNDOTBS1                80                          
         6 F:\ORCL\YANG_UNDO.DBF                                   YANG_UNDO  

8.查询数据库中的所有还原表空间。SQL> select tablespace_name ,status,contents
  2  from dba_tablespaces where contents='UNDO';

TABLESPACE_NAME STATUS    CONTENTS                                                                                     
--------------- --------- ---------                                                                                    
UNDOTBS1        ONLINE    UNDO                                                                                         
YANG_UNDO       ONLINE    UNDO                                                                                         

由显示可知,出错的表空间还在,因此,使用如下命令,将yang_undo 表空间 删除。                                        

SQL> drop tablespace yang_undo;

表空间已删除。

再次查看,yang_undo 已不在。

SQL> select tablespace_name ,status,contents
  2  from dba_tablespaces where contents='UNDO';

TABLESPACE_NAME STATUS    CONTENTS                                                                                     
--------------- --------- ---------                                                                                    
UNDOTBS1        ONLINE    UNDO                                                                                         

SQL> select file_id,file_name,tablespace_name,bytes/1024/1024 MB
  2  from dba_data_files
  3  where tablespace_name like '%UNDO%';

   FILE_ID FILE_NAME                                               TABLESPACE_NAME         MB                          
---------- ------------------------------------------------------- --------------- ----------                          
         3 F:\APP\YANG\ORADATA\ORACL\UNDOTBS01.DBF                 UNDOTBS1                80                          

9,再次创建yang_undo 表空间。并查询

SQL> @f:\undo.sql

表空间已创建。

SQL> select tablespace_name ,status,contents
  2  from dba_tablespaces where contents='UNDO';

TABLESPACE_NAME STATUS    CONTENTS                                                                                     
--------------- --------- ---------                                                                                    
UNDOTBS1        ONLINE    UNDO                                                                                         
YANG_UNDO       ONLINE    UNDO                                                                                         

SQL> select file_id,file_name,tablespace_name,bytes/1024/1024 MB
  2  from dba_data_files
  3  where tablespace_name like '%UNDO%';

   FILE_ID FILE_NAME                                               TABLESPACE_NAME         MB                          
---------- ------------------------------------------------------- --------------- ----------                          
         3 F:\APP\YANG\ORADATA\ORACL\UNDOTBS01.DBF                 UNDOTBS1                80                          
         6 F:\ORCL\YANG_UNDO.DBF                                   YANG_UNDO               50                          

至此,非当前的还原表空间的恢复成功。。。

目录
相关文章
|
11月前
|
Oracle 关系型数据库 数据库
4、数据文件的备份与恢复
数据文件的备份与恢复
106 0
|
11月前
|
SQL Oracle 关系型数据库
3、控制文件的备份与恢复
控制文件的备份与恢复
91 0
|
JSON NoSQL 关系型数据库
备份与还原
备份与还原
64 0
|
SQL Oracle 关系型数据库
oracle数据库控制文件的备份和恢复之一手动备份和恢复
实验步骤:手动备份和恢复oracle控制文件
517 0
|
关系型数据库 MySQL 数据库
myloader还原恢复详解
<p></p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; color:rgb(85,85,85); font-family:'microsoft yahei'; font-size:15px; line-height:35px"> <span style="font
5547 0

相关实验场景

更多