当前位置:  数据库>oracle

Oracle数据文件转移和丢失处理

    来源: 互联网  发布时间:2017-04-16

    本文导语: 1、数据文件迁移 很简单,三个步骤就行了 第一步:把表空间Offline,把表空间的数据文件移动到D盘指定的目录。 第二步:修改表空间文件路径alter database rename file '旧文件路径' to '新文件路径'; 第三步:把表空间Online,这样就...

1、数据文件迁移

很简单,三个步骤就行了

第一步:把表空间Offline,把表空间的数据文件移动到D盘指定的目录。

第二步:修改表空间文件路径alter database rename file '旧文件路径' to '新文件路径';

第三步:把表空间Online,这样就可以了。

1.1 文件系统数据文件按迁移

database must be open:

1.alter tablespace tbs read only;

2.alter tablespace tbs offline;

3.在offline时拷贝一份原文件,并命名为新文件名

4.alter tablespace tbs rename datafile'tbs_file_old.dbf' to 'tbs_file_new.dbf';

5.alter tablespace tbs online;

6.alter tablespace tbs read write;

7.alter database recover datafile'tbs_file_new.dbf';

 

1.2 裸设备数据文件迁移

database must be mounted but not open:

1.为新的数据文件创建裸设备链接文件

2.starup mount;

3.alter database rename file 'tbs_file_old'to 'tbs_file_new';

4.alter database recover datafile'tbs_file_new';

5.alter database open;

 

2、Oracle系统紧急故障处理 2.1控制文件损坏:

控制文件记录了关于oracle的重要配置信息,如数据库名、字符集名字、各个数据文件、日志文件的位置等等信息。控制文件的损坏,会导致数据库异常关闭。一旦缺少控制文件,数据库也无法启动,这是一种比较严重的错误。

可以通过查询数据库的日志文件来定位损坏了的控制文件。日志文件位于$ORACLE_BASE/admin/bdump/alert_ORCL.ora.

 

2.1.1损坏单个控制文件:

1. 确保数据库已经关闭,如果没有用下面的命令来关闭数据库:

svrmgrl>shutdown immediate;

2. 查看初始化文件$ORACLE_BASE/admin/pfile/initORCL.ora,确定所有控制文件的路径。

3. 用操作系统命令将其它正确的控制文件覆盖错误的控制文件。

4. 用下面的命令重新启动数据库

svrmgrl>startup;

5. 用适当的方法进行数据库全备份。

 

2.1.2损坏所有的控制文件:

1. 确保数据库已经关闭,如果没有用下面的命令来关闭数据库:

svrmgrl>shutdown immediate;

2. 从相应的备份结果集中恢复最近的控制文件。对于没有采用带库备份的点可以直接从磁带上将最近的控制文件备份恢复到相应目录;对于采用带库备份的点用相应的rman脚本来恢复最近的控制文件。

3. 用下面的命令来创建产生数据库控制文件的脚本:

svrmgrl>startup mount;

svrmgrl>alter database backupcontrolfile to trace noresetlogs;

4. 修改第三步产生的trace文件,将其中关于创建控制文件的一部分语句拷贝出来并做些修改,使得它能够体现最新的数据库结构。假设产生的sql文件名字为createcontrol.sql.

注意:Trace文件的具体路径可以在执行完第3)步操作后查看$ORACLE_BASE/admin/bdump/alert_ORCL.ora文件来确定。

5. 用下面命令重新创建控制文件:

svrmgrl>shutdown abort;

svrmgrl>startup nomount;

svrmgrl>@createcontrol.sql;

6. 用适当的方法进行数据库全备份。

 

2.2重做日志文件损坏:

数据库的所有增、删、改都会记录入重做日志。如果当前激活的重做日志文件损坏,会导致数据库异常关闭。非激活的重做日志最终也会因为日志切换变为激活的重做日志,所以损坏的非激活的重做日志最终也会导致数据库的异常终止。在ipas/mSwitch中每组重做日志只有一个成员,所以在下面的分析中只考虑重做日志组损坏的情况,而不考虑单个重做日志成员损坏的情况。

 

确定损坏的重做日志的位置及其状态:

1. 如果数据库处于可用状态:

select * from v$logfile;

svrmgrl>select * from v$log;

2. 如果数据库处于已经异常终止:

svrmlgr>startup mount;

svrmgrl>select * from v$logfile;

svrmgrl>select * from v$log;

其中,logfile的状态为INVALID表示这组日志文件出现已经损坏;log状态为Inactive:表示重做日志文件处于非激活状态;Active:表示重做日志文件处于激活状态;Current:表示是重做日志为当前正在使用的日志文件。

 

2.2.1损坏的日志文件处于非激活状态:

1. 删除相应的日志组:

svrmgrl>alter database drop logfilegroup group_number;

2. 重新创建相应的日志组:

svrmgrl>alter database add log file group group_number (’log_file_descritpion’,…) size log_file_size;

 

2.2.2损坏的日志文件处于激活状态且为非当前日志:

1. 清除相应的日志组:

svrmgrl>alter database clear unarchivedlogfile group group_number;

 

2.2.3损坏的日志文件为当前活动日志文件:

用命令清除相应的日志组:

svrmgrl>alter database clear unarchivedlogfile group group_number;

如果清除失败,则只能做基于时间点的不完全恢复。

打开数据库并且用适当的方法进行数据库全备份:

svrmgrl>alter database open;

 

2.3部分数据文件损坏:

若损坏的数据文件属于非system表空间,则数据库仍然可以处于打开状态可以进行操作,只是损坏的数据文件不能访问。这时在数据库打开状态下可以单独对损坏的数据文件进行恢复。若是system表空间的数据文件损坏则数据库系统会异常终止。这时数据库只能以Mount方式打开,然后再对数据文件进行恢复。可以通过查看数据库日志文件来判断当前损坏的数据文件到底是否属于system表空间。

 

2.3.1非system表空间的数据文件损坏

1. 确定损坏的文件名字:

svrmgrl>select name from v$datafilewhere status=’INVALID’;

2. 将损坏的数据文件处于offline状态:

svrmgrl>alter database datafile‘datafile_name’ offline;

 

3. 从相应的备份结果集中恢复关于这个数据文件的最近的备份。对于没有采用带库备份的点可以直接从磁带上恢复;对于用带库备份的点用相应的rman脚本来恢复。

4. 恢复数据文件:

svrmgrl>alter database recover datafile‘file_name’;

5. 使数据库文件online:

svrmgrl>alter database datafile‘datafile_name’ online;

6. 用适当的方法进行数据库全备份。

 

2.3.2 system表空间的数据文件损坏:

1. 以mount方式启动数据库

svrmgrl>startup mount;

2. 从相应的备份结果集中恢复关于这个数据文件的最近的备份。对于没有采用带库备份的点可以直接从磁带上恢复;对于用带库备份的点用相应的rman脚本来恢复。

3. 恢复system表空间:

svrmgrl>alter database recover datafile‘datafile_name’;

4. 打开数据库:

svrmgrl>alter database open;

5. 用适当的方法进行数据库全备份。


    
 
 

您可能感兴趣的文章:

  • RedHat8上解压Oracle9磁盘丢失磁盘空间,请大虾帮忙!
  • 基于oracle小数点前零丢失的问题分析
  • oracle中fdisk导致的ASM磁盘数据丢失的解决方法
  • Oracle重做日志文件损坏或丢失后的恢复
  • Oracle 密码丢失解决方法祥述
  • oracle下实现恢复一个丢失的数据文件的代码
  • Oracle控制文件的损坏或完全丢失的恢复办法
  • 在Redhat7.2+Oracle8i如果硬件配置中用P4处理器,对oracle的安装有没有影响(100分)
  • Oracle控制文件多元化处理
  • 关于ORACLE中执行批处理的问题
  • oracle删除文件后数据库启动不了的处理方法
  • MS Server和Oracle中对NULL处理的一些细节差异
  • ORACLE DATAGUARD中手工处理日志v$archive_GAP的方法
  • Oracle 10g中用FIRALL处理非连续数组
  • 重新安装主机后ORACLE DB的处理
  • 轻轻松松学会在Oracle中实现时间相加处理
  • Linux系统下导出ORACLE数据库出现Exporting questionable statistics.错误 处理
  • 处理Oracle数据库中杀不掉的锁
  • oracle 11g导出数据时报ORA 1455错误的处理方法
  • redhat 下 oracle proc 预处理总是留下 tpXXXXXX 的临时文件
  • Oracle时间精确到时、分、秒处理方案
  • 一次Oracle故障处理过程
  • Oracle 插入超4000字节的CLOB字段的处理方法
  • Oracle 10g中用FORALL处理非连续数组
  • Oracle对于死锁的处理方法
  • Oracle中关于处理小数点位数的几个函数
  • SQL Server和Oracle并行处理比较分析
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux平台下Oracle 密码文件重建
  • Oracle数据库访问参数文件的顺序
  • Oracle 对数据文件大小的限制
  • Oracle移动数据文件到新分区步骤分析
  • 在jsp文件中怎么设置oracle的路径:很简单的,只是因为我不会;
  • Oracle的spfile参数文件
  • linux下通过对文件读取方式查询oracle的版本信息
  • 求高手指点shell导入.dat文件到ORACLE数据库
  • jsp文件连接oracle失败
  • linux 安装 oracle 运行./runinstall 提示没有这个文件
  • 请教:为什么删除不掉?我用超级用户删除某一文件夹rm -R oracle失败。
  • Oracle数据库逻辑备份的SH文件
  • 利用多个转储文件导出大量Oracle数据
  • 50分的题:如何给oracle减肥?在linux多目录的环境下查找体积最大的单个文件??
  • 用oracle pl/sql 从A unix机器,去读取B unix机器上的一个文件,怎么实现?
  • 读取oracle数据库表写文件慢
  • 如何向oracle中写入一个大文件?谢谢!
  • jsp文件上传smartupload到oracle数据库中没有longblob的数据类型如何处理的?
  • 用Jbuilder编译文件,提示找不到oracle驱动?
  • 回收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,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3