谈ORACLE备份与恢复
经常听到有人说,某数据库备份方法好,某备份方法不好,或者说现在都流行用rman 来备份了,逻辑备份已经过时了,冷备份就更不值一提了,其实数据库的备份从来没有什么好坏之分、没有过时之说,合适才是最重要的,自己好才是真的好.各种方法各有长短,谁也代替不了谁,只有根据实际情况搭配使用,才能发挥最大的作用,否则只能是东施效颦.
1 . o r ac 1 e的备份,包括no a r chi v e I og模式的备份(冷备份)、arch i velog模式的备份(热备份、rman备份)、逻辑备份(不分模式).
1.1.冷备份:
~ 1)关闭数据库
s hu t d o wn;
-一2)备份数据文件、控制文件、重做日志文件
一-A、查找备份文件的位置
SELEC T * FROM VSDATAFIL E ; —査数据文件
s el e ct * f r om v$cont r o 1 f il e ; —查控制文件
s e le c t * f r om vSlogf i 1 e; —査日志文件
~ B、备份数据文件、控制文件、重做日志文件
$ copy D:\oracle\o r a data\or a 9 \ *. dbf d: \ b a k \ *. *;
$ cop y D:\ora cle \ oradat a \ora9 \ *・ c t 1 d : \ b a k\*・ *:
$ copy D:\oracle \o r adata\o r a9\*・ I og d:\bak\*・ *;
1.2.热备份:
~ 1)查询备份的数据文件与哪一个表空间有关
SELECT V$TAF3LESPACE ・ NAME, VS DATAFILE. NAME
FROM V$TA B LES P ACE J OIN V$DATAF I LE USING(TS#);
~ 2)备份数据文件
a 1 t er tablespace 表空间BEGIN BACKUP;
$ COPY数据文件存放路径
ALTER TABLESP ACE 表空间END BACKUP ;
―3)查询是否还有表空间处于备份模式
SELECT * F ROM VSBAC KUP; —STATUS 不是ACTIV E 即可以
SELECT , V$BAC KUP・STA TUS,V$ D ATAFILE. NAME
FROM V$TABLESPACE JOIN VSDATAFILE USING (TS#) J OIN V$BACKUP USING (FILE#):
~ 4)备份控制文件
ALTER DATABASE BACKUP CONTROLF I LE TO '目标路径及文件名':
1・3・r m a n备份:
-- 1)一个简单的rman全库备份:
> rman n o c a talog t a rget " s y s / s ys"
R MAN> res t o re c ontrolf i 1 e from au t obac k u p ;
RM A N> c onf i gu r e con t rolfile a utobackup on;
RMAN> b a c ku p databas e ;
~ 2)备份数据文件、控制文件、归档日志
RMAN> BACKUP DATAFILE 数据文件名;
RMAN> BACKU P CURRE N T CONTRO LFILE;
RMAN> BACKUP ARCHIV E LOG ALL;
—- 3 )备份控制文件trace
SQL> a 1 t er se s sio n se t t race file _ident i f i e r=system ;
SQ L> a Iter da t abase b a cku p controlfil e t o t r ace;
SQL> alt e r d a tabase bac k u p co n t r o lfile t o ' d: \ t em p \ c on trolfile・ bak';
~ 4)备份表空间
RMAN> bac k up tab I e s pace 表空间名;
-rman备份比较复杂,只举些简单的例子.
1.4.逻辑备份
-- 1)数据库方式(导岀用户要具有exp_ f ull_datab a se权限)
exp scot t i ti g e r@o「a 9
f ul 1 =y f i 1 e ="D: \f u I 1. d mp〃
~ 2)用户方式
e xp us 已:r i d 二scot t / t ig e o ra 9 own e r =scott fil e =d: \ s cott .drop 1 og=d: \ s c o tt・lo g
—3)表方式
exp sc o tt / t ige 卩@o“9 t a bles= ( e mp, d ept) fil e =,z d:\emp・ dm p 〃
2. oracle的恢复(简单举例):
2.1冷备份的恢复,
1). STARTUP MOUNT;
2). ALTE R DAT AB A SE DATAFILE 数据文件OFFLIN E DROP;
3 )・ A L TER DATABAS E OPEN;
2.2热备份恢复:
1). STARTUP MOUNT;
2). ALTER DATABASE DAT AF I LE 数据文件OFFLINE; 一一/ / sys t em 0 1. dbf不能设置未OFF LI NE状态
3). AL TER DATABASE OPEN;
2. 3 rma n备份恢复:
~ 1)使用rman恢复归档数据库:
rma n t a rg e t /
rman> sta r t u p m o unt
rma n > res t ore dat a base;
rman> recover d a t abase;
rm a n> alter data b ase op e n;
—2)使用rman恢复表空间:
r man> res t ore tab 1 e s pac e
rman> recov e r tablesp a ce
rman>
run {
s ql " alter ta b lespace users o f f line immediate";
re s to r e tab 1 espa c e u s er s ;
recov er t a b 1 e s pac e u s ers;
s ql a Iter tablespace use r s onl i ne ":
}
2.4 .逻辑恢复
--1)数据库方式(导入用户要具有ex p _full_database权限)
imp s y stem/ s yst em@oralO f u 11= y f ile二"f :\full. dm p "
一2)用户方式
imp u s e r i d二scott / t iger@ora 1 0 fromus e r=sco t t t o u s er=s c ott file= d :\scott. dmp 1 og=d:\s c o t t. Io g
--3)表方式
i mp s y stem/sy s t e m@o r al 0 fromu s e r=s c o 11 to u s er 二scott file 二" f : \emp. dmp"
-一注意:导岀用户要和导入用户相同可以用上面的方法,否则用
imp sco t t/ti ger @oralO fu 1 1 =y f i 1 e二"f : \emp.dmp"
3.oracle备份与恢复方法的选择:
1).对于一些小系统、小数据虽:、没有在线要求的数据库,采用冷备份,简单方便、可靠(所有文件时间点一致),但如果是这类系统个人觉得使用oracle就是一种浪费,学习除外.
2).对于7X24小时的大系统、帐营支撑系统、客服系统的数据库,使用归档模式运行,采用全库备份与逻借备份相结合的方式.
3).对于经营分析系统、BI系统、査询系统等数据库,可采用逻辑备份与表空间备份相结合的方式,对变化数据进行增量备份.
4).对于一些字典数据库、静态数据较多的数据库,可采用逻辑备份,左期备份相关重要数据.
对于上而提到的方法,只是个表面的东西而已,要想保证数据库高效、空全、稳圧的运行, 必须要有完整的、切实可行的数据库运行管理制度,并且严格执行实施,否则再好的方法都是水中月、镜中花.。