1.联机热备份的一般步骤:
a.设置数据库为archivelog模式
startup mount;
alter system set log_archive_dest_n='location=d:oraclearchive'; --修改spfile设置归档目录
alter database archivelog ;
archive log start;
alter database open;
arvchive log list;
b.开始备份表空间(数据文件)
alter tablespace TABLESPACENAME begin backup;
/*此时属于该表空间的数据文件标志为hot-backup-in-progress,
并对所有的数据文件设置检查点
这意味着属于这些文件的任何脏缓冲区都将写入磁盘*/
ocopy DATAFILES_OF_TABLESPACE DEST_OF_BACKUP;(WINDOWS)
cp DATAFILES_OF_TABLESPACE DEST_OF_BACKUP; (UNIX)
alter tablespace TABLESPACENAME end backup;
c.日志切换
alter system switch logfile;
d.用操作系统命令备份归档日志文件
e.备份控制文件
alter database backup controlfile to trace;
或
alter database backup controlfile to 'FILESPEC';
f.备份结束
2.逻辑备份(EXP)
a.shutdown immediate
b.startup restrict open;
c.exp
d.alter system disable restricted session;
**表空间的exp
1.user 必须为 sys as sysdba,如果不用sys as sysdba可以导出但进行导入时会给出错误信息。
2.tablespace必须为readonly
2.transport_tablespace=y
3.tablespaces=TABLESPACE_NAME
限制:
a.只能传输一组独立的表空间,该表空间集内部没有对表空间外部的引用。
b.原数据库与目标数据库必须处于相同的系统环境中。(不能将unix 的oracle导到nt中)
c.必须要有相同的字符集
d.不支持快照/复制,基于函数的索引、有范围的引用、域索引
***分区级导出
允许用户导出一个表内部的一个或多个指定的分区或子分区。
*full db,user,tablespace 模式导出不支持分区级导出,只有表模式导出支持分区级导出
exp user/pwd tables=(table1:p1,table2:p1) rows=y
*BFILE的导出:导出工具只记录由BFILE列引用的名字与路径别名,必须在操作系统级创建路径并将BFIL文件
拷贝到新位置。
3.恢复管理器备份(rman)
***支持逻辑备份外的所有备份类型;可以建立的备份包括完全备份、表空间备份,数据文件备份、控制文件备份
以及归档日志文件备份。不能使用rman应用程序备份init.ora文件、口令文件、操作系统文件、联机重做日志
文件。恢复管理器支持三种类型的备份:备份集、数据文件拷贝(映像拷贝)和操作系统备份;
1.创建恢复目录:
.必须为目录模式创建一个独立的表空间;
.必须创建一个拥有目录模式的单用户,grant connect,resource,recovery_catalog_owner to XXX;
.在专门为恢复目录模式创建的表空间上,拥有恢复目录模式的用户应该被赋予unlimited quota的权限;
For Example:
connect;
create tablespace rman datafile rman size 100m ;
create user rman identified by rman default tablespace rman temporary tablespace temp quota unlimited on rman;
grant connect,resource,recovery_catalog_owner to rman;
rman catalog
create catalog tablespace 'RMAN';
2.注册数据库:
rman catalogtargetregister database;
3.同步目录:
resync catalog;
4.从恢复目录注销数据库:
**一旦注销后,就再也不能使用恢复目录含有的备份集来恢复数据库了。
.为了注销数据库,需要得到数据库的详细信息,(数据库的表示码DB_ID和数据库键值DB_KEY)
rman catalogtarget
**可以从登陆信息中得到prod的DBID
select db_key,rpad(to_char(db_id),12) "DB_ID_NUMBER" from db
where db_id=******;
**得到db_key,db_id_number
execute dbms_rcvcat.unregisterdatabase(db_key,db_id_number);
5.改变恢复目录
可以在恢复管理器中使用change对目录做适当的更改;
rman>list copy of tablespace "USERS"
*得到key
rman>change datafilecopy key delete
6.完全数据库备份:
RMAN>run {
allocate channel disk1 type disk format 'c:backup%d_backup%U';
backup database;
sql 'alter system archive log current';
sql 'alter system archive log all';
backup archivelog all delete input;
}
备份到磁带:
run {
allocate channel dev1 type 'sbt_tape';/*至少应该配置一个介质管理器,并与oracle集成
以访问磁带驱动器,
而且通道类型必须是'sbt_tape'*/
backup database;
sql 'alter system archive log current';
sql 'alter system archive log all';
}
当备份巨型数据库时,为避免i/o竞争,可以为每个磁盘驱动器分配一种类型的磁盘通道,
并指定格式化字符串;
run {
allocate channel d1 type disk format 'C:backup%d_backups%U';
allocate channel d2 type disk format 'D:backup%d_backups%U';
allocate channel d3 type disk format 'E:backup%d_backups%U';
backup database;
sql 'alter system archive log current';
sql 'alter system archive log all';
}
6.1.创建完全数据库备份的数据文件拷贝:
***在执行copy之前,通过使用report schema命令在目标数据库模式上生成一个报表,确定数据库中的
数据文件可用性。
run {
allocate channel c1 type disk;
copy datafile 1 to 'd:backupsys01.bak';
copy datafile 2 to 'd:backupusr01.bak';
copy datafile 3 to 'd:backuprbs01.bak';
copy current controlfile to 'd:backupcntrlora.bak';
}
***RMAN copy命令的输出与在操作系统级拷贝文件非常类似,但RMAN copy命令还检查物理和逻辑数据块;
不同于RMAN备份集,需要且只能由rman的recover命令来处理;
6.2.创建完全数据库备份的操作系统备份
a.使用alter tablespace .. begin backup;
b.使用操作系统工具拷贝属于该表空间的全部数据文件;
copy test01.dbf 'd:backuptest01.dbf'
c.以alter tablespace .. end backup告诉数据库已经完成数据文件拷贝
d.需要在恢复目录中注册这些拷贝。(必须确保rman连结到目标数据库)
catalog datafilecopy 'd:backuptest01.dbf';
7.表空间备份
仅当archivelog模式下才能创建表空间的备份集。(除只读或正常脱机表空间)
run {
allocate channel c1 type disk;
backup tablespace USERS
format 'aatst_%t%s.%p';
}
7.2创建表空间的数据文件拷贝
***采用这种备份方法的优点在于可以直接利用数据文件的拷贝,而不需使用restore命令进行恢复。
可以减少故障停机时间;
run {
allocate channel c1 type disk;
copy datafile 'c:oracleoradataprodtest01.dbf' to 'd:backuptest01.bak';
}
8.数据文件备份
仅当archivelog模式下才能创建表空间的备份集。(除只读或正常脱机表空间)
run {
allocate channel c1 type disk;
backup datafile 'c:oracleoradatatestusers01.dbf'
format 'aatst_%t%s.%p';
}
9.控制文件备份
9.1控制文件的备份集
run {
allocate channel c1 type disk;
backup current controlfile tag = weekly_sat_backup;
}
或
run {
allocate channel c1 type disk;
backup tablespace "USERS"
include current controlfile;
}
9.2控制文件的文件拷贝
run {
allocate channel c1 type disk;
copy current controlfile to 'd:backupcntlora.bak';
}
10.归档日志备份
如果选择备份全部归档日志文件,应该使用all选项.还可以按照时间戳创建归档日志文件的备份.
***但是oracle建议用参数log_archive_dest_n,将归档日志文件的备份保存在磁盘上.
run {
allocate channel c1 type disk;
backup archivelog low logseq 3 high logseq 10 thread 1;
}
run {
allocate channel c1 type disk;
copy archivelog 'c:oracleoradatatestarchive******.arc' to 'c:backup****.bak';
}
11.创建备份脚本:
create scrript bk_script {
allocate channel c1 type disk;
backup full filesperset 6 database fromat 'd:backup%p%d.%s';
sql 'alter system archive log current';
backup filesperset 10 archive all delete input;
}
执行脚本
run {
execute script bk_script;
}
12.测试并验证备份集合拷贝
rman 的restore validate,vlidate与change croscheck 命令能够测试备份集合映像拷贝.
当执行restore validate命令时rman执行一次恢复测试运行(恢复),但并不真正恢复文件.
12.1恢复验证整个数据库
startup mount;
rmantarget;
run {
allocate channel c1 type disk;
restore database validate;
}
12.2恢复验证控制文件
run {
allocate channel c1 type disk;
restore controlfile validate;
}
12.3恢复验证备份集与映像拷贝
数据库可以是关闭的也可以是打开的,但是打开时,必须将需要验证的表空间与数据文件脱机;
rman>list backup of tablesapce "USERS";
得到key值
run {
allocate channel c1 type disk;
validate backupset key;
}