Oracle【备份迁移篇】02:使用RMAN进行数据库备份【本机进行全备以及恢复测试】

目的:使用RMAN在本机进行备份,备份完之后,然后进行删除数据操作,记得删除数据的时候记下时间点,然后使用RMAN进行恢复。

一、环境准备

1、环境信息

安装好Oracle19c单机数据库

192.168.184.183 orcl

在这里插入图片描述

检查监听和数据库是否启动,如果没启动进行启动

lsnrctl start
lsnrtcl status

在这里插入图片描述

su - oracle
sqlplus / as sysdba
startup

在这里插入图片描述

2、创建用户和测试表

可参考:

创建一个用户并指定表空间

create tablespace test datafile '/u01/app/oracle/oradata/ORCL/test.dbf' size 100m autoextend on next 100m maxsize 400m extent management local;

CREATE TEMPORARY TABLESPACE test_temp 
TEMPFILE '/u01/app/oracle/oradata/ORCL/test_temp.dbf' 
SIZE 20M 
AUTOEXTEND ON 
NEXT 5M MAXSIZE 100M;

create user test identified by admin
default tablespace TEST
temporary tablespace TEST_TEMP;

GRANT CONNECT, RESOURCE TO test;
ALTER USER test QUOTA UNLIMITED ON TEST; 


CREATE TABLE student_info (
    student_id   NUMBER(10)    PRIMARY KEY,
    name         VARCHAR2(50)  NOT NULL,
    gender       CHAR(1)       CHECK (gender IN ('M', 'F')),
    birth_date   DATE,
    email        VARCHAR2(100) UNIQUE,
    create_time  TIMESTAMP     DEFAULT SYSTIMESTAMP
);



-- 单条记录插入
INSERT INTO student_info VALUES 
(1, '张三', 'M', TO_DATE('2000-01-15', 'YYYY-MM-DD'), 'zhangsan@edu.cn',  DEFAULT);
-- 多条记录插入
INSERT ALL 
INTO student_info VALUES (2, '李四', 'M', DATE '2001-03-22', 'lisi@example.com',  SYSTIMESTAMP)
INTO student_info VALUES (3, '王芳', 'F', TO_DATE('1999-12-05', 'YYYY-MM-DD'), 'wangfang@mail.com',  DEFAULT)
SELECT * FROM DUAL;

commit;
SELECT * FROM student_info;

在这里插入图片描述

二、全量备份/恢复

1、创建备份目录

su - oracle
mkdir /u01/app/oracle/backup
chown -R oracle:oinstall /u01/app/oracle/backup/
chmod -R 770 /u01/app/oracle/backup/

在这里插入图片描述

2、开始备份

(1)连接到rman

rman target sys/oracle@orcl nocatalog

在这里插入图片描述

(2)开始全量备份

这里的%U表示生成唯一的名字

backup database format '/u01/app/oracle/backup/md_%U';

在这里插入图片描述

3、查看备份记录

 list backup;

在这里插入图片描述

4、查看备份文件

cd /u01/app/oracle/backup
ll

在这里插入图片描述

5、删除数据

SELECT * FROM student_info;
delete from student_info where student_id = 1;
commit;
SELECT * FROM student_info;
SELECT to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') FROM dual;

在这里插入图片描述
在这里插入图片描述

6、进行数据恢复

(1)检查备份文件

检查备份文件是否完整且可用

rman target sys/oracle@orcl nocatalog
LIST BACKUP;

在这里插入图片描述

(2)确保数据库为归档模式

sqlplus / as sysdba
SELECT log_mode FROM v$database;

在这里插入图片描述

(3)关闭数据库,启动到mount状态

su - oracle
sqlplus / as sysdba

在这里插入图片描述

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;

在这里插入图片描述

(4)恢复数据

重新连接rman,之前的连接已经失效了,因为数据库关闭又重启到mount状态了。

rman target sys/oracle@orcl nocatalog
RESTORE DATABASE;

在这里插入图片描述
如果控制文件丢失,要先恢复控制文件,这里我没有操作

rman target sys/oracle@orcl nocatalog

RESTORE CONTROLFILE FROM AUTOBACKUP;
ALTER DATABASE MOUNT;

(6)应用归档日志进行恢复

若需要恢复到特定时间点,我这里指定了时间,不然默认使用完全恢复的话,会执行归档日志中的操作。

RECOVER DATABASE UNTIL TIME "TO_DATE('2025-05-16 18:56:00', 'YYYY-MM-DD HH24:MI:SS')";

RMAN的默认恢复是​​完全恢复(应用所有可用归档日志和在线重做日志),这样就看不出效果了。

rman target sys/oracle@orcl nocatalog
RECOVER DATABASE;

(7)打开数据库

如果是不完全恢复,执行这个,因为我指定了时间点了,所以是不完全恢复

rman target sys/oracle@orcl nocatalog
ALTER DATABASE OPEN RESETLOGS

在这里插入图片描述

如果是完全恢复,执行这个

rman target sys/oracle@orcl nocatalog
ALTER DATABASE OPEN;

在这里插入图片描述
​​默认恢复行为:​​
RMAN的默认恢复是​​完全恢复​​(应用所有可用归档日志和在线重做日志),这意味着:如果备份后执行了删除表的操作,并且归档日志中包含该删除操作,恢复时会应用这些日志,导致表仍处于删除状态。

​​未指定恢复时间点​​:
如果希望恢复到删除表之前的状态,必须显式指定恢复的终止时间点(SCN或时间戳),否则RMAN会恢复到最新状态(包含删除操作)

(8)查看数据库状态

重新连接的到数据库

sqlplus / as sysdba
SELECT status FROM v$instance;

在这里插入图片描述

(9)查看数据

select * from student_info;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做一个有趣的人Zz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值