Oracle基于用户管理的备份与恢复

2024年 6月 4日 76.7k 0

1-备份恢复概念

Oracle-基于用户管理的备份与恢复-1

逻辑备份和物理备份

逻辑备份:数据迁移、逻辑备份(只能解决逻辑错误)

传统导入导出:IMP/EXP

数据泵导入导出:IMPDP/EXPDP

但是需要注意一点:逻辑备份是没有恢复recover概念的。(注意如果数据库是非归档模式,也没有恢复recover这个概念)

物理备份:几乎可以用于所有场景(包括逻辑错误和物理错误)

User-managed backup 基于用户管理的备份,手工备份

Recovery-manager 基于恢复管理器备份,RMAN备份,自动备份与恢复,通过Oracle提供的一个RMAN工具进行备份,还

原恢复过程都是自动完成。

物理备份从方式上可以分为:冷备和热备

冷备:一致性备份、脱机备份、离线备份

热备:非一致性备份、联机备份、在线备份

2-用户管理备份(手工冷备)

手工冷备的过程:

1.获取数据库运行所需的物理文件

2.关闭数据库

3.把所要备份的物理文件拷贝出来

4.打开数据库

查看数据文件

SQL> select name from v$datafile;

Oracle-基于用户管理的备份与恢复-2

查看控制文件

SQL> select name from v$controlfile;

Oracle-基于用户管理的备份与恢复-3

查看日志文件

SQL> select member from v$logfile;

Oracle-基于用户管理的备份与恢复-4

干净一致的关闭数据库

SQL> shutdown immediate;

拷贝文件

[oracle@Jay-19C soft]$ mkdir cdb

[oracle@Jay-19C soft]$ mkdir pdbseed

[oracle@Jay-19C soft]$ mkdir erp

Oracle-基于用户管理的备份与恢复-5

[oracle@Jay-19C erp]$ cp * /soft/erp/

[oracle@Jay-19C pdbseed]$ cp * /soft/pdbseed/

Oracle-基于用户管理的备份与恢复-6

打开数据库

SQL> startup

3-用户管理备份(手工热备)

必须在归档模式下运行

对于只读表空间不可以进行热备;

对于临时表空间不能热备;

非归档模式也无法热备。

热备是有流程的:

备份前需要进入 backup mode 模式,执行:begin backup

备份完成之后要 end backup

针对整个数据库做热备,这种方式不建议,不实用

Alter database begin backup;

之后底层开始copy文件,等待copy完成之后

Alter database end backup;

针对表空间做热备

SQL> alter tablespace users begin backup;

SQL> select * from v$backup where con_id=1;热备监控

之后底层开始copy文件,等待copy完成之后

SQL> alter tablespace users end backup;

4-用户管理的完全恢复

完全恢复:恢复到最后一次commit状态。

完全恢复的步骤:

restore:还原,OS底层拷贝命令复制所有的或部分的数据文件,这个过程叫restore

recover:恢复,通过sql*plus工具命令行,利用归档和当前的redolog做日志恢复(恢复到最后一次commit)

恢复的三个级别:

Recover database 数据库级别:一般用于包括关键表空间system损坏,或大部分datafile丢失损坏,一般是在

mount状态(加载控制文件)下完成。

Recover tablespace 表空间级别:一般用于非关键表空间损坏,表空间下某些数据文件不能访问,一般是在

open状态下。

Recover datafile 数据文件级别:单一数据文件或者少量的数据文件损坏,可以在mount或者open状态下完

成。

关键文件:system01.dbf/ undo01.dbf /controlfile /currentlog

恢复的相关试图

查看需要恢复的数据文件(mount状态查看)

SQL> select * from v$recover_file;

实验一:关键系统表空间损坏

实验过程中,为了方便,只关注根容器,需要把其他PDB进行关闭

SQL> ---alter pluggable database erp close;

0.关闭整个数据库

1.首先自己做一份数据库的全备(手工冷备)

2.在跟容器里面做测试数据

SQL> create table abc(id number); 默认创建在system表空间

Table created.

SQL> show user

USER is "SYS"

SQL> insert into abc values(1);

1 row created.

SQL> insert into abc values(2);

1 row created.

SQL> insert into abc values(3);

1 row created.

SQL> commit;

Commit complete.

SQL> insert into abc values(4);

1 row created.

SQL> insert into abc values(5);

1 row created.

SQL> !rm -rf /u01/app/oracle/oradata/CDB19C/system01.dbf

SQL> insert into abc values(6);

1 row created.

SQL> insert into abc values(7);

1 row created.

SQL> alter system checkpoint; 正常情况下,报错

alter system checkpoint

Oracle-基于用户管理的备份与恢复-7

3.还原所有数据文件

底层cp

[oracle@Jay-19C CDB19C]$ cp /soft/cdb/*.dbf .

4.恢复数据库

SQL> select * from v$recover_file;

SQL> recover database;

Media recovery complete.

SQL> alter database open;

4.恢复数据库

SQL> recover database;

Media recovery complete.

SQL> alter database open;

Oracle-基于用户管理的备份与恢复-8

5.查数据

Oracle-基于用户管理的备份与恢复-9

实验二:非关键数据文件损坏

步骤:脱机、还原、恢复、联机

SQL> create table users_abc(id number) tablespace users;

Table created.

SQL> insert into users_abc values(1);

1 row created.

SQL> insert into users_abc values(2);

1 row created.

SQL> commit;

Commit complete.

SQL> !rm -rf /u01/app/oracle/oradata/CDB19C/users01.dbf

SQL> insert into users_abc values(3);

1 row created.

SQL> insert into users_abc values(4);

1 row created.

SQL> commit;

Commit complete.

SQL> insert into users_abc values(5);

1 row created.

SQL> alter system switch logfile;

System altered.

SQL> /

System altered.

SQL> /

alter system switch logfile

Oracle-基于用户管理的备份与恢复-10

Oracle-基于用户管理的备份与恢复-11

SQL> select file#,CHECKPOINT_CHANGE# from v$datafile_header where con_id=1;

FILE# CHECKPOINT_CHANGE#

Oracle-基于用户管理的备份与恢复-12

SQL> alter database datafile 7 offline;

SQL> alter database open;

Oracle-基于用户管理的备份与恢复-13

回头处理7号文件

[oracle@Jay-19C CDB19C]$ cp /soft/cdb/users01.dbf .

SQL> select * from v$recover_file;

SQL> select file#,CHECKPOINT_CHANGE# from v$datafile_header where con_id=1;

Oracle-基于用户管理的备份与恢复-14

Oracle-基于用户管理的备份与恢复-15

Oracle-基于用户管理的备份与恢复-16

SQL> select file#,CHECKPOINT_CHANGE# from v$datafile_header where con_id=1;

SQL> alter database datafile 7 online;

SQL> select * from users_abc;

Oracle-基于用户管理的备份与恢复-17

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论