Oracle数据库备份

一、物理备份

解释:将实际组成数据库的操作系统文件从一处拷贝到另一处的备份过程,通常是从磁盘到磁带。

1.冷备份

解释:数据库不提供服务的关闭状态,备份各种数据。

优点:

1)快速备份(只需拷贝文件)
2)容易恢复到某个时间点上(只需将文件再拷贝回去)
3)容易归档
4)低度维护,高度安全

缺点:

1)需要关闭数据库
2)只能提供到某一个时间点上的恢复
3)不能按表或按用户恢复

使用时机:单独使用或者需要和热备份配合使用时。

思路:使用cp命令。

步骤:

1)找到所需要的备份文件

SQL> show parameter spfile;        #查找初始化参数文件
SQL> select name from v$controlfile;    #列出所有控制文件
SQL> select name from v$datafile;    #列出所有数据文件
SQL> select member from v$logfile;    #列出所有日志文件
SQL> select name from v$tempfile;    #查看临时文件



2)正常关闭数据库

SQL> shutdown immediate;        

3)复制各个物理文件至指定目录

$ mkdir /mydatabase1                                        #创建备份目录
$ cp -a /usr/share/oracle/product/11.2.0/dbhome_1/dbs/spfilemydatabase1.ora /mydatabase1/    #备份参数文件,保留权限的拷贝源数据文件
$ cp -a /usr/share/oracle/oradata/mydatabase1/control01.ctl /mydatabase1/            #备份控制文件,保留权限的拷贝源数据文件
$ cp -a /usr/share/oracle/fast_recovery_area/mydatabase1/control02.ctl /mydatabase1/            
$ cp -a /usr/share/oracle/oradata/mydatabase1/system01.dbf /mydatabase1/            #备份数据文件,保留权限的拷贝源数据文件
$ cp -a /usr/share/oracle/oradata/mydatabase1/sysaux01.dbf /mydatabase1/
$ cp -a /usr/share/oracle/oradata/mydatabase1/undotbs01.dbf /mydatabase1/
$ cp -a /usr/share/oracle/oradata/mydatabase1/users01.dbf /mydatabase1/
$ cp -a /usr/share/oracle/oradata/mydatabase1/redo03.log /mydatabase1/                #备份日志文件,保留权限的拷贝源数据文件
$ cp -a /usr/share/oracle/oradata/mydatabase1/redo02.log /mydatabase1/
$ cp -a /usr/share/oracle/oradata/mydatabase1/redo01.log /mydatabase1/
$ cp -a /usr/share/oracle/oradata/mydatabase1/temp01.dbf /mydatabase1/                #备份临时文件,保留权限的拷贝源数据文件
$ ls /mydatabase1                                        #查看备份文件



2.热备份

解释:在数据库运行状态下,备份各种数据。

优点:

1)不需要关闭数据库
2)恢复精确,理论上可以根据日志回溯至上一秒的操作
3)可在表空间或数据库文件级备份

缺点:

1)过程复杂,需要不少空间存放归档文件
2)操作不允许出错,否则恢复不能进行
3)若热备份不成功,所得结果不可用于时间点的恢复

使用时机:数据库工作在归档模式下且数据访问量小,需要实现表空间及库文件级的备份或者需要做一个精度比较高的备份时。

思路:使用rman工具

步骤:

1)数据库转入归档模式

SQL> select LOG_MODE from v$database;    #查看本库是否在归档模式下,noarchivelog表示未开启,archivelog表示开启
SQL> shutdown immediate;        #关闭数据库
SQL> startup mount;                        #挂载数据库,但不启用库
SQL> alter database archivelog;            #设定为归档模式
SQL> alter database open;                  #转入open状态,开启数据库

2)创建表空间及rman用户

SQL> create tablespace tools datafile '$ORACLE_BASE/oradata/FILENAME.DBF' size 50M;                    #为目录创建一个单独的表空间并指定数据文件路径和文件名,指定文件大小
SQL> create user RMAN identified by 123456 default tablespace tools temporary tablespace temp quota unlimited on tools;    #创建RMAN用户,使用表空间tools,临时表空间名temp,在表空间上没有配额限制
SQL> grant recovery_catalog_owner,create session,resource to RMAN;                            #给RMAN用户授予权限
SQL> exit                                                        #退出数据库

3)创建恢复目录并注册数据库

$ rman catalog RMAN/123456@mydatabase1        #RMAN用户连接到catalog数据库
RMAN> create catalog tablespace 'TOOLS';    #创建恢复目录,要用大写,因为Oracle系统用大写做内部识别
RMAN> exit                    #退出rman工具

$ rman target sys/123456@mydatabase1        #连接到目标数据库
RMAN> connect catalog RMAN/123456@mydatabase1    #连接到恢复目录
RMAN> register database;            #注册目标数据库

4)备份数据库及归档日志文件

RMAN> backup database;                    #备份数据库,只备份.dbf数据文件
RMAN> backup database plus archivelog delete input;    #备份附带归档、删除、输入操作
RMAN> list backup of database;                #查看数据库备份
$ ls /usr/share/oracle/fast_recovery_area        #查看目录下有没有对应库的备份数据





5)恢复

$ orACLE_SID=mydatabase1                    #指定要恢复的数据库
$ sqlplus / as sysdba                       #以sys身份登录
SQL> shutdown immediate;                    #关闭数据库
SQL> startup mount;                         #数据库转入mount模式
SQL> exit                                   #退出
$ rman target RMAN/123456                   #连接回rman工具,连接回去时,ORACLE_SID环境变量指向目标库
RMAN> restore database;                     #恢复数据库文件
RMAN> recover database;                     #加载文件进入本库
RMAN> sql 'alter database open';            #转入open状态,开启数据库

二、逻辑备份

解释:利用SQL语言从数据库中抽取数据并存于二进制文件的过程。

优点:

1)不需要关闭数据库
2)针对对象进行备份,能够跨平台实施备份操作并迁徙数据

缺点:备份和恢复的效率比较低

使用时机:一般用于有规律的日常备份

思路:使用导入导出工具(EXP/IMP)

步骤:

1)数据导出

$ mkdir /mydatabase1    #创建备份目录

exp        #数据导出,进入导出菜单
Username    #登录备份库的数据的用户
Password    #密码
buffer         #缓存大小?默认即可
expdat.dmp    #导出的文件名?默认即可
E\U\T        #三种数据备份方法,数据库、用户、表
grant        #导出权限?默认即可
table data    #导出表数据?默认即可
compress    #压缩程度?默认即可
exported    #输入你要备份的数据库或用户或表
exported    #回车退出配置模式



2)数据导入

imp        #数据导入,进入导入菜单
Username    #登录备份库的数据的用户
Password    #密码
data only    #只导入数据?默认即可
expdat.dmp    #导入的文件名?默认即可
buffer         #缓存大小?默认即可
List        #列出所有导出的文件?默认即可
object        #对象?默认即可
grant        #导入权限?默认即可
table data    #导入表数据?默认即可
Username    #输入备份库的数据的用户
if done        #回车导入用户的所有对象




[本日志由 admin 于 2018-06-27 09:00 PM 更新]
上一篇: 使用Fabric进行远程LAMP(MariaDB)环境批量部署
下一篇: 这是最新的一篇日志
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭