Oracle+11g+笔记(9)-控制文件及日志文件的管理

Oracle+11g+笔记(9)-控制文件及日志文件的管理

9、控制文件及日志文件的管理

Oracle 数据库包含有三种类型的物理文件,分别是数据文件、控制文件和日志文件,其中数据文件是用来存储数

据的,而控文件和日志文件则用于维护和保障 Oracle 数据库的正常运行。 所以保证控制文件和日志文件的可用性

和可靠性是确保 Oracle 数据库正常、可靠运行的前提条件。

9.1 控制文件

控制文件是 Oracle 数据库最重要的物理文件,每个 Oracle 数据库都必须有一个控制文件。在启动数据库实例

时,Oracle 会根据初始化参数定位控制文件,然后 Oracle会根据控制文件在实例和数据库之间建立关联。若控制

文件被损坏,则整个 Oracle 数据库将无法启动。

9.1.1 多路复用控制文件

为了提高数据库的可靠性,至少要为数据库建立两个控制文件,并且分别保存在不同的磁盘中进行多路复用,这样

可以避免由于单个设备故障而无法启动数据库的危险,该管理策略被称为多路复用控制文件。换句话说,多路复用

控制文件是指在系统不同的位置上同时维护多个控制文件的副本,在这种情况下,如果多路复用控制文件其中的某

个磁盘发生物理损坏导致控制文件损坏,数据库将被关闭,此时就可以利用另一个磁盘中保存的控制文件来恢复被

损坏的控制文件,然后再重新启动数据库,达到保护控制文件的目的。在这种情况下,不需要对数据库进行介质恢

复。

在初始化参数CONTROL_FILES 中列出了所有多路复用的控制文件名。Oracle 将会根据CONTROL_FILES 同时修改

所有的控制文件,但只读取其中第一个控制文件中的信息。在整个数据库运行期间,如果任何一个控制文件变为不

可用,那么实例就不能再继续运行。

1、CONTROL_FILES 参数

如前所述,系统通过 CONTROL_FILES参数定位并打开控制文件,如果需要进行多路复用控制文件,就必须先更改

CONTROL_FILES参数。CONTROL_FILES参数的更改需要使用 ALTER SYSTEM 语句:

alter system set control_files=
'D:\app\zhangshixing\product\11.2.0\oradata\eygle\CONTROLO1.CTL',
'D:\app\zhangshixing\product\11.2.0\oradata\eygle\CONTROL02.CTL',
'D:\app\zhangshixing\product\11.2.0\oradata\eygle\CONTROL03.CTL,
'E:\app\zhangshixing\product\11.2.0\oradata\CONTROL04.CTL'
scope=spfile;

其中,前3个控制文件是创建数据库时创建的,第4个控制文件是用户新添加的,并且位于不同的磁盘上,目前还

没有创建该文件,需要关闭数据库来创建。

2、复用控制文件

CONTROL_FILES参数进行设置后,需要创建对应的控制文件,达到复用控制文件的效果,其具体操作过程如

下:

Step1: 退出SQL*Plus,关闭数据库。

Step2:打开 Windows的服务窗口,在其中找到相关的服务,即OracleDBConsoleSIDOracleServiceSID

务,将这些服务停止。

Step3:将原有控制文件复制成新添加的控制文件。

Step4:重新启动数据库,对数据字典 V$CONTROLFILE进行查询来确认添加的控制文件是否启用,语法如下,运

行结果如图所示。

SELECT name FROM v$controlfile;
9.1.2 控制文件的创建

在一般情况下,若使用了复用控制文件,且将各个控制文件分别存储在不同的磁盘中,则全部控制文件丢失或损坏

的可能性将非常小。如果数据库的所有控制文件全部丢失或损坏,唯一的补救方法就是手工创建一个新的控制文

件。

手工创建控制文件是使用CREATE CONTROLFILE语句来实现的。其语法格式如下。

Create controlfile
Reuse database orcl
Logfile
Group 1 ('E:\app\administrator\oradatalorcl\redo01.log' size 10m),
Group 2 ('E:\app\administrator\oradatalorcl\redo02.log' size 10m),
Group 3 ('E:\app\administrator\oradatalorcl\redo03.log' size 10m),
Datafile
'E:\app\administrator\oradatalorcl\example01.dbf'
'E:\app\administrator\oradatalorcl\sysaux01.dbf'
'E:\app\administrator\oradatalorcl\system01.dbf'
Noresetlogs
Maxlogfiles 50
Maxlogmembers 3
Maxinstances 6
Maxdatafiles 200
Archivelog;

下面将对控制文件的创建过程进行介绍。

# step1 查看数据库中所有的数据文件和重做日志文件的名称和路径
# 显示日志文件语句如下
select member from v$logfile;

MEMBER                                     |
-------------------------------------------+
D:\APP\ZHANGSHIXING\ORADATA\ORCL\REDO03.LOG|
D:\APP\ZHANGSHIXING\ORADATA\ORCL\REDO02.LOG|
D:\APP\ZHANGSHIXING\ORADATA\ORCL\REDO01.LOG|
# 显示数据文件语句如下
select name from v$datafile;

NAME                                                       |
-----------------------------------------------------------+
D:\APP\ZHANGSHIXING\ORADATA\ORCL\SYSTEM01.DBF              |
D:\APP\ZHANGSHIXING\ORADATA\ORCL\SYSAUX01.DBF              |
D:\APP\ZHANGSHIXING\ORADATA\ORCL\UNDOTBS01.DBF             |
D:\APP\ZHANGSHIXING\ORADATA\ORCL\USERS01.DBF               |
D:\APP\ZHANGSHIXING\ORADATA\ORCL\EXAMPLE01.DBF             |
# 显示控制文件语句如下
select name from v$controlfile;

NAME                                                      |
----------------------------------------------------------+
D:\APP\ZHANGSHIXING\ORADATA\ORCL\CONTROL01.CTL            |
D:\APP\ZHANGSHIXING\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL|
# Step2 关闭数据库,如果数据库处于打开状态,则可以采取正常模式关闭数据库
connect sys/sysroot as sysdba;
shutdown immediate;
# Step3 在操作系统下备份所有的数据文件和重做日志文件。在使用CREATE CONTROLFILE语句创建新的控制文件时,如果操作不当可能会损坏数据文件和日志文件,因此,需要先对其进行备份。
# Step4 启动数据库实例,但是不加载数据库,加载数据库时,实例将会打开控制文件,无法达到新创建控制文件的效果。
startup nomount
# Step5 利用步骤1得到的文件列表,执行CREATE CONTROLFILE命令创建一个新的控制文件
Create controlfile
Reuse database "orcl"
Logfile
Group 1 'D:\APP\ZHANGSHIXING\ORADATA\ORCL\REDO01.LOG',
Group 2 'D:\APP\ZHANGSHIXING\ORADATA\ORCL\REDO02.LOG',
Group 3 'D:\APP\ZHANGSHIXING\ORADATA\ORCL\REDO03.LOG'
Datafile
'D:\APP\ZHANGSHIXING\ORADATA\ORCL\SYSTEM01.DBF',
'D:\APP\ZHANGSHIXING\ORADATA\ORCL\SYSAUX01.DBF',
'D:\APP\ZHANGSHIXING\ORADATA\ORCL\UNDOTBS01.DBF',
''D:\APP\ZHANGSHIXING\ORADATA\ORCL\USERS01.DBF',
'D:\APP\ZHANGSHIXING\ORADATA\ORCL\EXAMPLE01.DBF'
Maxlogfiles 50
Maxlogmembers 3
Maxinstances 6
Maxdatafiles 200
Noresetlogs
noarchivelog;

提示:如果数据库的某个联机重做日志文件同控制文件一起丢失,或者在创建控制文件时改变了数据库的名称,则

必须在CREATE CONTROLFILE 语句中使用RESETLOGS子句,重置数据库的联机重做日志文件的内容。如果使用了

RESETLOGS子句,则必须使用步骤8对数据库进行恢复。

# Step6 在操作系统下,对新建的控制文件进行备份。
# Step7 编辑初始化参数CONTROL_FILES,使其指向新建的控制文件。如果在控制文件中修改了数据库的名称,还需要
# 修改DB_NAME参数来指定新的数据库名称,使用语句如下:
alter system set control_files=
'D:\APP\ZHANGSHIXING\ORADATA\ORCL\CONTROL01.CTL',
'D:\APP\ZHANGSHIXING\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL'
scope=spfile
# Step8 根据情况,如果需要可以对数据库进行恢复。否则直接执行步骤9。当丢失了某个联机日志文件或数据文件时,则# 需要对数据库进行恢复。
# Step9 打开数据库,若没有执行恢复过程,则可以下面的方式正常打开数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值