oracle 用数据文件恢复数据库

后端 (46) 2023-11-18 09:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说oracle 用数据文件恢复数据库,希望能够帮助你!!!。

Oracle数据库使用RMAN备份,需要把数据库的非归档模式改成归档模式。

一、更改数据库的归档模式需要重新启动数据库,在mount模式下修改(三种启动模式nomount---mount--- open)。

具体步骤如下:

1、进入数据库后,关闭数据库

SQL>shutdown immediate

2、启动数据库到mount状态

SQL>startup mount

3、改变数据库为归档模式

SQL>alter database archivelog;(归档改为非归档语句为alter database noarchivelog;)

4、验证方式

SQL>alter database open;(打开数据库)

SQL>archive log list

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第1张

二、启动控制文件的自动备份

RMAN>configure controlfile autobackup on;

RMAN>show controlfile autobackup ;(验证)

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第2张

三、全库备份

3.1最简单的全库备份

RMAN>backup database;

RMAN>list backup;(验证)

RMAN>list backup summary;(验证)

在以上备份的情况下,使用以下步骤恢复。

数据库丢失数据文件、控制文件、重做日志文件的恢复

一、查看备份情况

在oracle用户下,输入以下命令

[oracle@shell ~]$ rman target/

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第3张

RMAN> list backup;

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第4张

由上图知悉,已经备份了数据库的控制文件。

现在删除/usr/local/oradata/orcl下的文件

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第5张

[oracle@shell orcl]$ rm *.*

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第6张

SQL> select count(*) from bankuser.emp;

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第7张

上图显示找不到数据库文件导致错误。

二、恢复

目标是恢复控制文件、数据文件、重做日志文件

2.1强制关闭数据库再重新启动

SQL> shutdown abort

SQL> startup

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第8张

2.2 查看实例

SQL> select instance_name,status from v$instance;

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第9张

上图中的started状态表明数据库只读取到了初始化文件,当前为nomount状态。

2.3恢复控制文件

[oracle@shell orcl]$ rman target/

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第10张

RMAN> restore controlfile from autobackup;

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第11张

在/usr/local/oradata/orcl目录下查看恢复的文件。

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第12张

2.4恢复数据文件

设置数据库到mount状态

RMAN> alter database mount;

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第13张

从原来的备份中还原数据库的数据文件

RMAN> restore database;

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第14张

由上图知悉成功还原数据库数据文件。

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第14张

由上图可以看到恢复的文件。

2.5恢复数据库

[oracle@shell orcl]$ sqlplus / as sysdba

SQL> recover database using backup controlfile until cancel;

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第16张

这样就恢复了数据库的数据文件。

2.6由于丢失了数据库的重做日志文件,这一部分数据将会丢失,所以这是不完全恢复。需要重新生成数据库重做日志文件。

SQL> alter database open resetlogs;

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第17张

三、验证

SQL> archive log list;

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第18张

由上图知悉,查看当前数据库的日志序号,是从1开始,表示重新生成了oracle数据库的重做日志文件。

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第19张

由上图看到,在/usr/local/oradata/orcl目录下生成了.log的重做日志文件。

三、验证

[oracle@shell RmanBackup]$ sqlplus / as sysdba

SQL> select instance_name,status from v$instance;

oracle 用数据文件恢复数据库_https://bianchenghao6.com/blog_后端_第20张

由上图知悉,数据库恢复正常。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。