noarchivelog模式:只能关闭数据库再做备份。只能做冷备不能热备。
冷备全过程
冷备脚本:
- set feedback off heading off verify off trimspool off
-
set pagesize 0 linesize 200
-
define dir = '/tmp/wb'
-
define cmdfile = '/tmp/coldbackup.sql'
-
spool &cmdfile
-
select '! cp ' || name || ' &dir' from v$datafile order by 1;
-
select '! cp ' || member || ' &dir' from v$logfile order by 1;
-
select '! cp ' || name || ' &dir' from v$controlfile order by 1;
-
select '! cp ' || name || ' &dir' from v$tempfile order by 1;
-
spool off;
-
shutdown immediate;
-
@&cmdfile
-
startup;
archivelog模式:可以关闭数据库做冷备,也可以在数据运行的情况下做备份。
1,日志归档命令:
- alter system archive log current
- alter system switch logfile
2,查看归档日志路径
- show parameter db_recovery_file_dest
热备:数据库打开的状态下
优 点:数据库在线可用;最好在访问量比较小的情况开展
热备前提:数据库必须处在archivelog下。因为热备过程中不断有数据写入,索引备份时必须备份归档日志。
热备选项:表空间备份(常用);数据文件备份。
如果要热备整个数据库那么就一个一个表空间的备份。
ps:热备完表空间最好把归档日志跟联机重做日志也备份还有控制文件
备份到一个目录下。
命令参数:
实例:
1,begin backup工作原理:
1> 表空间被checkpoint:表空间在内存sga buffercache里对应的脏数据都会被可靠的写到表空间的数据文件上。
2> datafile
headers,scn号冻结。
3> full image将被拷贝到redo
log中
2,end backup
整个时间段要尽可能的短,一旦拷走立即end backup,防止redo log增量过大性能下降。
3,
一口气把所有表空间置于backup模式
- alter database begin backup;
cp 数据
- alter database end backup;
(不推荐使用此命令,建议使用串行执行一个表空间一个表空间备份)。
因为会产生大量数据文件在redo文件中,使得数据库性能下降。
4,v$backup 动态性能视图
实例:
- select file_id,file_name,tablespace_name from dba_data_files order by 1;
- alter tablespace test1 begin backup;
5,如果数据库处于begin backup模式下时,数据库突然crash掉了怎么办?
步骤如下:
- alter tablespace users begin backup;
!cp xxx 拷贝的时候模拟断电: 这时拷贝的文件是失效的,下次进来需要重新拷贝。 为使得数据库能正常启动则需要结束backup模式根据v$backup查询。
- alter database datafile 4 end backup;或者 alter database end backup;
最后
总结:热备两个层次做:表空间一级备份跟数据文件。
6,只读表空间备份
(比begin backup要强,read only不但能冻结scn号,还不让修改),但同时control文件也会被修改,所以要备份控制文件。
- alter tablespace test1 read only;
!cp 考走。
- alter tablespace test1 read write;
当tablespace被处于read only时控制文件就会被修改,控制文件表明数据库结构的整个数据库重大的结构信息都放在控制文件里
7,热备控制文件(冷备直接考走):
(二进制文件拷贝走) 大小与实际control文件大小一致。只需备份一个即可。
- alter database backup controlfile to '/tmp/con/c1.ctl';
还有一个命令生成trc文件:
- alter database backup controlfile to trace as '/tmp/con/c2.sql';
什么时候备份控制文件?只要控制文件发生变化。
8,备份初始化文件
- SQL> startup pfile='/oracle/product/10.2.0/db_1/dbs/initorcl.ora'
- SQL> create spfile from pfile='/oracle/product/10.2.0/db_1/dbs/initorcl.ora'
阅读(10714) | 评论(0) | 转发(0) |