oracle数据库控制文件的备份和恢复之一手动备份和恢复

简介: 实验步骤:手动备份和恢复oracle控制文件

1 环境准备,创建测试表,准备表中数据
SQL> select * from v$version;

BANNER

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
sql>CREATE TABLE "SYS"."TEST_CONTROL"("CURR_TIME" DATE)

更改会话显示时间格式,查看表数据时可以看到区别。

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
SQL> select * from test_control;

CURR_TIME

2019-07-21 16:25:33

2 查看控制文件配置
SQL> show parameter control
NAME TYPE VALUE


control_file_record_keep_time integer 7
control_files string /u01/app/oracle/oradata/orcl11

                                             g/control01.ctl, /u01/app/orac
                                             le/fast_recovery_area/orcl11g/
                                             control02.ctl

control_management_pack_access string DIAGNOSTIC+TUNING
3 手动备份控制文件
SQL> alter database backup controlfile to trace;
Database altered.
备份的控制文件创建脚本位于以下文件中
NAME VALUE


Default Trace File /u01/app/oracle/diag/rdbms/orcl11g/orcl11g/trace/orcl11g_ora_2175.trc
4 插入几行数据,切换几次日志,多产生几个归档日志

SQL> insert into test_control select sysdate from dual;
SQL> commit;
SQL> alter system switch logfile;
System altered.
SQL> insert into test_control select sysdate from dual;
SQL> commit;
SQL> alter system switch logfile;
System altered.
SQL> select * from test_control;

CURR_TIME

2019-07-21 16:25:33
2019-07-27 09:32:21
2019-07-27 09:33:39
5 删除控制文件,模仿控制文件全部丢失,关闭数据库
[oracle@orclserv1 orcl11g]$ rm /u01/app/oracle/oradata/orcl11g/control01.ctl
[oracle@orclserv1 orcl11g]$ rm /u01/app/oracle/fast_recovery_area/orcl11g/control02.ctl

   ##查询v$database视图,系统提示打不开控制文件,操作系统错误为没有文件和目录,

以immediate方式不能关闭数据库,报同样错误,这时,可以以abort方式关闭数据库。
SQL> select CHECKPOINT_CHANGE#, CURRENT_SCN from v$database;
select CHECKPOINT_CHANGE#, CURRENT_SCN from v$database

                                         *

ERROR at line 1:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/app/oracle/oradata/orcl11g/control01.ctl'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

SQL> shutdown immediate;
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/app/oracle/oradata/orcl11g/control01.ctl'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
SQL> shutdown abort;
ORACLE instance shut down.
SQL>
6 以nomount方式启动数据库,用备份的脚本重新创建控制文件,恢复数据库,以resetlogs方式打开数据库
1) 以nomount方式启动数据库

SQL> startup nomount;
ORACLE instance started.

Total System Global Area 1653518336 bytes
Fixed Size 2253784 bytes
Variable Size 1006636072 bytes
Database Buffers 637534208 bytes
Redo Buffers 7094272 bytes
2) 运行备份的脚本重新创建控制文件

CREATE CONTROLFILE REUSE DATABASE "ORCL11G" RESETLOGS ARCHIVELOG

MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292

LOGFILE
GROUP 1 '/u01/app/oracle/oradata/orcl11g/redo01.log' SIZE 50M BLOCKSIZE 512,
GROUP 2 '/u01/app/oracle/oradata/orcl11g/redo02.log' SIZE 50M BLOCKSIZE 512,
GROUP 3 '/u01/app/oracle/oradata/orcl11g/redo03.log' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'/u01/app/oracle/oradata/orcl11g/system01.dbf',
'/u01/app/oracle/oradata/orcl11g/sysaux01.dbf',
'/u01/app/oracle/oradata/orcl11g/undotbs01.dbf',
'/u01/app/oracle/oradata/orcl11g/users01.dbf'
CHARACTER SET WE8MSWIN1252
;
SQL> select instance_name, status from v$instance;

INSTANCE_NAME STATUS


orcl11g MOUNTED

 ##数据库已进入mount状态

SQL> !ls /u01/app/oracle/oradata/orcl11g/control01.ctl
/u01/app/oracle/oradata/orcl11g/control01.ctl

SQL> !ls /u01/app/oracle/fast_recovery_area/orcl11g/control02.ctl
/u01/app/oracle/fast_recovery_area/orcl11g/control02.ctl

### 已在原来的位置创建了控制文件

3) 打开数据库

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl11g/system01.dbf'

SQL> alter database open readonly;
alter database open readonly

                *

ERROR at line 1:
ORA-02288: invalid OPEN mode

SQL> alter database open read only;
alter database open read only

各种方式均不能打开数据库,以restlog模式打开需要恢复

4)恢复数据库

recover database using backup controlfile until cancel;
ORA-00279: change 971431 generated at 07/27/2019 09:34:16 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/fast_recovery_area/ORCL11G/archivelog/2019_07_27/o1_mf_1_10_%u_.
arc
ORA-00280: change 971431 for thread 1 is in sequence #10

Specify log: {=suggested | filename | AUTO | CANCEL}
/u01/app/oracle/fast_recovery_area/ORCL11G/archivelog/2019_07_27/o1_mf_1_9_gmqbjrmd_.arc
ORA-00310: archived log contains sequence 9; sequence 10 required
ORA-00334: archived log:
'/u01/app/oracle/fast_recovery_area/ORCL11G/archivelog/2019_07_27/o1_mf_1_9_gmqb
jrmd_.arc'

ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent

change 971431 for thread 1 is in sequence #10不在归档日志中,应该位于在线日志中,这种方式的数据库恢复不检查在线日志,手动指定在线日志即可恢复。

SQL> recover database using backup controlfile until cancel;
ORA-00279: change 971431 generated at 07/27/2019 09:34:16 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/fast_recovery_area/ORCL11G/archivelog/2019_07_27/o1_mf_1_10_%u_.
arc
ORA-00280: change 971431 for thread 1 is in sequence #10

Specify log: {=suggested | filename | AUTO | CANCEL}
/u01/app/oracle/oradata/orcl11g/redo01.log ##手动指定在线日志位置
Log applied.
Media recovery complete.
SQL> alter database open resetlogs; ## 以resetlog方式打开数据库

Database altered.

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

Session altered.

SQL> select * from test_control;

CURR_TIME

2019-07-21 16:25:33
2019-07-27 09:32:21
2019-07-27 09:33:39
####检查表test_control中的数据,同控制文件删除前相同
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/orcl11g/temp01.dbf'

 SIZE 20971520  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

2
Tablespace altered.

临时文件需要重新创建

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
15天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
56 7
|
30天前
|
监控 关系型数据库 数据库
OceanBase数据库常见问题之文件存在但是数据库提示文件不存在如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
1月前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(3)
Oracle数据库基本概念理解(3)
18 2
|
15天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
41 5
|
1月前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(2)
Oracle数据库基本概念理解(2)
13 1
|
3天前
|
NoSQL MongoDB 数据库
MongoDB数据恢复—MongoDB数据库文件被破坏的数据恢复案例
服务器数据恢复环境: 一台Windows Server操作系统服务器,服务器上部署MongoDB数据库。 MongoDB数据库故障&检测: 工作人员在未关闭MongoDB数据库服务的情况下,将数据库文件拷贝到其他分区。拷贝完成后将原MongoDB数据库所在分区进行了格式化操作,然后将数据库文件拷回原分区,重新启动MongoDB服务,服务无法启动。
|
7天前
|
存储 Oracle 关系型数据库
Oracle的模式与模式对象:数据库的“城市规划师”
【4月更文挑战第19天】在Oracle数据库中,模式是用户对象的集合,相当于数据库的城市规划,包含表、视图、索引等模式对象。模式对象是数据存储结构,如表用于存储数据,视图提供不同查看角度,索引加速数据定位。良好的模式与模式对象设计关乎数据效率、安全和稳定性。规划时需考虑业务需求、性能、安全和可扩展性,以构建高效数据库环境,支持企业业务发展。
|
7天前
|
运维 Oracle 安全
Oracle的三重奏:密码文件、警告文件与跟踪文件
【4月更文挑战第19天】Oracle数据库的三大守护者:密码文件保护系统免受未经授权访问,如同宝藏的“密码锁”;警告文件似“哨兵”,记录错误信息,助于及时解决问题;跟踪文件扮演“侦探”角色,详尽记录操作,便于性能优化和故障排查。这三份文件共同确保数据王国的安全与稳定。作为管理员,重视并善用它们是关键。
|
7天前
|
运维 Oracle 关系型数据库
Oracle日志文件:数据王国的“记事本”
【4月更文挑战第19天】Oracle日志文件是数据库稳定运行的关键,记录数据变更历史,用于恢复和故障处理。它们协调并发操作,确保数据一致性和完整性。日志文件实时写入操作信息并定期刷新到磁盘,便于数据恢复。然而,日志文件需备份和归档以保证安全性,防止数据丢失。日志文件,数据王国的“记事本”,默默守护数据安全。
|
8天前
|
存储 关系型数据库 MySQL
如何处理爬取到的数据,例如存储到数据库或文件中?
处理爬取的数据,可存储为txt、csv(适合表格数据)或json(适合结构化数据)文件。若需存储大量数据并执行复杂查询,可选择关系型(如MySQL)或非关系型(如MongoDB)数据库。以MySQL为例,需安装数据库和Python的pymysql库,创建数据库和表,然后编写Python代码进行数据操作。选择存储方式应考虑数据类型、数量及后续处理需求。
17 1

推荐镜像

更多