ORACLE数据库有两类备份方法第一类为物理备份该方法实现数据库的完整恢复但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行)且需要极大的外部存储设备例如磁带库第二类备份方式为逻辑备份业务数据库采用此种方式此方法不需要数据库运行在归挡模式下不但备份简单而且可以不需要外部存储设备
数据库逻辑备份方法
ORACLE数据库的逻辑备份分为三种模式表备份用户备份和完全备份
表模式
备份某个用户模式下指定的对象(表)业务数据库通常采用这种备份方式若备份到本地文件使用如下命令
exp icdmain/icd rows=y indexes=n compress=n buffer=
feedback= volsize=
file=exp_icdmain_csd_yyyymmdddmp
log=exp_icdmain_csd_yyyymmddlog
tables=moninformationicdmainserviceinfoicdmaindealinfo
若直接备份到磁带设备使用如下命令
exp icdmain/icd rows=y indexes=n compress=n buffer=
feedback= volsize=
file=/dev/rmt
log=exp_icdmain_csd_yyyymmddlog
tables=moninformationicdmainserviceinfoicdmaindealinfo
注在磁盘空间允许的情况下应先备份到本地服务器然后再拷贝到磁带出于速度方面的考虑尽量不要直接备份到磁带设备
用户模式
备份某个用户模式下的所有对象业务数据库通常采用这种备份方式若备份到本地文件使用如下命令
exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=
feedback= volsize=
file=exp_icdmain_yyyymmdddmp
log=exp_icdmain_yyyymmddlog
若直接备份到磁带设备使用如下命令
exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=
feedback= volsize=
file=/dev/rmt
log=exp_icdmain_yyyymmddlog
注如果磁盘有空间建议备份到磁盘然后再拷贝到磁带如果数据库数据量较小可采用这种办法备份
完全模式
备份完整的数据库业务数据库不采用这种备份方式备份命令为
exp icdmain/icd rows=y indexes=n compress=n buffer=
feedback= volsize= full=y
file=exp_fulldb_yyyymmdddmp(磁带设备则为/dev/rmt)
log=exp_fulldb_yyyymmddlog
对于数据库备份建议采用增量备份即只备份上一次备份以来更改的数据增量备份命令
exp icdmain/icd rows=y indexes=n compress=n buffer=
feedback= volsize= full=y inctype=incremental
file=exp_fulldb_yyyymmdddmp(磁带设备则为/dev/rmt)
log=exp_fulldb_yyyymmddlog
注关于增量备份必须满足下列条件
只对完整数据库备份有效且第一次需要full=y参数以后需要inctype=incremental参数
用户必须有EXP_FULL_DATABASE的系统角色
话务量较小时方可采用数据库备份
如果磁盘有空间建议备份到磁盘然后再备份到磁带业务数据库备份方法及周期用EXP进行备份前先在SYS用户下运行CATEXPSQL文件(如果以前已运行该文件则不要执行这个脚本)
没有特殊说明不允许在客户端执行备份命令
备份命令参照表模式下的备份命令
从磁盘文件备份到磁带如果首先备份到本地磁盘文件则需要转储到磁带设备上
若需查看主机上配置的磁带设备使用如下命令
lsdev Cc tape
显示的结果如下例所示
rmt Available SCSI mm Tape Drive
rmt Defined SCSI mm Tape Drive
标明Available的设备是可用的磁带设备
若需查看磁带存储的内容使用如下命令
tar tvf /dev/rmt
显示的结果如下例所示
rwrr Jan :: exp_icdmain_dmp
如果显示类似如下内容则表示该磁带存储的备份数据是从数据库直接备份到磁带上而非从本地磁盘转储到磁带的备份文件因此操作系统无法识别
tar: An error occurred while reading from the media
There is an input or output error
或
tar: A directory checksum error on media; not equal to
对于新磁带或无需保留现存数据的磁带使用如下命令
tar cvf /dev/rmt exp_icdmain_yyyymmdddmp
注A 该命令将无条件覆盖磁带上的现存数据
B 文件名不允许包含路径信息如/backup/exp_icdmain_yyyymmdddmp
对于需要保留现存数据的磁带使用如下命令
tar rvf /dev/rmt exp_icdmain_yyyymmdddmp
注该命令将文件exp_icdmain_yyyymmdddmp追加到磁带的末端不会覆盖现存的数据
特别强调如果备份时是从数据库直接备份到磁带上则不可再向该磁带上追加复制任何其他文件否则该备份数据失效
若需将转储到磁带上的备份文件复制到本地硬盘使用如下命令
A 将磁带上的全部文件复制到本地硬盘的当前目录
tar xvf /dev/rmt
B 将磁带上的指定文件复制到本地硬盘的当前目录
tar xvf /dev/rmt exp_icdmain_yyyymmdddmp
备份时间安排
由于备份时对系统I/O有较大影响所以建议在晚上点以后进行备份工作业务数据库Oracle版本的恢复恢复方案需根据备份方案确定由于业务数据库采用表备份和用户备份相结合的方案所以业务数据库的恢复需根据实际情况采用表恢复和用户恢复相结合的方案恢复方案
数据库的逻辑恢复分为表恢复用户恢复完全恢复三种模式
表模式
此方式将根据按照表模式备份的数据进行恢复
A 恢复备份数据的全部内容
若从本地文件恢复使用如下命令
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer= feedback= ignore=n volsize=
file=exp_icdmain_cs
d_yyyymmdddmp
log=imp_icdmain_csd_yyyymmddlog
若从磁带设备恢复使用如下命令
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer= feedback= ignore=n volsize= file=/dev/rmt
log=imp_icdmain_csd_yyyymmddlog
B 恢复备份数据中的指定表
若从本地文件恢复使用如下命令
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer= feedback= ignore=n volsize=
file=exp_icdmain_cs
d_yyyymmdddmp
log=imp_icdmain_csd_yyyymmddlog
tables=commoninformationserviceinfo
若从磁带设备恢复使用如下命令
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer= feedback= ignore=n volsize=
file=/dev/rmt
log=imp_icdmain_csd_yyyymmddlog
tables=commoninformationserviceinfo
用户模式
此方式将根据按照用户模式备份的数据进行恢复
A 恢复备份数据的全部内容
若从本地文件恢复使用如下命令
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer= feedback= ignore=n volsize=
file=exp_icdmain_yy
yymmdddmp
log=imp_icdmain_yyyymmddlog
若从磁带设备恢复使用如下命令
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer= feedback= ignore=n volsize= file=/dev/rmt
log=imp_icdmain_yyyymmddlog
B 恢复备份数据中的指定表
若从本地文件恢复使用如下命令
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer= feedback= ignore=n volsize=
file=exp_icdmain_yy
yymmdddmp
log=imp_icdmain_yyyymmddlog
tables=commoninformationserviceinfo
若从磁带设备恢复使用如下命令
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer= feedback= ignore=n volsize= file=/dev/rmt
log=imp_icdmain_yyyymmddlog
tables=commoninformationservicei