Oracle数据库的备份与恢复

备份:backup 业务数据的副本(手工或RMAN)
还原:restore 把原来的备份重新覆盖过来(过程)
恢复:recover 利用日志把数据前滚出来(利用归档日志+在线日志过程)

归档日志和在线日志关系

完全恢复:将数据库恢复到宕机前最后一次提交状态
不完全恢复:手工指定数据库恢复到某个时间点

RMAN
Oracle提供了recover manger工具,简称RMAN
Oracle数据库的文件类型:备份数据文件,归档日志,控制文件(记录备份的信息),spfile
自动维护备份相关的元数据,例如备份文件的名称,完成备份的SCN号
以数据块为单位进行备份
自动检测数据块是否损坏
支持增量备份
检查数据库是否开启归档
在这里插入图片描述
设置数据库为归档模式,因为非归档模式下无法用rman备份

SQL> show user;
USER"SYS"
SQL>
SQL>
SQL> archive log list;
数据库日志模式             非存档模式
自动存档             禁用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     1
当前日志序列           2
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area 1068937216 bytes
Fixed Size                  2260048 bytes
Variable Size             679478192 bytes
Database Buffers          381681664 bytes
Redo Buffers                5517312 bytes
数据库装载完毕。
SQL> alter database archivelog;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     1
下一个存档日志序列   2
当前日志序列           2
SQL> archive log all;
ORA-00271: 没有需要归档的日志

备份数据库

C:\Users\fantasy>rman target /

恢复管理器: Release 11.2.0.2.0 - Production on 星期二 427 17:57:31 2021

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

已连接到目标数据库: XE (DBID=2952091588)

RMAN>
SQL> shutdown immediate;
ORA-01149: 无法关闭 - 文件 4 设置了联机备份
ORA-01110: 数据文件 4: 'F:\ORACLESERVICEXE\APP\ORACLE\ORADATA\XE\USERS.DBF'
SQL> alter tablespace users end backup;

表空间已更改。

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
RMAN> backup database;

启动 backup27-4-21
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=114 设备类型=DISK
RMAN-06554: 警告: 文件 4 处于备份模式
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00002 名称=F:\ORACLESERVICEXE\APP\ORACLE\ORADATA\XE\SYSAUX.DBF
输入数据文件: 文件号=00003 名称=F:\ORACLESERVICEXE\APP\ORACLE\ORADATA\XE\UNDOTBS1.DBF
输入数据文件: 文件号=00001 名称=F:\ORACLESERVICEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF
输入数据文件: 文件号=00004 名称=F:\ORACLESERVICEXE\APP\ORACLE\ORADATA\XE\USERS.DBF
通道 ORA_DISK_1: 正在启动段 127-4-21
通道 ORA_DISK_1: 已完成段 127-4-21
段句柄=F:\ORACLESERVICEXE\APP\ORACLE\FAST_RECOVERY_AREA\XE\BACKUPSET\2021_04_27\O1_MF_NNNDF_TAG20210427T174529_J8HQ9SXM_.BKP 标记=TAG20210427T174529 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:07
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前控制文件
备份集内包括当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 127-4-21
通道 ORA_DISK_1: 已完成段 127-4-21
段句柄=F:\ORACLESERVICEXE\APP\ORACLE\FAST_RECOVERY_AREA\XE\BACKUPSET\2021_04_27\O1_MF_NCSNF_TAG20210427T174529_J8HQB230_.BKP 标记=TAG20210427T174529 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
完成 backup27-4-21
RMAN> show all;

db_unique_name 为 XE 的数据库的 RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'F:\ORACLESERVICEXE\APP\ORACLE\PRODUCT\11.2.0\SERVER\DATABASE\SNCFXE.ORA'; # default

备份整个数据库脚本

run{
	allocate channel c1 type disk;
	allocate channel c2 type disk;
	backup database include current controlfile;
	release channel c1;
	release channel c2;
}
RMAN> run{allocate channel c1 type disk;allocate channel c2 type disk;backup database include current controlfile;release channel c1;release channel c2;}

使用目标数据库控制文件替代恢复目录
分配的通道: c1
通道 c1: SID=135 设备类型=DISK

RMAN-06908: 警告: 操作不能在已分配的通道上并行运行
RMAN-06909: 警告: 并行度适用于企业版
分配的通道: c2
通道 c2: SID=48 设备类型=DISK

启动 backup27-4-21
RMAN-06554: 警告: 文件 4 处于备份模式
通道 c1: 正在启动全部数据文件备份集
通道 c1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00002 名称=F:\ORACLESERVICEXE\APP\ORACLE\ORADATA\XE\SYSAUX.DBF
输入数据文件: 文件号=00004 名称=F:\ORACLESERVICEXE\APP\ORACLE\ORADATA\XE\USERS.DBF
通道 c1: 正在启动段 127-4-21
通道 c1: 已完成段 127-4-21
段句柄=F:\ORACLESERVICEXE\APP\ORACLE\FAST_RECOVERY_AREA\XE\BACKUPSET\2021_04_27\O1_MF_NNNDF_TAG20210427T175855_J8HR2ZQZ_.BKP 标记=TAG20210427T175855 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:07
通道 c1: 正在启动全部数据文件备份集
通道 c1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00003 名称=F:\ORACLESERVICEXE\APP\ORACLE\ORADATA\XE\UNDOTBS1.DBF
输入数据文件: 文件号=00001 名称=F:\ORACLESERVICEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF
通道 c1: 正在启动段 127-4-21
通道 c1: 已完成段 127-4-21
段句柄=F:\ORACLESERVICEXE\APP\ORACLE\FAST_RECOVERY_AREA\XE\BACKUPSET\2021_04_27\O1_MF_NNNDF_TAG20210427T175855_J8HR36W9_.BKP 标记=TAG20210427T175855 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:03
通道 c1: 正在启动全部数据文件备份集
通道 c1: 正在指定备份集内的数据文件
备份集内包括当前控制文件
通道 c1: 正在启动段 127-4-21
通道 c1: 已完成段 127-4-21
段句柄=F:\ORACLESERVICEXE\APP\ORACLE\FAST_RECOVERY_AREA\XE\BACKUPSET\2021_04_27\O1_MF_NCNNF_TAG20210427T175855_J8HR3C1L_.BKP 标记=TAG20210427T175855 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:01
通道 c1: 正在启动全部数据文件备份集
通道 c1: 正在指定备份集内的数据文件
备份集内包括当前的 SPFILE
通道 c1: 正在启动段 127-4-21
通道 c1: 已完成段 127-4-21
段句柄=F:\ORACLESERVICEXE\APP\ORACLE\FAST_RECOVERY_AREA\XE\BACKUPSET\2021_04_27\O1_MF_NNSNF_TAG20210427T175855_J8HR3D4Q_.BKP 标记=TAG20210427T175855 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:01
完成 backup27-4-21

释放的通道: c1

释放的通道: c2

备份users表空间

RMAN> run{
2> allocate channel c1 type disk;
3> allocate channel c2 type disk;
4> backup tablespace users;
5> release channel c1;
6> release channel c2;
7> }

使用目标数据库控制文件替代恢复目录
分配的通道: c1
通道 c1: SID=113 设备类型=DISK

RMAN-06908: 警告: 操作不能在已分配的通道上并行运行
RMAN-06909: 警告: 并行度适用于企业版
分配的通道: c2
通道 c2: SID=137 设备类型=DISK

启动 backup27-4-21
RMAN-06554: 警告: 文件 4 处于备份模式
通道 c1: 正在启动全部数据文件备份集
通道 c1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00004 名称=F:\ORACLESERVICEXE\APP\ORACLE\ORADATA\XE\USERS.DBF
通道 c1: 正在启动段 127-4-21
通道 c1: 已完成段 127-4-21
段句柄=F:\ORACLESERVICEXE\APP\ORACLE\FAST_RECOVERY_AREA\XE\BACKUPSET\2021_04_27\O1_MF_NNNDF_TAG20210427T180521_J8HRH187_.BKP 标记=TAG20210427T180521 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:01
完成 backup27-4-21

释放的通道: c1

释放的通道: c2

备份单个Oracle数据文件

RMAN> run{
2> allocate channel c1 type disk;
3> allocate channel c2 type disk;
4> backup datafile 4;
5> release channel c1;
6> release channel c2;
7> }

使用目标数据库控制文件替代恢复目录
分配的通道: c1
通道 c1: SID=48 设备类型=DISK

RMAN-06908: 警告: 操作不能在已分配的通道上并行运行
RMAN-06909: 警告: 并行度适用于企业版
分配的通道: c2
通道 c2: SID=114 设备类型=DISK

启动 backup27-4-21
RMAN-06554: 警告: 文件 4 处于备份模式
通道 c1: 正在启动全部数据文件备份集
通道 c1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00004 名称=F:\ORACLESERVICEXE\APP\ORACLE\ORADATA\XE\USERS.DBF
通道 c1: 正在启动段 127-4-21
通道 c1: 已完成段 127-4-21
段句柄=F:\ORACLESERVICEXE\APP\ORACLE\FAST_RECOVERY_AREA\XE\BACKUPSET\2021_04_27\O1_MF_NNNDF_TAG20210427T181411_J8HRZMYT_.BKP 标记=TAG20210427T181411 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:01
完成 backup27-4-21

释放的通道: c1

释放的通道: c2

查看数据库文件

SQL> desc dba_data_files;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 FILE_NAME                                          VARCHAR2(513)
 FILE_ID                                            NUMBER
 TABLESPACE_NAME                                    VARCHAR2(30)
 BYTES                                              NUMBER
 BLOCKS                                             NUMBER
 STATUS                                             VARCHAR2(9)
 RELATIVE_FNO                                       NUMBER
 AUTOEXTENSIBLE                                     VARCHAR2(3)
 MAXBYTES                                           NUMBER
 MAXBLOCKS                                          NUMBER
 INCREMENT_BY                                       NUMBER
 USER_BYTES                                         NUMBER
 USER_BLOCKS                                        NUMBER
 ONLINE_STATUS                                      VARCHAR2(7)

SQL> select file_id from dba_data_files;

   FILE_ID
----------
         4
         2
         3
         1
         5

SQL>

以数据库管理员账号登录数据库

C:\Users\fantasy>sqlplus / as sysdba;

SQL*Plus: Release 11.2.0.2.0 Production on 星期二 427 19:05:40 2021

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> show user;
USER"SYS"
SQL>

使用EXP命令

C:\Users\fantasy>exp fantasy/fantasy tables=test rows=y file=E:/test.dmp log=E:/exp_test.log

Export: Release 11.2.0.2.0 - Production on 星期二 427 16:37:14 2021

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

连接到: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
服务器使用 AL32UTF8 字符集 (可能的字符集转换)

即将导出指定的表通过常规路径...
. . 正在导出表                            TEST导出了           1 行
成功终止导出, 没有出现警告。

C:\Users\fantasy>

如果时本机,不要带@数据库实例名!!!如果不是,尝试使用@ip:端口号:SERVICE_NAME
在这里插入图片描述
IMP命令导入

E:\>imp fantasy/fantasy fromuser=fantasy touser=fantasy file=test.dmp rows=y commit=y
Import: Release 11.2.0.2.0 - Production on 星期二 427 16:42:50 2021
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
连接到: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
经由常规路径由 EXPORT:V11.02.00 创建的导出文件
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
导入服务器使用 AL32UTF8 字符集 (可能的字符集转换)
. 正在将 FANTASY 的对象导入到 FANTASY
. . 正在导入表                          "TEST"导入了           1 行
成功终止导入, 没有出现警告。
E:\>

用户、权限

C:\Users\fantasy>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on 星期二 427 17:02:42 2021
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
连接到:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL> show user;
USER"SYS"

创建用户,但是现在fantasy无法登录。

SQL> create user fantasy identified by fantasy
  2  default tablespace users;

用户已创建。
SQL> grant connect to fantasy;

授权成功。

登录授权。

恢复数据

SQL> desc v$recover_file;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 FILE#                                              NUMBER
 ONLINE                                             VARCHAR2(7)
 ONLINE_STATUS                                      VARCHAR2(7)
 ERROR                                              VARCHAR2(18)
 CHANGE#                                            NUMBER
 TIME                                               DATE

SQL> select * from v$recover_file;

     FILE# ONLINE         ONLINE_STATUS
---------- -------------- --------------
ERROR                                                                CHANGE#
----------------------------------------------------------------- ----------
TIME
--------------
         5 ONLINE         ONLINE
FILE NOT FOUND                                                             0



SQL>
RMAN> restore datafile 5;

启动 restore27-4-21
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=3 设备类型=DISK

通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00005 还原到 F:\ORACLESERVICEXE\APP\ORACLE\PRODUCT\11.2.0\SERVER\DATABASE\TESTSPACE.DBF
通道 ORA_DISK_1: 正在读取备份片段 F:\ORACLESERVICEXE\APP\ORACLE\FAST_RECOVERY_AREA\XE\BACKUPSET\2021_04_27\O1_MF_NNNDF_TAG20210427T194022_J8HY172S_.BKP
通道 ORA_DISK_1: 段句柄 = F:\ORACLESERVICEXE\APP\ORACLE\FAST_RECOVERY_AREA\XE\BACKUPSET\2021_04_27\O1_MF_NNNDF_TAG20210427T194022_J8HY172S_.BKP 标记 = TAG20210427T194022
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
完成 restore27-4-21

但是5号文件比其他文件旧

SQL> select file#,CHECKPOINT_CHANGE# from v$datafile_header;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             392799
         2             392799
         3             392799
         4             392799
         5             392345

SQL>

需要恢复,但恢复有问题

RMAN> recover datafile 5;

启动 recover 于 27-4-21
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (04/27/2021 19:59:58) 失败
ORA-03114: 未连接到 ORACLE

于实强制恢复到同一时间点

SQL> select file#,CHECKPOINT_CHANGE# from v$datafile_header;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             392799
         2             392799
         3             392799
         4             392799
         5             392345

RMAN> recover database until scn 392799;

启动 recover 于 27-4-21
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=24 设备类型=DISK

正在开始介质的恢复
Oracle 错误:
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: 'F:\ORACLESERVICEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF'

介质恢复完成, 用时: 00:00:01

完成 recover 于 27-4-21

RMAN>

然后再启动数据库就发现时间点都一样了

SQL> alter database open noresetlogs;

数据库已更改。

SQL> select * from v$recover_file;

未选定行

SQL> select file#,CHECKPOINT_CHANGE# from v$datafile_header;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1             392802
         2             392802
         3             392802
         4             392802
         5             392802

SQL>

查看数据库的时间点

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
     394075

SQL>

然后再备份一下数据库,就随便玩吧

RMAN> backup database;

启动 backup27-4-21
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=6 设备类型=DISK
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00002 名称=F:\ORACLESERVICEXE\APP\ORACLE\ORADATA\XE\SYSAUX.DBF
输入数据文件: 文件号=00003 名称=F:\ORACLESERVICEXE\APP\ORACLE\ORADATA\XE\UNDOTBS1.DBF
输入数据文件: 文件号=00001 名称=F:\ORACLESERVICEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF
输入数据文件: 文件号=00004 名称=F:\ORACLESERVICEXE\APP\ORACLE\ORADATA\XE\USERS.DBF
输入数据文件: 文件号=00005 名称=F:\ORACLESERVICEXE\APP\ORACLE\PRODUCT\11.2.0\SERVER\DATABASE\TESTSPACE.DBF
通道 ORA_DISK_1: 正在启动段 127-4-21
通道 ORA_DISK_1: 已完成段 127-4-21
段句柄=F:\ORACLESERVICEXE\APP\ORACLE\FAST_RECOVERY_AREA\XE\BACKUPSET\2021_04_27\O1_MF_NNNDF_TAG20210427T200847_J8HZPHVB_.BKP 标记=TAG20210427T200847 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:07
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前控制文件
备份集内包括当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 127-4-21
通道 ORA_DISK_1: 已完成段 127-4-21
段句柄=F:\ORACLESERVICEXE\APP\ORACLE\FAST_RECOVERY_AREA\XE\BACKUPSET\2021_04_27\O1_MF_NCSNF_TAG20210427T200847_J8HZPR0B_.BKP 标记=TAG20210427T200847 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
完成 backup27-4-21

RMAN>
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值