数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

ORACLE 数据库的逻辑备份


发布日期:2023年07月14日
 
ORACLE 数据库的逻辑备份

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

上一篇:OracleFreelist和HWM原理及性能优化

下一篇:Oracle进行数据库查询的小技巧