1 备份恢复概述
1.1 Oracle体系结构回顾
1.1.1 oracle server结构
1.1.2 内存结构
1.1.3 进程结构
1.1.4 存储结构
1.1.5 system和sysaux表空间
system和sysaux表空间是必须存在的表空间,这些表空间是在创建数据库时创建的。system表空间用户核心功能(如数据字典表)。辅助的sysaux表空间用户附加的数据库组件(如Oracle Enterpfise Manager Repository)
1.1.6 数据库体系结构小结
内存结构:
系统全局区(SGA):数据库缓冲区高速缓存、重做缓冲区以及各种池
程序全局区(PGA)
进程结构:
用户进程和服务器进程
后台进程:SMON、PMON、DBWn、CKPT、LGWR、ARCn等
存储结构:
逻辑:数据库、方案、表空间、段、区和Oracle块
物理:数据文件、控制文件和重做日志文件。
1.1.7 实例启动的三个阶段
1.2 数据库故障类型
备份和恢复功能的用途
下列任务需要备份和恢复功能
保护数据(介质故障、用户错误、应用程序错误)
保留数据
传输数据
(1)user process failue 用户进程故障:pmon自动处理
(2)instance failue 实例故障: smon自动处理
(3)user errors 用户错误: 需要dba通过备份恢复解决
(4)meida failue 介质故障: 必须通过备份和日志恢复
1.3 备份恢复分类
1.3.1 逻辑备份与恢复–面向object
(1)传统的导入导出:exp/imp:
(2)数据泵导入导出:expdp/impdp
逻辑备份就是热备数据库对象某一时刻状态,不能运用在media failure上,逻辑备份的恢复就是还原备份,没有recover的概念。
1.3.2 物理备份与恢复–面向media failure
(1) 手工备份与恢复,也叫用户管理的备份与恢复(UMAN),通过OS的命令,完成备份与还原,然后再运用日志进行恢复。
(2)自动备份与恢复,利用oracle的备份恢复工具RMAN,使还原会恢复过程自动完成。
物理备份从方式上可以有一致性备份(冷备)和非一致性备份(热备)
完整的备份策略应该以物理备份为主,逻辑备份为辅(用于备份一些重要的表)
restore:还原(转储)
revocer:恢复
1.3.2.1 实例恢复原理与数据库一致性
SQL> select current_scn,checkpoint_change# from V$database; CURRENT_SCN CHECKPOINT_CHANGE# ----------- ------------------ 1277102 1252777
复制
SQL> select file#,checkpoint_change#,last_change# from v$datafile; FILE# CHECKPOINT_CHANGE# LAST_CHANGE# ---------- ------------------ ------------ 1 1252777 2 1252777 3 1252777 4 1252777 5 1252777 6 1252777 6 rows selected.
复制
SQL> select file#,checkpoint_change# from v$datafile_header; FILE# CHECKPOINT_CHANGE# ---------- ------------------ 1 1252777 2 1252777 3 1252777 4 1252777 5 1252777 6 1252777
复制
6 rows selected.
看mount状态last_change#,有值,说明之前正常关库,open时不需要进行实例恢复,没有值,说明之前非正常关库,open时需要进行实例恢复instance recovery。
1.3.3 闪回技术–面向人为的逻辑错误
一种利用undo数据或闪回日志的快速恢复技术。可以针对不同层面问题进行逻辑恢复,11g支持七种flashback方式。
1.4 完全恢复与不完全恢复
恢复有两类作用域:
完全恢复:将数据库恢复到当前的最新状态,包括直至请求恢复时进行的所有已提交的数据更改。
不完全恢复:将数据库恢复到请求恢复操作之前指定的过去时间点。
media failure后,需要运用日志进行recover。
(1)完全恢复:
利用完整备份或部分备份,可以将datafile恢复到failure前得到最后一次commit,不会出现数据丢失。
(2)不完全恢复
需要运用完成备份和日志将database恢复到过去的某个时间点(或scn)有数据丢失。
1.5 归档与非归档模式
(1)归档模式:redo log写入archive log
(2)非归档模式:没有archive log,redo log file循环覆盖
当处于非归档模式下时,在丢失数据文件后唯一的选择是执行完整的数据库还原,而不能进行recover。
非归档模式只能进行冷备(一致性备份),只能进行完整还原(还原到最后一次备份);
归档模式可以冷备也可以热备(非一致性备份),可以恢复到最后一次commit。
查看当前归档模式:非归档模式
SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination /oracle/arch/ Oldest online log sequence 43 Next log sequence to archive 45 Current log sequence 45
复制
SQL> col file_name for a50 SQL> select file_id,tablespace_name from dba_data_files;
复制
尝试备份users表空间
SQL> alter tablespace users begin backup; Tablespace altered. RMAN> report schema;
复制
RMAN> backup datafile 5;
备份文件
RMAN> backup datafile 5;
复制
Starting backup at 2023-02-08 16:09:40 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=198 device type=DISK channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00005 name=/oracle/app/oracle/oradata/oracle/test01.dbf channel ORA_DISK_1: starting piece 1 at 2023-02-08 16:09:40 channel ORA_DISK_1: finished piece 1 at 2023-02-08 16:09:41 piece handle=/oracle/app/oracle/fast_recovery_area/ORACLE/backupset/2023_02_08/o1_mf_nnndf_TAG20230208T160940_ky6p64yg_.bkp tag=TAG20230208T160940 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 2023-02-08 16:09:41
复制
1.6 开归档
1.6.1 创建目录并授予权限
[oracle@primary ~]$ mkdir /oracle/arch/ [oracle@primary ~]$ ls -ld /oracle/arch [oracle@primary ~]$ chmod 775 /oracle/arch
复制
1.6.2 修改初始化参数文件
SQL> alter system set log_archive_dest_1='location='/oracle/arch'; SQL> alter system set log_archive_format='arch_PROD_%t_%s_%r.dbf' scope=spfile;
复制
1.6.3 正常关库,启动到mount状态
SQL> shutdown immediate SQL> startup mount; SQL> alter database archivelog; SQL> alter database open; SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination /oracle/arch/ Oldest online log sequence 44 Next log sequence to archive 46 Current log sequence 46
复制
切日志组,查看归档生成情况。