当前位置:  数据库>oracle

Oracle非关键文件恢复,redo、临时文件、索引文件、密码文件

    来源: 互联网  发布时间:2017-06-09

    本文导语: 增量备份的应用在recovery阶段,不再restore阶段 了解数据库设置表:SQL>desc database_properties Name                                      Null?    Type ----------------------------------------- -------- ---------------------------- PROPERTY_NAME      ...

增量备份的应用在recovery阶段,不再restore阶段

了解数据库设置表:
SQL>desc database_properties
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 PROPERTY_NAME                            NOT NULL VARCHAR2(30)
 PROPERTY_VALUE                                    VARCHAR2(4000)
 DESCRIPTION                                        VARCHAR2(4000)

关键性与非关键性
非关键性文件是指数据库和大多数应用程序没有它也能继续运行的文件。例如,如果数据库丢失了一个多路复用重做日志文件,仍可使用其它重做日志文件副本来保持数据库持续运行。
虽然丢失非关键性文件不会导致数据库崩溃,但它会削弱数据库的功能。例如:丢失索引表空间会导致应用程序和查询的运行速度大幅减慢,或者,如果这些索引用于强制实施约束,则丢失后甚至会导致应用程序无法使用。
丢失联机重做日志组(只要不是当前联机日志组)会导致在 LGWR 下一次尝试写入组时数据库操作被挂起,直到生成新的日志文件为止。


丢失临时表空间会使用户无法运行查询或创建索引,直到将这些用户分配到新的临时表空间为止。
 --10g时丢失临时表空间,数据库不能启动,当11g时,丢失了临时文件,数据库会自动创建一个同名同位的临时文件;
 --11g中发生此情时发生这种情况时,启动过程中会在预警日志中显示类似下面的消息:
 --
Re-creating tempfile /u01/app/Oracle/oradata/orcl/temp01.dbf
----------------------------------------------------------------------------------------------------------------

关于redo log的修改与重建

undo表空间与redo日志

一、日志成员丢失:
    要处理重做日志文件的丢失问题,了解重做日志组的可能状态非常重要。在 Oracle DB 正常运行过程中,重做日志组会循环经历三种不同的状态。按照循环的顺序,状态分别是:

CURRENT:此状态表明 LGWR 正在向重做日志组写入数据,以记录数据库中正在进行的所有事务处理的重做数据。该日志组将保持此状态,直到切换至其它日志组为止。

ACTIVE:重做日志组仍包含恢复实例所需的重做数据。这是尚未执行检查点期间重做日志组所处的状态,重做日志组中出现的所有数据更改都将写出到数据文件。

INACTIVE:上述检查点已经执行,这表示不再需要该重做日志组来恢复实例,它可以变为下一个 CURRENT 日志组。

对在线redo log的操作:

查看日志组的状态:
SQL>select GROUP#,SEQUENCE#,MEMBERS,ARCHIVED,STATUS from v$log;

    GROUP#  SEQUENCE#    MEMBERS ARC STATUS
---------- ---------- ---------- --- ----------------
        1          7          2 YES INACTIVE
        2          8          2 NO  CURRENT
        3          6          2 YES INACTIVE
查看日志文件的状态:
SQL>select GROUP# ,TYPE,MEMBER from v$logfile;

    GROUP# TYPE      MEMBER
---------- -----------------------------------------------------------------
        3 ONLINE
/u01/app/oracle/oradata/PROD/onlinelog/o1_mf_3_b22567o2_.log

        3 ONLINE
/u01/app/oracle/fast_recovery_area/PROD/onlinelog/o1_mf_3_b2256827_.log

        2 ONLINE
/u01/app/oracle/oradata/PROD/onlinelog/o1_mf_2_b2255zsg_.log

        2 ONLINE
/u01/app/oracle/fast_recovery_area/PROD/onlinelog/o1_mf_2_b22560gb_.log

        1 ONLINE
/u01/app/oracle/oradata/PROD/onlinelog/o1_mf_1_b2255npg_.log

        1 ONLINE
/u01/app/oracle/fast_recovery_area/PROD/onlinelog/o1_mf_1_b2255nxl_.log

  --删除原有的日志组;(只操作状态为inactive的日志组)
  --若要操作日志组为current时,需先进行日志切换:alter system switch logfile;
  --若为active时,则可强制进行检查点:alter system checkpoint;

1.操作日志文件;

1).当某个日志组中的一个数据文件丢失,对其在线操作,先添加,再删除;

alter database add logfile member '/u01/app/oracle/oradata/PROD/onlinelog/o1_mf_2_b_.log' to group 2;

alter database drop logfile member '/u01/app/oracle/oradata/PROD/onlinelog/o1_mf_1_b2255npg_.log' to group 2;

2).在线添加一个组,再添加一个成员;

SQL>alter database add logfile group 4 '/u01/app/oracle/oradata/ORCL/onlinelog/redo04.log'size 100m;

SQL>alter database add logfile member'/u01/app/oracle/oradata/ORCL/onlinelog/redo04_b.log' to group 4;

3).查看日志组及成员;
SQL>select GROUP#,members,BYTES/1024/1024 size_M,STATUS,ARCHIVED from v$log;


2.日志文件丢失,重启或alter system switch logfile 触发报错;生产库中一般是日志切换触发错误;

1)丢失非current redo日志组

select a.group#, a.status, a.archived,b.member from v$log a,v$logfile b where a.group#=b.group#;
  --查看日志组状态及文件虽在位置

$rm /u01/app/oracle/oradata/ENMOEDU/redo09*
    --删除第九组的全部文件
$ls /u01/app/oracle/oradata/ENMOEDU/redo09*
    --查看是否删除成功
   
Sql> shutdown immediate
Sql> startup
    --重启数据库触发出错
Sql> startup mount
Sql> alter database clear logfile group 9;
    --重建了第九组的了两个文件,两个文件都是空的;
Sql> alter database open;

 cat  /u01/app/oracle/oradata/ENMOEDU/redo03*;
    --查看物理地址,查看是否生成文件


SQL>select GROUP#,members,BYTES/1024/1024 size_M,STATUS,ARCHIVED from v$log;
    --查看日志组及成员


Alert日志中的错误:
Errors in file

/u01/app/oracle/diag/rdbms/enmoedu/ENMOEDU/trace/ENMOEDU_lgwr_35031.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/ENMOEDU/redo01.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Errors in file /u01/app/oracle/diag/rdbms/enmoedu/ENMOEDU/trace/ENMOEDU_lgwr_35031.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/ENMOEDU/redo01.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

2).丢失当前redo日志组

select a.group#, a.status, a.archived,b.member
from v$log a,v$logfile b
where a.group#=b.group#;

$rm /u01/app/oracle/oradata/ENMOEDU/redo09*;

alter system switch logfile;
/
/
数据库出现hanging现象,在alert.log中报错;

或重启数据库触发错误:
Sql> shutdown immediate
Sql> startup
  --触发出错
SQL> startup mount
ORACLE instance started.

Total System Global Area  237998080 bytes
Fixed Size                  2227216 bytes
Variable Size            192938992 bytes
Database Buffers          37748736 bytes
Redo Buffers                5083136 bytes
Database mounted.

SQL> alter database clear logfile group 9;
    --丢失current状态日志组,不能这样恢复

alter database clear logfile group 9
*
ERROR at line 1:
ORA-00350: log 9 of instance ENMOEDU (thread 1) needs to be archived
ORA-00312: online log 9 thread 1: '/u01/app/oracle/oradata/ENMOEDU/redo03.log'


SQL> alter database clear unarchived logfile group 9;
    --无归档恢复
Database altered.

验证:

!ls /u01/app/oracle/oradata/ENMOEDU/
 
SQL> select GROUP#,members,BYTES/1024/1024 size_M,STATUS,ARCHIVED from v$log;


----------------------------------------------------------------------------------------------------------------


二、丢失临时文件:

1.--查看临时文件的位置及名称
SYS>select name from v$tempfile;
/u01/app/oracle/oradata/PROD/datafile/o1_mf_temp_b22570tq_.tmp

2.--删除临时文件
SYS>!rm /u01/app/oracle/oradata/PROD/datafile/o1_mf_temp_b22570tq_.tmp

3.--触发错误,临时文件未找到
SYS>create global temporary table tab_temp as select * from dba_objects;
create global temporary table tab_temp as select * from dba_objects
                                                        *
ERROR at line 1:
ORA-01116: error in opening database file 201
ORA-01110: data file 201:
'/u01/app/oracle/oradata/PROD/datafile/o1_mf_temp_b22570tq_.tmp'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

4.在知道临时数据文件丢失时,可以不需要重新启动数据库就可以在丢失了临时文件后进行恢复;

SQL> ALTER TABLESPACE temp ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp02.dbf' SIZE 20M;
 Tablespace altered.

 

SQL> ALTER TABLESPACE temp DROP TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf';
 

Tablespace altered.
 

5. 1)在11g中还可以重启数据库,数据库会自动重建临时数据文件,可以查看alert日志看相关信息(一般直接第4步就可以了)

shutdown immediate;

SYS>startup
ORACLE instance started.
Total System Global Area  839282688 bytes
Fixed Size                  2257880 bytes
Variable Size            545262632 bytes
Database Buffers          289406976 bytes
Redo Buffers                2355200 bytes
Database mounted.
Database opened.

SYS>select name from v$tempfile;
/u01/app/oracle/oradata/PROD/datafile/o1_mf_temp_b29o0g6r_.tmp

1 row selected.
  --数据库重建

2)在11g以前,如数据库不能重起,可以创建新的临时表空间:

create temporary tablespace temp2 tempfile
'/u01/app/oracle/oradata/orcl/temp2.dbf' size 10m reuse autoextend on  maxsize  200m;

SQL>alter database default temporary tablespace temp2;
  --将新的表空间设置为默认的临时表空间

SQL>drop tablespace temp including contents and datafiles;
  --删除旧的表空间及其数据

SQL>ALTER TABLESPACE temp ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp2.dbf' SIZE 20M;
  --给临时表空间添加文件

SYS>select * from database_properties
        where property_name='DEFAILT_TEMP_TABLESPACE';  --查看当前数据库默认数据库

更多详情见请继续阅读下一页的精彩内容:


    
 
 

您可能感兴趣的文章:

  • Linux平台下Oracle 密码文件重建
  • Oracle数据库访问参数文件的顺序
  • Oracle 对数据文件大小的限制
  • Oracle移动数据文件到新分区步骤分析
  • 在jsp文件中怎么设置oracle的路径:很简单的,只是因为我不会;
  • Oracle的spfile参数文件
  • linux下通过对文件读取方式查询oracle的版本信息
  • 求高手指点shell导入.dat文件到ORACLE数据库
  • jsp文件连接oracle失败
  • linux 安装 oracle 运行./runinstall 提示没有这个文件
  • oracle删除文件后数据库启动不了的处理方法
  • 请教:为什么删除不掉?我用超级用户删除某一文件夹rm -R oracle失败。
  • Oracle控制文件多元化处理
  • Oracle数据库逻辑备份的SH文件
  • 利用多个转储文件导出大量Oracle数据
  • 50分的题:如何给oracle减肥?在linux多目录的环境下查找体积最大的单个文件??
  • 用oracle pl/sql 从A unix机器,去读取B unix机器上的一个文件,怎么实现?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式 iis7站长之家
  • 如何向oracle中写入一个大文件?谢谢!
  • jsp文件上传smartupload到oracle数据库中没有longblob的数据类型如何处理的?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle与Mysql主键、索引及分页的区别小结
  • 从Oracle的约束到索引
  • Oracle 9i轻松取得建表和索引的DDL语句
  • Oracle9i取得建表和索引的DDL语句
  • oracle10g全文索引自动同步语句使用方法
  • Oracle建立二进制文件索引的方法
  • 在Oracle 10g中如何获得索引的专家建议
  • Oracle全文索引设置
  • 用Oracle 9i全索引扫描快速访问数据
  • Oracle中如何把表和索引放在不同的表空间里
  • Oracle索引存储关系到数据库的运行效率
  • Oracle索引聚簇表的数据加载
  • 在Oracle中监控和跟踪索引使用情况
  • oracle 索引的相关介绍(创建、简介、技巧、怎样查看) .
  • Oracle中检查是否需要重构索引的sql
  • 轻松取得Oracle 9i建表和索引DDL语句
  • 深度揭露Oracle索引使用中的限制
  • Oracle索引(B*tree与Bitmap)的学习总结
  • oracle 索引不能使用深入解析
  • SQL Server和Oracle数据库索引介绍
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,