热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Oracle数据文件转移和丢失处理-mysql教程

1、数据文件迁移很简单,三个步骤就行了第一步:把表空间Offline,把表空间的数据文件移动到D盘指定的目录。第二步:修改表空

1、数据文件迁移 很简单,三个步骤就行了 第一步:把表空间Offline,把表空间的数据文件移动到D盘指定的目录。 第二步:修改表空

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. 用适当的方法进行数据库全备份。

linux

推荐阅读
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 本文详细介绍了Oracle RMAN中的增量备份机制,重点解析了差异增量和累积增量备份的概念及其在不同Oracle版本中的实现。通过对比两种备份方式的特点,帮助读者选择合适的备份策略。 ... [详细]
  • StoredProcedure “存储过程名” 的TextHeader 中存在语法错误
    修改存储过程的时候出现StoredProcedure“存储过程名”的TextHeader中存在语法错误出现这样的问题的解决方法(本人修改已成功)在创建存 ... [详细]
  • 本文详细介绍了如何处理Oracle数据库中的ORA-00227错误,即控制文件中检测到损坏块的问题,并提供了具体的解决方案。 ... [详细]
  • 本文探讨了在SharePoint环境中使用BDC(Business Data Catalog)时遇到的问题及其解决策略,包括XML文件导入SSP后的不可见性问题以及与远程SQL Server 2005连接的难题。 ... [详细]
  • 面对众多的数据分析工具,如何选择最适合自己的那一个?对于初学者而言,了解并掌握几种核心工具是快速入门的关键。本文将从数据处理的不同阶段出发,推荐三种广泛使用的数据分析工具。 ... [详细]
  • 本文详细介绍了Hive中用于处理日期和时间的各种函数,包括UNIX时间戳与日期之间的转换、日期提取以及日期计算等,帮助读者更好地理解和使用这些函数。 ... [详细]
  • Hadoop集群搭建:实现SSH无密码登录
    本文介绍了如何在CentOS 7 64位操作系统环境下配置Hadoop集群中的SSH无密码登录,包括环境准备、用户创建、密钥生成及配置等步骤。 ... [详细]
  • 本文详细介绍了Socket在Linux内核中的实现机制,包括基本的Socket结构、协议操作集以及不同协议下的具体实现。通过这些内容,读者可以更好地理解Socket的工作原理。 ... [详细]
  • 本文介绍了一种在 Android 开发中动态修改 strings.xml 文件中字符串值的有效方法。通过使用占位符,开发者可以在运行时根据需要填充具体的值,从而提高应用的灵活性和可维护性。 ... [详细]
  • HDU 2537 键盘输入处理
    题目描述了一个名叫Pirates的男孩想要开发一款键盘输入软件,遇到了大小写字母判断的问题。本文提供了该问题的解决方案及实现方法。 ... [详细]
  • 本文探讨了如何通过JavaScript检测鼠标是否离开了浏览器窗口,包括使用原生方法和第三方库的不同解决方案。 ... [详细]
  • ACM经典书籍推荐
    本文介绍了几本在算法和计算机科学领域具有重要影响力的书籍,包括由Donald E. Knuth编著的《计算机程序设计艺术》第一卷,以及潘氏兄弟的数论经典教材等。这些书籍不仅是学习相关领域的宝贵资源,也是专业人士不可或缺的参考书。 ... [详细]
  • 本文探讨了在AspNetForums平台中实施基于角色的权限控制系统的方法,旨在为不同级别的用户提供合适的访问权限,确保系统的安全性和可用性。 ... [详细]
  • 本文总结了 #define 在 C/C++ 编程中的多种用途和技巧,包括定义常量、函数、宏以及条件编译等,并提供了详细的示例和注意事项。 ... [详细]
author-avatar
mobiledu2502853717
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有