首页 数据库 mysql教程 优化Oracle停机时间及数据库恢复

优化Oracle停机时间及数据库恢复

Jun 07, 2016 pm 06:04 PM

优化Oracle停机时间及数据库恢复

正在看的ORACLE教程是:优化Oracle停机时间及数据库恢复。

 这里会讨论令Oracle停机时间最小化的步骤。各种形式的停机--计划的或者是非计划的--总是不断地发生,一个DBA应该有正确的备份策略,这样在数据库出现问题时就可以更快地恢复。

  以下是假定的备份策略和数据库的运作条件

   控制文件是镜像的

   数据库运行在archivelog模式

   每个星期都进行冷备份

   每日都进行热备份

   每日都进行一次全数据库导出

  事件1:完整的数据库重构

  在这种情形下,你可以使用全数据库导出或者冷热备份结合的方式来重构数据库。要注意的是无论你选择哪种方式,在线redo log中的事务都会丢失。

  事件2:恢复部分的表空间

  可以使用以下的步骤来恢复:

   1、以restrict模式启动数据库

   2、重新创建表空间

   3、使用最新的全数据库导出来导入,并且使用ignore=y的选项;

   4.关闭并且重新以normal的模式启动数据库实例

  事件3:丢失一般的数据文件

  丢失一般数据文件的恢复步骤根据所丢失的数据文件包含的表空间类型而定;例如:回滚段,用户表空间,索引表空间或者是只读的表空间、你可能会遇到以下的错误:

   . 尝试启动数据库并且碰到错误的信息ORA-1157, ORA-1110,可能还有一个操作系统的错误

   . 尝试以normal或者immediate的模式关闭数据库,可能会碰到ORA-1116, ORA-1110的错误信息,还有一个系统错误

  以下的步骤可以用作恢复:

   1、关闭数据库

   2、由热备份中恢复丢失的数据文件

   3、Startup mount数据库

   4、执行以下的查询来得到所有你的在线redo log文件和它们相应的次序和首次修改号:


  5、如果得到的CHANGE#比在线redo log最小的FIRST_CHANGE# 还小,那么该文件不能被完全恢复,你可以有两个选择:

   . 如果可以接受丢失最近一次冷备份以来的数据库修改,装入备份并且继续恢复

   . 如果不能接受丢失数据库的修改,那么必须重新创建表空间

  6、通过使用存档和在线的redo log来恢复数据文件

  7、打开数据库


[NextPage]

事件4:恢复一个特别的表

  可以采用以下的步骤恢复:

   1、使用最近的一次全数据库导出来导入表,并且使用owner=和tables=的选项

   2、考虑到性能的原因,可能需要重建表索引

  事件5:丢失控制文件

  在数据库起来并且运行时,通常都不能检测到控制文件的问题、如果控制文件丢失或者损坏了,Oracle将不会了解,下次数据库的启动时将会导致ORA-205错误(标识控制文件"%s的错误),还有一个系统级的错误、

  如果只是丢失了其中的一个控制文件,可以采用下面的步骤来恢复:

   1、如果它正在运行的话,先关闭它

   2、查找丢失控制文件的原因、是由于硬件的问题吗(磁盘还是控制器)?

   3、如果不是硬件的问题,将控制文件的一个好的拷贝复制到丢失的位置,并且跳到步骤5、

   4、如果是硬件的问题,复制一个好的控制文件拷贝到一个可靠的位置

   5、编辑initsid.ora 或者 configsid.ora,更新CONTROL_FILES以反映最新的控制文件位置

   6、启动数据库

  事件6:丢失全部的控制文件

  可以采用以下的步骤恢复:

   1、关闭数据库

   2、进行一次全数据库备份,包括全部的数据文件和redo log文件

   3、以NOMOUNT的状态启动数据库

   4、使用CREATE CONTROLFILE重新创建控制文件、你也可以备份控制文件到一个trace文件,然后执行该文件

   5、在数据库上进行媒体恢复

   6、打开数据库

   7、使用shutdown normal关闭数据库

   8、对数据库进行一次冷备份

  事件7:丢失一个索引

  最简单的方法就是重新创建丢失的索引

  事件8:丢失一个非活动的redo log

  如果丢失redo数据,恢复将是不完全的,必须重新创建涉及的表空间。要重新创建表空间,可以使用全的数据库导出,这样就可以很容易的导入数据并且重新创建该表空间的对象。可以使用以下的步骤来恢复:

   1、通过Alter system来切换redo log文件

   2、关闭数据库

   3、startup mount数据库

   4、离线删除涉及的数据文件

   5、打开数据库

   6、删除用户的表空间,包括其中的内容、

   7、通过全数据库备份重新创建表空间和其中的对象
 
  事件9:丢失活动的Redo log

  如事件8讨论的一样,如果丢失了redo数据,恢复将是不完全的,必须重新创建涉及的表空间、可以采用以下的步骤恢复:

   1、关闭数据库

   2、startup mount数据库

   3、离线删除涉及的数据文件

   4、打开数据库

   5、删除用户的表空间,包括其中的内容、

   6、通过全数据库备份重新创建表空间和其中的对象

  要注意的是活动的事务将会丢失

  事件10:丢失存档的Redo log文件

  如果存档的redo log文件丢失,应该马上进行一次冷备份、最好也进行一次全数据库导出、没有丢失的存档redo log文件的任何恢复都将是不完全的、

  事件11:丢失活动的回滚段

  这里指的是丢失一个回滚段的一个数据文件、这是一个危急的恢复过程,它主要是在于保存活动的事务。这里假定数据库已经起来,而你想保存当前运行的事务。要使用以下的恢复过程,数据库必须运行在archivelog模式下。

  可以使用以下步骤恢复:

   1、不要关闭数据库、对于这种事件,数据库启动比关闭更容易解决问题、

   2、令属于该数据文件中的全部回滚段离线

   3、删除全部离线的回滚段

   4、在上面的第2步中,如果回滚段中有活动的事务,你将不能令它离线、可运行以下的查询来查看哪些事物是活动的:


  如果上面的查询没有结果,那么所有的回滚段都是离线的,但是,如果上面的查询返回一行或者多行,并且其状态为PENDING OFFLINE,那么可检查这些回滚段的ACTIVE_TX列、带有0值的回滚段将很快会离线;但是,非0的值表示上面有活动的事务,它们需要被提交或者回滚、

   5、处理活动的事务、执行以下的查询来查看哪些用户的事务被指派到该回滚段:


  在知道哪些用户在"pending offline"的回滚段上有活动的事务后,可以要求他们提交或者回滚他们的事务,或者可以使用以下的命令杀掉它们的进程:

   ALTER SYSTEM KILL SESSION 'sid, serial#';

   6、在你处理完所有活动的事务后,执行以下的步骤:

    丢弃表空间及其中的全部内容

    重新创建回滚表空间

    重新创建回滚段,并且令它们在线

[NextPage]

事件12:丢失全部的回滚段

  在这种事件下,将丢失全部活动的事务,并且需要重新创建回滚段。这样大的问题可能是由于一个硬件问题造成的,可以采用以下的步骤恢复:

[1]

正在看的ORACLE教程是:优化Oracle停机时间及数据库恢复。
   1、关闭数据库

   2、使用DBVERIFY验证全部的数据文件

   3、解决其它的硬件问题或者数据文件损坏

   4、以startup mount的方式启动数据库实例

   5、在数据库上执行媒体恢复
 
   6、打开数据库

   7、按需要创建新的回滚段

  事件13:导出文件损坏

  如果导出文件不能用了,那么应该冷备份数据库并且进行一个全的数据库导出、这是假定数据库自身没有问题、如果数据库也损坏了,那么应该执行以下的步骤:

   1、ORA-1157错误信息通常都表示一个或者多个的数据文件损坏了。查明哪些表受到影响,它们应该是错误信息中指明的数据文件中的表格

   2、跳过坏的数据块,将数据由表格中选择到临时表格中、

   3、丢弃损坏的表

   4、将临时表重命名为丢弃的表

   5、重新建立受影响表上的全部索引

   6、使用VALIDATE STRUCTURE CASCADE的选项来分析全部损坏的表

  要注意的是损坏块中数据将会丢失并且不能恢复

  事件14:在热备份时关机

  如果在热备份正在进行的时候突然关机,其中的一些表空间将可能处在备份模式、当你尝试打开数据库时,它将只能mount,并且指示某些表空间处于热备份模式、由于数据库不能打开,你将不能让表空间脱离热备份模式、你可以使用以下的步骤恢复:

   1、startup mount数据库

   2、查询v$backup以查看哪些数据文件处于ACTIVE状态、

   3、通过使用命令ALTER DATABASE DATAFILE END BACKUP.来将这些数据文件脱离备份模式

   4、打开数据库

  事件15:恢复到某个特别的时间点

  以下的步骤可用来执行point-in-time恢复

   1、关闭数据库实例

   2、以NOMOUNT的状态启动数据库实例

   3、使用UNTIL的选项来恢复数据库

   4、打开数据库

   5、Shutdown NORMAL

   6、启动数据库实例

  事件16:恢复到一个特别的事件或者活动

  可以使用以下的步骤来恢复:

   1、关闭数据库实例

   2、以NOMOUNT状态启动数据库实例;

   3、使用UNTIL CANCEL来恢复数据库,提供存档的redo log文件请求直到该活动/事件为止

   4、输入CANCEL来取消恢复

   5、打开数据库;

   6、使用NORMAL的模式来关闭数据库

   7、启动数据库实例

  结论
 
  高可用性对于任何的商业都是很重要的,ORACLE DBA可以通过一些计划以确保停机时间最小化、这篇文章讨论了不同的策略可以达到这个目的。

上一页

[2]

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1659
14
CakePHP 教程
1415
52
Laravel 教程
1309
25
PHP教程
1257
29
C# 教程
1231
24
与MySQL中使用索引相比,全表扫描何时可以更快? 与MySQL中使用索引相比,全表扫描何时可以更快? Apr 09, 2025 am 12:05 AM

全表扫描在MySQL中可能比使用索引更快,具体情况包括:1)数据量较小时;2)查询返回大量数据时;3)索引列不具备高选择性时;4)复杂查询时。通过分析查询计划、优化索引、避免过度索引和定期维护表,可以在实际应用中做出最优选择。

可以在 Windows 7 上安装 mysql 吗 可以在 Windows 7 上安装 mysql 吗 Apr 08, 2025 pm 03:21 PM

是的,可以在 Windows 7 上安装 MySQL,虽然微软已停止支持 Windows 7,但 MySQL 仍兼容它。不过,安装过程中需要注意以下几点:下载适用于 Windows 的 MySQL 安装程序。选择合适的 MySQL 版本(社区版或企业版)。安装过程中选择适当的安装目录和字符集。设置 root 用户密码,并妥善保管。连接数据库进行测试。注意 Windows 7 上的兼容性问题和安全性问题,建议升级到受支持的操作系统。

mysql:简单的概念,用于轻松学习 mysql:简单的概念,用于轻松学习 Apr 10, 2025 am 09:29 AM

MySQL是一个开源的关系型数据库管理系统。1)创建数据库和表:使用CREATEDATABASE和CREATETABLE命令。2)基本操作:INSERT、UPDATE、DELETE和SELECT。3)高级操作:JOIN、子查询和事务处理。4)调试技巧:检查语法、数据类型和权限。5)优化建议:使用索引、避免SELECT*和使用事务。

mysql 和 mariadb 可以共存吗 mysql 和 mariadb 可以共存吗 Apr 08, 2025 pm 02:27 PM

MySQL 和 MariaDB 可以共存,但需要谨慎配置。关键在于为每个数据库分配不同的端口号和数据目录,并调整内存分配和缓存大小等参数。连接池、应用程序配置和版本差异也需要考虑,需要仔细测试和规划以避免陷阱。在资源有限的情况下,同时运行两个数据库可能会导致性能问题。

RDS MySQL 与 Redshift 零 ETL 集成 RDS MySQL 与 Redshift 零 ETL 集成 Apr 08, 2025 pm 07:06 PM

数据集成简化:AmazonRDSMySQL与Redshift的零ETL集成高效的数据集成是数据驱动型组织的核心。传统的ETL(提取、转换、加载)流程复杂且耗时,尤其是在将数据库(例如AmazonRDSMySQL)与数据仓库(例如Redshift)集成时。然而,AWS提供的零ETL集成方案彻底改变了这一现状,为从RDSMySQL到Redshift的数据迁移提供了简化、近乎实时的解决方案。本文将深入探讨RDSMySQL零ETL与Redshift集成,阐述其工作原理以及为数据工程师和开发者带来的优势。

mysql用户和数据库的关系 mysql用户和数据库的关系 Apr 08, 2025 pm 07:15 PM

MySQL 数据库中,用户和数据库的关系通过权限和表定义。用户拥有用户名和密码,用于访问数据库。权限通过 GRANT 命令授予,而表由 CREATE TABLE 命令创建。要建立用户和数据库之间的关系,需创建数据库、创建用户,然后授予权限。

Bangla 部分模型检索中的 Laravel Eloquent ORM) Bangla 部分模型检索中的 Laravel Eloquent ORM) Apr 08, 2025 pm 02:06 PM

LaravelEloquent模型检索:轻松获取数据库数据EloquentORM提供了简洁易懂的方式来操作数据库。本文将详细介绍各种Eloquent模型检索技巧,助您高效地从数据库中获取数据。1.获取所有记录使用all()方法可以获取数据库表中的所有记录:useApp\Models\Post;$posts=Post::all();这将返回一个集合(Collection)。您可以使用foreach循环或其他集合方法访问数据:foreach($postsas$post){echo$post->

MySQL:初学者的数据管理易用性 MySQL:初学者的数据管理易用性 Apr 09, 2025 am 12:07 AM

MySQL适合初学者使用,因为它安装简单、功能强大且易于管理数据。1.安装和配置简单,适用于多种操作系统。2.支持基本操作如创建数据库和表、插入、查询、更新和删除数据。3.提供高级功能如JOIN操作和子查询。4.可以通过索引、查询优化和分表分区来提升性能。5.支持备份、恢复和安全措施,确保数据的安全和一致性。

See all articles