Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103728237
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-05-19 15:46:04

作者: Steve Callan/黄永兵 译 出处:51CTO.com 
 
阅读提示:Oracle中的游戏?非也,这里引用的游戏与奥林匹克竞赛中的“运动”类似,竞赛中的参加比赛的运动员对它们从事的事情是非常认真的,他们非常热爱他们的运动或竞赛,作为一名Oracle DBA,你热爱你的工作吗?

Oracle中的游戏?非也,这里引用的游戏与奥林匹克竞赛中的“运动”类似,竞赛中的参加比赛的运动员对它们从事的事情是非常认真的,他们非常热爱他们的运动或竞赛,作为一名Oracle DBA,你热爱你的工作吗?你的工作是否顺利呢?对那些认真的人而言,专业可能是一个更好的选择,我们将要玩“游戏”或竞赛,我们能从它们那里学到什么,本文为DBA提供实用、必要的技能。

丢失了一个或更多的专用文件

专用文件包括:控制文件、在线重做日志、归档重做日志和数据文件。我们假设你有多个控制文件,在初始化参数文件中标识出来了(本文我将使用pfile以便于快速编辑),你已经阅读了很多次:如果你丢失了一个控制文件,恢复或修复一个好的控制文件拷贝到错误文件的位置,或者从参数文件中移除涉及的文件,在一个控制文件丢失后(无论什么原因),对数据库有什么影响呢?

1、操作仍然可以继续,有其他的控制文件“在线”意味着你可以承受一个或更多控制文件的丢失。

2、你(DBA)不得不关闭系统,恢复文件(或从init.ora文件中移除)并重新启动。

3、Oracle关闭实例(如你不能控制,无论你想不想它都会发生)。

我问这个的原因是:控制文件之间以及在线重做日志多路复用之间有什么不同?例如:如果一个活动组的成员丢失了数据库(或实例)将发生什么?Oracle继续保持运转还是停止运转?在下面的实验中,我将control01.ctl文件放在闪存盘里,然后将闪存盘从USB端口拔出来模拟介质失效。

当前控制文件清单

*.control_files='D:\oracle\product\10.2.0/oradata/db10/\control01.ctl',

                'D:\oracle\product\10.2.0/oradata/db10/\control02.ctl',

                'D:\oracle\product\10.2.0/oradata/db10/\control03.ctl'

新的控制文件清单

*.control_files='D:\oracle\product\10.2.0/oradata/db10/\control01.ctl',

                'D:\oracle\product\10.2.0/oradata/db10/\control02.ctl',

                'F:\oracle\control03.ctl'

确认新的控制文件:

SQL> startup
ORACLE instance started.

Total System Global Area  289406976 bytes
Fixed Size                  1290184 bytes
Variable Size             104857656 bytes
Database Buffers          176160768 bytes
Redo Buffers                7098368 bytes
Database mounted.
Database opened.
SQL> col name for a52
SQL> select name from v$controlfile;

NAME
----------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\DB10\CONTROL01.CTL
D:\ORACLE\PRODUCT\10.2.0\ORADATA\DB10\CONTROL02.CTL
F:\ORACLE\CONTROL03.CTL

现在已经准备好断开闪存盘的连接,没有直接的警告(用户界面没有任何提示信息,直到尝试一个操作时),实例崩溃了。

SQL> select name from v$controlfile;
select name from v$controlfile
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel

阅读(238) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~