ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 非当前的还原表空间的恢复

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

原创 Linux操作系统 作者:杨奇龙 时间:2010-04-19 22:32:35 0 删除 编辑

在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                          

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

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22664653/viewspace-660178/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 如何获取SCN
请登录后发表评论 登录
全部评论
MySQL DBA NoSQL DEVOPS

注册时间:2009-10-07

  • 博文量
    1026
  • 访问量
    8205978