也谈ORACLE备份与恢复
经常听到有人说,某数据库备份方法好,某备份方法不好,或者说现在都流行用rman来备份了,逻辑备份已经过时了,冷备份就更不值一提了,其实数据库的备份从来没有什么好坏之分、没有过时之说,合适才是最重要的,自己好才是真的好。各种方法各有长短,谁也代替不了谁,只有根据实际情况搭配使用,才能发挥最大的作用,否则只能是东施效颦。
1. oracle的备份,包括noarchivelog模式的备份(冷备份)、archivelog模式的备份(热备份、rman备份)、逻辑备份(不分模式)。
1.1. 冷备份:
-- 1)关闭数据库
shutdown;
-- 2)备份数据文件、控制文件、重做日志文件
-- A、 查找备份文件的位置
SELECT * FROM V$DATAFILE; --查数据文件
select * from v$controlfile; --查控制文件
select * from v$logfile; --查日志文件
-- B、 备份数据文件、控制文件、重做日志文件
$ copy D:\oracle\oradata\ora9\*.dbf d:\bak\*.*;
$ copy D:\oracle\oradata\ora9\*.ctl d:\bak\*.*;
$ copy D:\oracle\oradata\ora9\*.log d:\bak\*.*;
1.2. 热备份:
-- 1)查询备份的数据文件与哪一个表空间有关
SELECT V$TABLESPACE.NAME,V$DATAFILE.NAME
FROM V$TABLESPACE JOIN V$DATAFILE USING(TS#);
-- 2)备份数据文件
alter tablespace 表空间 BEGIN BACKUP;
$ COPY 数据文件 存放路径
ALTER TABLESPACE 表空间 END BACKUP;
-- 3)查询是否还有表空间处于备份模式
SELECT * FROM V$BACKUP; --STATUS不是ACTIVE即可以
SELECT V$TABLESPACE.NAME,V$BACKUP.STATUS,V$DATAFILE.NAME
FROM V$TABLESPACE JOIN V$DATAFILE USING (TS#) JOIN V$BACKUP USING (FILE#);
-- 4)备份控制文件
ALTER DATABASE BACKUP CONTROLFILE TO '目标路径及文件名';
1.3. rman备份:
-- 1)一个简单的rman全库备份:
> rman nocatalog target "sys/sys"
RMAN> restore controlfile from autobackup;
RMAN> configure controlfile autobackup on;
RMAN> backup database;
-- 2)备份数据文件、控制文件、归档日志
RMAN> BACKUP DATAFILE 数据文件名;
RMAN> BACKUP CURRENT CONTROLFILE;
RMAN> BACKUP ARCHIVELOG ALL;
-- 3)备份控制文件trace
SQL> alter session set tracefile_identifier=system ;
SQL> alter database backup controlfile to trace;
SQL> alter database backup controlfile to 'd:\temp\controlfile.bak';
-- 4)备份表空间
RMAN> backup tablespace 表空间名;
-- rman备份比较复杂,只举些简单的例子。
1.4. 逻辑备份
-- 1)数据库方式(导出用户要具有exp_full_database权限)
exp scott/tiger@ora9 full=y file="D:\full.dmp"
-- 2)用户方式
exp userid=scott/tiger@ora9 owner=scott file=d:\scott.dmp log=d:\scott.log
-- 3)表方式
exp scott/tiger@ora9 tables=(emp,dept) file="d:\emp.dmp"
2. oracle的恢复(简单举例):
2.1 冷备份的恢复,
1). STARTUP MOUNT;
2). ALTER DATABASE DATAFILE 数据文件 OFFLINE DROP;
3). ALTER DATABASE OPEN;
2.2 热备份恢复:
1). STARTUP MOUNT;
2). ALTER DATABASE DATAFILE 数据文件 OFFLINE; -- //system01.dbf不能设置未OFFLINE状态
3). ALTER DATABASE OPEN;
2.3 rman备份恢复:
-- 1) 使用rman恢复归档数据库:
rman target /
rman> startup mount
rman> restore database;
rman> recover database;
rman> alter database open;
--2) 使用rman恢复表空间:
rman> restore tablespace
rman> recover tablespace
rman>
run{
sql " alter tablespace users offline immediate";
相关新闻>>
- 发表评论
-
- 最新评论 更多>>