Oracle Export方式数据库备份和恢复(一)

1、  备份策略:
智能网采用 Export 方式进行数据库备份
Export (逻辑备份)
只是简单的备份方法,可按数据库中某个表、某个用户或整个数据库来导出,并且支持全部、累计、增量三种方式,使用这种方法数据库必须处于打开状态,而且如果数据库不是在 restrict 状态将不能保证导出数据的一致性。
 
备份策略如下(可配置):
(1)       每天均做全库备份,备份完删除当天的 archive 日志。
(2)       可以通过配置文件配置是否需要备份 lhdscharge/lhdschargebak 用户。
具体的备份脚本( expdb.sh )执行时间由操作系统的 crontab 功能调度,必要时也可以手工来执行该脚本。
说明:
1、                     当配置文件(放在 /home/lhds10/etc/orabkup.ini )不存在时,以全库方式备份。
2、                     当配置文件(放在 /home/lhds10/etc/orabup.ini )存在时,并且 LHDSCHARGE=0 时,则备份除 LHDSCHARGE LHDSCHARGEBAK 用户外的所有数据。
一个完整的样例文件如下:
$/home/lhds10/etc/orabkup.ini
#ORACLE  BACKUP  CONFGURATION FILE [OWNER]
         LHDSCHARGE=1 # 1 FULL BACKUP
                       # 0 backup all owers except lhdscharge and lhdschargebak.
一般情况下,请不要设置这等参数,保持 LHDSCHARGE 1 ,另外,如果不存在该配置文件,也执行整库备份。
2、  备份和恢复:
2.1 数据库备份
可以通过任务执行该脚本,也可以手工执行 expdb.sh ,脚本执行日志为 /lhdsdata/lhdsbak/lhdsdb1.log ,数据库 exp 命令执行返回则在 /lhdsdata/lhdsbak/lhdsdb[1-2].log 日志中(以 1 结尾的文件为较新的一个)。导出的文件则以 /lhdsdata/lhdsbak/lhdsdb[1-2].dmp 命令(以 1 结尾的文件为较新的一个备份)。
2.2 数据库恢复:
     由于使用逻辑备份方式,所以备份的是某个时间点的数据,这样在进行数据恢复时,也只能恢复到备时的时间点,下面针对以下场景分别讲述数据库恢复。
 
2.2.1 场景 1 :在线时丢失表、表中数据、用户及用户对象。
       Online 情况下,丢失表、表中数据、用户及用户对象时,可以通过备份数据进行恢复。
操作实例:
 
a)  如果表或表中的数据全部丢失:
lhds10 或者 Oracle 执行:
$imp logname/password fromuser = username   touser = username  tables=\(tablename1,tablename2…\) file = expfilename  ignore = y.
注: fromuser touser 后均填上这个被破坏的表属于的用户名。
logname/password 填上的数据库登录用户、密码,例如: system/manager
被破坏的表名在 tables 的括弧中全部列出,以逗号分隔。
Expfilename 填上 exp 方式备份出的文件名,如 /lhdsdata/lhdsbak/lhdsdb1.dmp
 
b)  如果表中的部分数据丢失
先清空表中剩余的数据(使用 truncate 语句),然后按操作实例: a )恢复。
 
c)  如果用户丢失或该用户的所有对象和数据丢失
如果用户丢失,先重新创建该用户,例如 lhdssys 用户丢失,先创建 lhdssys 用户,并设置该用户原先设定的密码、缺省表空间、临时表空间和 dba 的权限。再以 lhds10 Oracle 执行:
$imp  logname/password   fromuser = username    touser = username  file = expfilename  ignore = y
注: fromuser touser 后均填上该用户名
logname/password 填上的数据库登录用户、密码,例如: system/manager
Expfilename 填上 exp 方式备份出的文件名,如 /lhdsdata/lhdsbak/lhdsdb1.dmp
 
d)  如果用户存在,该用户的部分对象和数据丢失
如果可以列出丢失数据的表,可以先将这些表 drop 掉,然后再按照操作实例: a )恢复。如果不能确切知道丢失了那些表的那些数据,可以先将该用户删除(包括对象),然后按操作实例: c )进行恢复。
 
e)  如果非系统用户(如 LH 打头的用户)所对应的表空间、数据文件被损坏
先通过 dba studio 等工具记录下所有使用该表空间上的用户,然后先使用如下语句将被损坏的表空间(或涉及到数据文件损坏的表空间) offline 现假设 lhds_data 表空间(或其数据文件)被损坏,以 lhds10 Oracle 执行:
$sqlplus /nolog
SQL>connect internal
SQL>alter tablespace lhds_data offline immediate;
SQL>drop tablespace lhds_data including contents;
SQL>create tablespace lhds_data datafile ……
(创建表空间参数,以及数据文件的路径和大小,可以参照以前的设置)
            创建表空间成功后,通过操作实例: c )一一恢复属于该表空间的各用户对象。
 
f)   如果系统用户所对应的表空间、数据文件被损坏
Oracle 用户执行以下命令强制关闭数据库:
SQL>connect internal
SQL>shutdown abort
删除 /lhdsdata/oracle 目录下所有文件和目录
$rm �Crf/lhdsdata/oracle/*
Oracle 用户执行 crdb.sh (在 /home/oracle 目录下),再执行以命令进行数据全部恢复
$imp logname/password  full = y  file = expfilename  log = imp.log
注: logname/password 填上数据库登录用户、密码,例如: system/manager
Expfilename 填上 exp 方式备份出的文件名,如 /lhdsdata/lhdsbak/lhdsdb1.dmp
 
注:文章中的“lhds”是一个自命名,无其它意思。
待续!

你可能感兴趣的:(oracle,数据恢复,数据库备份,Export,休闲)