控制文件用于记录和维护数据库。当恢复数据库时,服务器进程和后台进程需要从控制文件中读取各种备份相关的信息。如果控制文件损坏,则会导致这些备份信息的丢失。尽管使用多元化控制文件可以防止控制文件损坏,但因为控制文件的重要性,应该定期备份控制文件。当数据库配置发生改变时,一定要备份控制文件。涉及到数据库配置改变的命令:
alter database [add|drop] logfile
alter database [add|drop] logfile member
alter database [add|drop] logfile group
alter database [noarchivelog|archivelog]
alter database rename file
create tablespace
alter tablespace [add|rename] datafile
alter tablespace [read write|read only]
drop tablespace
控制文件的备份,三种方式
1)使用OS命令进行拷贝
1)open状态下,使用alter database命令生成控制文件副本
2)open状态下,使用alter database backup controlfile to trace命令将控制文件备份到跟踪文件
控制文件的恢复,两种方式
1)mount状态下,使用RECOVER DATABASE USING BACKUP CONTROLFILE
2)mount状态下,生成跟踪文件并进行恢复
2--2示例:
[oracle@localhost ~]$ rlsqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 8月 1 21:40:03 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 528482304 bytes
Fixed Size 1220360 bytes
Variable Size 176161016 bytes
Database Buffers 343932928 bytes
Redo Buffers 7168000 bytes
Database mounted.
Database opened.
--open状态下生成控制文件副本
SQL> alter database backup controlfile to
2 '/oracle/10g/oracle/bakup/database/oralife.ctl';
alter database backup controlfile to
*
ERROR at line 1:
ORA-01580: error creating control backup file
/oracle/10g/oracle/bakup/database/oralife.ctl
ORA-27038: created file already exists
Additional information: 1
SQL> alter database backup controlfile to
2 '/oracle/10g/oracle/bakup/database/oralife.ctl' reuse;
--reuse用于覆盖原有控制文件副本
Database altered.
--手动删除所有控制文件模拟文件丢失
SQL> ho rm /oracle/10g/oracle/product/10.2.0/oradata/oralife/*.ctl;
--使用evan登录,并添加数据
SQL> conn evan/evan
Connected.
SQL> select * from t_evan;
TEXT
--------------------------------------------------------------------------------
oracle
java
spring
hibernate
hibernate
SQL> insert into t_evan values('added');
1 row created.
SQL> commit;
Commit complete.
SQL> conn / as sysdba
Connected.
SQL> shutdown immediate
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/oracle/10g/oracle/product/10.2.0/oradata/oralife/control01.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
SQL> shutdown abort
ORACLE instance shut down.
--alter_oralife.log出现这样的信息:
Mon Aug 1 23:13:51 2011
ORA-00202: control file: '/oracle/10g/oracle/product/10.2.0/oradata/oralife/control01.ctl'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
--拷贝控制文件到目标路径
SQL>ho cp /oracle/10g/oracle/bakup/database/oralife.ctl /oracle/10g/oracle/product/10.2.0/oradata/oralife/control01.ctl
SQL> alter system set control_files='/oracle/10g/oracle/product/10.2.0/oradata/oralife/control01.ctl' scope = spfile;
--修改control_files参数,指定可用的控制文件
System altered.
SQL> startup force mount
ORACLE instance started.
Total System Global Area 528482304 bytes
Fixed Size 1220360 bytes
Variable Size 138412280 bytes
Database Buffers 381681664 bytes
Redo Buffers 7168000 bytes
Database mounted.
--生成trace文件
SQL> alter database backup controlfile to trace noresetlogs;
Database altered.
SELECT c.VALUE || '/' || d.instance_name || '_ora_' || a.spid || '.trc' TRACE
FROM v$process a, v$session b, v$parameter c, v$instance d
WHERE a.addr = b.paddr
AND b.audsid = USERENV ('sessionid')
AND c.NAME = 'user_dump_dest';
TRACE
--------------------------------------------------------------------------------
/oracle/10g/oracle/product/10.2.0/db_1/admin/oralife/udump/oralife_ora_4558.trc
SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
--打开trace文件,去掉注释,在shutdown状态下执行脚本,创建控制文件
--用evan登录验证数据
SQL> conn evan/evan
Connected.
SQL> select * from t_evan;
TEXT
--------------------------------------------------------------------------------
oracle
java
spring
hibernate
hibernate
added
6 rows selected.
可见数据没有丢失。
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/oracle/10g/oracle/product/10.2.0/oradata/oralife/control01.ctl
这时
应该重建多个控制文件。
如何做?
--设置control_files参数,前提是使用spfile启动数据库
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /oracle/10g/oracle/product/10.
2.0/db_1/dbs/spfileoralife.ora
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/oracle/10g/oracle/product/10.2.0/oradata/oralife/control01.ctl
SQL> alter system set control_files='/oracle/10g/oracle/product/10.2.0/oradata/oralife/control01.ctl'
2 ,'/oracle/10g/oracle/product/10.2.0/oradata/oralife/control02.ctl'
3 ,'/oracle/10g/oracle/product/10.2.0/oradata/oralife/control03.ctl'
4 scope=spfile;
System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
--拷贝控制文件到不同的磁盘
SQL> host
[oracle@localhost oralife]$ cp control01.ctl control02.ctl
[oracle@localhost oralife]$ cp control01.ctl control03.ctl
[oracle@localhost ~]$ rlsqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 8月 2 21:02:57 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 528482304 bytes
Fixed Size 1220360 bytes
Variable Size 142606584 bytes
Database Buffers 377487360 bytes
Redo Buffers 7168000 bytes
Database mounted.
Database opened.
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/oracle/10g/oracle/product/10.2.0/oradata/oralife/control01.ctl
/oracle/10g/oracle/product/10.2.0/oradata/oralife/control02.ctl
/oracle/10g/oracle/product/10.2.0/oradata/oralife/control03.ctl
已生效。
分享到:
相关推荐
如何从自动备份中恢复控制文件和SPFILE文件 - Oracle Life.files 使用RMAN的备份及恢复一例-丢失所有控制文件 - Oracle Life.files 使用Rman进行不完全恢复 - Oracle Life.files 使用RMAN进行基于表空间的恢复 - ...
10、智能的增量备份恢复功能,能够恢复出与每次执行时源目录完全一样的目录结构和文件。 11、异地容灾备份功能:文件一旦备份,可以在任何一台电脑上进行文件恢复,数据永不丢失。 12、支持在任务执行后发送执行...
介绍了裸机备份与恢复的概念,指出了裸机备份恢复技术与普通数据备份恢复技术的异同点,并分析了当前主流裸机备份恢复软件的优缺点。在分析Windows系统和Linux系统启动流程的基础上,给出了制作基于U盘上的Linux恢复...
一个基于Java GUI、MySQL和TimerTask实现的文件备份系统,提供了文件备份、文件夹备份、定时备份以及将备份数据存储到MySQL数据库的功能。通过用户友好的GUI界面,用户可以轻松选择要备份的文件或文件夹。系统使用...
基于文件同步的ORACLE数据库备份与恢复方法.pdf
回天实时数据备份与恢复系统是西安蓝海本立信息科技有限公司基于CDP(Continuous Data Protection)持续数据保护技术开发而成,能够实时监控并捕获操作系统及应用程序对受保护文件的读写操作,并连续不断的记录下每...
并且加入了一些使用的选项,如slave-info可以记录备份恢复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。 (3)使用帮助:...
基于文件同步的ORACLE数据库备份与恢复方法 (1).pdf
10、智能的增量备份恢复功能,能够恢复出与每次执行时源目录完全一样的目录结构和文件。 11、异地容灾备份功能:文件一旦备份,可以在任何一台电脑上进行文件恢复,数据永不丢失。 12、支持在任务执行后发送执行...
多备份提供的核心功能,包括数据备份、数据恢复、数据迁移、定制管理(包括基于备份的数据内容管理)等。更新日志:多备份2.2版本完全突破1.0版本印象,无论是在界面还是功能上都有大幅提升。1、客户端采用web界面,...
基于数据文件拷贝的SQL Server数据库备份与恢复系统的设计.pdf
基于Python实现的数据库快速备份与恢复软件源码+项目说明.zip 一款MySql数据库备份(快照保存)与恢复软件。功能上与dump类似,但是提供了相对有好的交互界面,能够有效地管理导出的sql文件。 # 使用场景 开发阶段...
除具备基本的建立分区、删除分区、格式化分区等磁盘管理功能外,还提供了强大的已丢失分区恢复功能(快速找回丢失的分区)、误删除文件恢复、分区被格式化及分区被破坏后的文件恢复功能、分区备份与分区还原功能、复制...
为了保障数据的安全,需要定期对数据进行备份。...二:基于Mysqldump命令实现备份恢复 2.1、思路概念 Mysqldump是一个逻辑备份命令;意思就是将数据库中的数据备份成一个文本文件;也可以说是将表的结
循环备份 增量备份与完全备份相结合,不但节省了备份空间,而且还大大优化 了恢复时间 数据压缩 在备份的时候, 先在源地点进行压缩, 然后把数据传送到备份目的地, 减轻了网络负担 对打开文件的备份 可以对系统的...
图文并茂地介绍了基于TFTP服务器实现交换机配置文件的保存、备份、恢复,以及OS的升级的方法。
用户管理的基于取消的恢复:示例 5-18 使用 RMAN 执行不完全恢复 5-20 使用 RMAN 的基于时间的恢复:示例 5-21 使用 RMAN 的日志序列恢复:示例 5-23 使用 Oracle Enterprise Manager 的不完全恢复 5-24 不完全...
Oracle 10g 备份和恢复
用户管理的基于取消的恢复:示例 5-18 使用 RMAN 执行不完全恢复 5-20 使用 RMAN 的基于时间的恢复:示例 5-21 使用 RMAN 的日志序列恢复:示例 5-23 使用 Oracle Enterprise Manager 的不完全恢复 不完全备份...
原文链接:...5、保留7天内备份文件。