今天给大家带来有关Oracle控制文件的技术分享。不积跬步无以至千里,不积小流无以成江海。Oracle技术博大精深,以我一个人的力量,那无异于蜉蝣于天地,沧海之一粟。在此,笔者抛砖引玉,希望读者能够与我形成良好的互动,之间共同进步。闲言少叙,书归正传,马上开始今天的讨论话题。
一、控制文件概要描述
既然今天的主题是控制文件,那么首先我先带大家来简要回顾一下控制文件的相关知识点。控制文件在默认情况下,一般和数据文件以及日志文件等位于同一个目录(当然,不放在这里也是没有问题的……看个人喜好),具体查看的sql语句是:
SYS@ENMOEDU > select name from v$controlfile;
NAME
------------------------------
/u01/app/oracle/oradata/ENMOEDU/control01.ctl
/u01/app/oracle/fast_recovery_area/ENMOEDU/control02.ctl
从这里就已经清晰的看到我控制文件的路径以及名称了,还有,细心的读者应该发现了,我是一个很小心谨慎的人,所以呢,我的控制文件是两份。这样做的好处是,万一我其中的一个控制文件被误删了或者损坏了,我还有另外一个控制文件保证我数据库的正常运行以及启动(不小心把多路复用技术给提前引入了……稍后会有更详细的配置以及解析)。
控制文件的作用我想就毋庸赘言了吧?上至九十老妪,下到五岁孩童,对于控制文件的重要性都能如数家珍般的娓娓道来。控制文件中有数据库以及在线重做日志的位置以及众多重要的信息,丢失或者损坏控制文件,数据库将无法正常启动和运行。既然控制文件这么重要,那么我们该怎么对它进行备份和恢复呢?
二、控制文件的备份与恢复
(1)基于用户管理的备份和恢复
首先进入Oracle的trace目录
[oracle@ENMOEDU trace]$ cd /u01/app/oracle/diag/rdbms/enmoedu/ENMOEDU/trace
用tail命令来打开alert_ENMOEDU.log文件
[oracle@ENMOEDU trace]$ tail -100f alert_ENMOEDU.log
此时打开另一窗口,执行如下命令
SYS@ENMOEDU > alter database backup controlfile to trace;
Database altered.
我们可以在alert.ENMOEDU.log看到如下信息
Mon Mar 10 15:22:20 2014
alter database backup controlfile to trace
Backup controlfile written to trace file /u01/app/oracle/diag/rdbms/enmoedu/ENMOEDU/trace/ENMOEDU_ora_18205.trc
Completed: alter database backup controlfile to trace
根据上述信息,我们去查看提示的文件
[oracle@ENMOEDU ~]$ cat /u01/app/oracle/diag/rdbms/enmoedu/ENMOEDU/trace/ENMOEDU_ora_18205.trc
在浩如烟海的信息中,我们可以找到创建控制文件的命令
CREATE CONTROLFILE REUSE DATABASE "ENMOEDU" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/ENMOEDU/redo01.log' SIZE 50M BLOCKSIZE 512,
GROUP 2 '/u01/app/oracle/oradata/ENMOEDU/redo02.log' SIZE 50M BLOCKSIZE 512,
GROUP 3 '/u01/app/oracle/oradata/ENMOEDU/redo03.log' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'/u01/app/oracle/oradata/ENMOEDU/system01.dbf',
'/u01/app/oracle/oradata/ENMOEDU/sysaux01.dbf',
'/u01/app/oracle/oradata/ENMOEDU/undotbs01.dbf',
'/u01/app/oracle/oradata/ENMOEDU/users01.dbf',
'/u01/app/oracle/oradata/ENMOEDU/example01.dbf',
'/u01/app/oracle/oradata/ENMOEDU/test01.dbf',
'/u01/app/oracle/oradata/ENMOEDU/test02.dbf'
CHARACTER SET AL32UTF8;
稍后我们就可以用这些命令来创建控制文件了。下面来模拟控制文件丢失和损坏的实验环境:
[root@ENMOEDU ~]# rm -rf /u01/app/oracle/oradata/ENMOEDU/control01.ctl
[root@ENMOEDU ~]# rm -rf /u01/app/oracle/fast_recovery_area/ENMOEDU/control02.ctl
笔者将两个控制文件都删除了,很彻底~然后尝试启动数据库。
[oracle@ENMOEDU ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Mon Mar 10 15:47:54 2014
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to an idle instance.
SYS@ENMOEDU > startup
ORACLE instance started.
Total System Global Area 422670336 bytes
Fixed Size 1345380 bytes
Variable Size 352323740 bytes
Database Buffers 62914560 bytes
Redo Buffers 6086656 bytes
ORA-00205: error in identifying control file, check alert log for more info
可以看出,数据库已经无法正常启动了。那么我们就将数据库启动到nomount状态下进行恢复。
SYS@ENMOEDU > shutdown abort
ORACLE instance shut down.
SYS@ENMOEDU > startup nomount
ORACLE instance started.
Total System Global Area 422670336 bytes
Fixed Size 1345380 bytes
Variable Size 352323740 bytes
Database Buffers 62914560 bytes
Redo Buffers 6086656 bytes
SYS@ENMOEDU > CREATE CONTROLFILE REUSE DATABASE "ENMOEDU" RESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 '/u01/app/oracle/oradata/ENMOEDU/redo01.log' SIZE 50M BLOCKSIZE 512,
9 GROUP 2 '/u01/app/oracle/oradata/ENMOEDU/redo02.log' SIZE 50M BLOCKSIZE 512,
10 GROUP 3 '/u01/app/oracle/oradata/ENMOEDU/redo03.log' SIZE 50M BLOCKSIZE 512
11 -- STANDBY LOGFILE
12 DATAFILE
13 '/u01/app/oracle/oradata/ENMOEDU/system01.dbf',
14 '/u01/app/oracle/oradata/ENMOEDU/sysaux01.dbf',
15 '/u01/app/oracle/oradata/ENMOEDU/undotbs01.dbf',
16 '/u01/app/oracle/oradata/ENMOEDU/users01.dbf',
17 '/u01/app/oracle/oradata/ENMOEDU/example01.dbf',
18 '/u01/app/oracle/oradata/ENMOEDU/test01.dbf',
19 '/u01/app/oracle/oradata/ENMOEDU/test02.dbf'
20 CHARACTER SET AL32UTF8;
Control file created.
尝试开启数据库
SYS@ENMOEDU > alter database open
2 ;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
提示错误。按照提示来开启数据库:
SYS@ENMOEDU > alter database open resetlogs;
Database altered.
数���库已经正常启动了。
上述情况属于非常乐观且极易恢复的模拟实验现场,但是在实际情况中,环境却险要恶劣的多。往往控制文件丢失后,用户还会进行大量的操作,比如创建表空间等等,这些使得控制文件的恢复要困难许多。路漫漫其修远兮,吾将上下而求索,我对待技术的渴望永无止境。下面我就给大家介绍一下如何在备份的控制文件过久的情况下恢复控制文件。
首先,我们先备份一下我们的控制文件。由于我采用了多路复用,所以看起来是不是应该把两个控制文件都备份一下呢?按照国际惯例,一般作者向读者发出类似这种疑问句的时候,答案往往是否定的。但是,我作为一个走位忽上忽下意识飘忽不定的技术人员,所以,答案,仍然是不需要备份两份。由于两份控制文件是一模一样的,所以备份一份即可,只需记得在恢复的时候注意文件名字。
备份控制文件。在本文中,将控制文件备份到Oracle的家目录下,给控制文件一种家的温暖。
[oracle@ENMOEDU ENMOEDU]$ cp control01.ctl ~
创建表空间和文件,从而使现在的控制文件和备份文件产生差异。
SYS@ENMOEDU > create tablespace 我 datafile '/u01/app/oracle/oradata/ENMOEDU/我01.dbf' size 100m;
Tablespace created.
查看一下当前在线日志的status,并切换日志,产生归档。
SYS@ENMOEDU > select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
2 INACTIVE
3 INACTIVE
SYS@ENMOEDU > alter system archive log current;
System altered.
SYS@ENMOEDU > select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 ACTIVE
2 CURRENT
3 INACTIVE
SYS@ENMOEDU > alter system archive log current;
System altered.
SYS@ENMOEDU > select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 ACTIVE
2 ACTIVE
3 CURRENT
SYS@ENMOEDU > alter system archive log current;
System altered.
SYS@ENMOEDU > select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
2 ACTIVE
3 ACTIVE
SYS@ENMOEDU > alter system archive log current;
System altered.
SYS@ENMOEDU > select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 ACTIVE
2 CURRENT
3 INACTIVE
SYS@ENMOEDU > alter system archive log current;
System altered.
SYS@ENMOEDU > select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 INACTIVE
2 ACTIVE
3 CURRENT
SYS@ENMOEDU > alter system archive log current;
System altered.
SYS@ENMOEDU > select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
2 INACTIVE
3 ACTIVE
SYS@ENMOEDU > alter system archive log current;
System altered.
SYS@ENMOEDU > select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 ACTIVE
2 CURRENT
3 INACTIVE
SYS@ENMOEDU > alter system archive log current;
System altered.
SYS@ENMOEDU > select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 ACTIVE
2 ACTIVE
3 CURRENT
- 大小: 23.1 KB
分享到:
相关推荐
提供的`Oracle维护控制文件Controlfile相关脚本(移动增加删除多路复用操作).sql`文件可能包含了执行这些操作的预定义SQL命令,使用时需要根据实际环境进行适当修改,如替换为正确的文件路径、文件名以及检查相关...
3. **多路复用控制文件**:即在同一数据库中创建多个控制文件副本,这些副本通常存储在不同的物理位置。 4. **加强权限管理**:限制对控制文件的访问权限,避免非授权用户误操作。 #### 五、总结 控制文件对于...
为了提高可恢复性,数据库需要定期备份、控制文件和重做日志的多路复用以及归档重做日志的保留。控制文件的多路复用是为了避免单一故障点,建议至少有两个副本,分别存储在不同的磁盘控制器上。重做日志文件的多路...
oracle数据库的恢复 重要:进行以下操作之前,要确保数据库是归档模式、控制文件的自动备份选项打开,并且执行一次包括归档的完全...如果有控制文件的备份, 则直直接从各备份中恢复控制文件。 确认有控制文件的备份
这包括多路复用控制文件和联机重做日志,运行在ARCHIVELOG模式下以便记录所有事务,定期备份数据文件,并在多个安全位置保存备份。同时,备份文件包括数据文件、重做日志、控制文件、撤销表空间和可选的参数文件、...
9. **多路复用**: 复制关键文件(如控制文件和日志文件)到多个位置,增加可用性和容错性。 10. **PL/SQL备份方案**: 利用PL/SQL编写自定义备份脚本,可实现特定需求的备份策略。 11. **灾难恢复计划**: ...
3. **多路复用控制文件**: - 通过多路复用来提高控制文件的安全性,即在不同位置创建多个控制文件副本。 - 控制文件应该分布在不同的磁盘上,以降低单一磁盘故障导致的所有控制文件失效的风险。 - 可以通过修改`...
- 文件多路复用是指在一个备份集合中包含多个数据文件。 - 这样可以提高备份效率,并简化管理过程。 - **Recovery Catalog Resyncing (恢复目录同步):** - 在使用RMAN执行备份、复制、恢复或切换命令时,恢复...
2. **多路复用**:为了提高可用性和防止单点故障,通常会创建多个控制文件副本。 3. **数据库重建**:在数据库重建或移动到新环境时,控制文件需要更新以适应新环境。 修改控制文件的步骤如下: 1. **停止数据库...
9. **多路复用(Multiplexing)**:通过多路复用,可以创建数据文件和控制文件的多个副本,增加冗余度,提高系统的可靠性。 10. **恢复顾问(Recovery Advisor)**:这是一个自动化工具,可以帮助分析恢复情况并...
##### 2.2 在不同磁盘上的控制文件的多路复用(Multiplex Control Files on Different Disks) - **重要性**:为了提高数据库的可靠性和可用性,应该在不同的磁盘上多路复用控制文件。 - **操作方法**:使用ALTER ...
1. RMAN(Recovery Manager):Oracle提供的命令行工具,支持多种备份策略,如镜像拷贝、多路复用、压缩备份等。 2. NetBackup、Tivoli、Veritas等第三方备份软件:与RMAN集成,提供图形化界面和更高级的备份管理...
- **网络故障**: 可以通过配置备份监听程序、连接故障转移、多路复用网络连接等方式来预防。 - **用户错误**: 如果用户意外删除或修改了数据,可以使用回收站或闪回功能来恢复。 - **实例错误**: 如断电等情况,可以...
- 解决方案:复制多路复用的控制文件到相应路径。 - **所有控制文件丢失** - **备份控制文件命令** - `ALTER DATABASE BACKUP CONTROLFILE TO TRACE;` - `ALTER DATABASE BACKUP CONTROLFILE TO '/disk1/backup/...
文件多路复用技术允许RMAN将同一个文件的多个副本写入不同的物理位置,从而提高备份速度并降低单点故障的风险。 **4. Image Copies** 图像副本是指完整的文件副本,通常用于快速恢复单个文件或小范围的数据丢失。...
- 如果是多路复用日志,可以切换到另一个副本。 - 如果只有一个副本,需要执行介质恢复。 **5.2 损坏控制文件的恢复方法** - **5.2.1 损坏单个控制文件** - 复制备用控制文件。 - 使用`ALTER DATABASE`命令...
- **多路复用控制文件**:强烈建议对每个数据库使用多路复用的控制文件,每份副本存储在不同的物理磁盘上,这样可以提高系统的可靠性和可用性。 #### 七、备份类型 根据不同的需求,Oracle提供了多种备份类型: -...
RMAN提供更高级别的备份选项,如块级备份、压缩、网络多路复用以及自动备份策略管理,确保更高效和安全的数据保护。 在进行数据库备份时,应根据实际需求选择合适的工具。小型数据库或临时数据迁移可能适合使用exp/...