分类: 服务器与存储
2008-06-14 13:43:22
把备份的ControlFile.bak文件用Ftp上传到新数据库服务器中Oracle实例的各个镜像路径下,并按初始化参数文件initSID.ora中的该项的位置和名称命名。
control_files = ("/home/oracle/app/oracle/oradata/ora816/control01.ctl", "/home/oracle/app/oracle/oradata/ora816/control02.ctl","/home/oracle/app/oracle/oradata/ora816/control03.ctl")
其路径如有变动,在初始化参数文件initSID.ora中修改如上内容的路径和名称,使其实际路径与该参数的路径一致。
6. 恢复归档日志文件
把数据库备份后的归档日志用Ftp上传到新数据库服务器的相同路径下。路径如有变动可以根据初始化参数文件initSID.ora中如下位置进行修改,使其实际路径与该参数的路径一致。
log_archive_dest_1 = "location=/home/oracle/app/oracle/admin/ora816/arch"
7. 恢复数据库
经过以上6个步骤,把所有的备份文件已经上传到了新数据库服务器中。下面开始根据这些文件恢复并启动数据库,先在操作系统的提示符下做如下操作:
$svrmgrl
SVRMGR>connect internal
SVRMGR>startup mount
<1> 创建口令文件
如果原来的数据库配置了口令文件,并且在mount数据库时报如下错误:
ORA-01990: error opening password file '/home/oracle/app/oracle/product/8.1.6/dbs/orapw'
可以到/home/oracle/app/oracle/product/8.1.6/dbs/路径下,用以下命令创建口令文件:
orapwd
其用法如下:
Usage: orapwd file= password= entries=
where
file - name of password file (mand),(口令文件的命名方式为:orapwSID)
password - password for SYS and INTERNAL (mand),
entries - maximum number of distinct DBA and OPERs (opt),
There are no spaces around the equal-to (=) character.
例如: orapwd file=orapwora816 password=manager
然后重新执行如下语句mount数据库:
SVRMGR>startup mount。
<2> 修改数据库文件的路径
如果在上述的步骤3中修改了恢复的数据库文件的路径,可以用如下语句对数据库文件重新命名 :
alter database rename file 'old_file' to 'new_file';
如把原来路径/home/oracle/app/oracle/oradata/ora816下的文件system01.dbf改到了/u21/oracle/app/oracle/oradata/ora816下:
SVRMGR>alter database rename file
'/home/oracle/app/oracle/oradata/ora816/system01.dbf'
to '/u21/oracle/app/oracle/oradata/ora816/system01.dbf';
按照上面的方法把所有修改路径的数据库文件重新命名。
<3> 根据控制文件和归档日志文件恢复数据库
下面开始用控制文件和归档日志文件恢复数据库:
SVRMGR>recover database using backup controlfile until cancel;
出现如下提示:
ORA-00279: change 50971 generated at 08/23/2002 09:21:27 needed for thread 1
ORA-00289: suggestion: /home/oracle/app/oracle/admin/ora8/arch/arch_1_399.arc
ORA-00280: change 50971 for thread 1 is in sequence #399
Specify log: {=suggested | filename | AUTO | CANCEL}输入:
auto
如果有如下提示,则表示成功。
ORA-00279: change 51007 generated at 08/23/2002 11:23:13 needed for thread 1
ORA-00289: suggestion: /home/oracle/app/oracle/admin/ora8/arch/arch_1_400.arc
ORA-00280: change 51007 for thread 1 is in sequence #400
ORA-00278: log file '/home/oracle/app/oracle/admin/ora8/arch/arch_1_399.arc' noy
Log applied.
意外处理:如果其它提示可能是需要的日志文件不存在,检查ORA-00289中该文件是否存在。
直到出现如下提示:
ORA-00279: change 51011 generated at 08/23/2002 11:23:45 needed for thread 1
ORA-00289: suggestion: /home/oracle/app/oracle/admin/ora8/arch/arch_1_401.arc
ORA-00280: change 51011 for thread 1 is in sequence #401
ORA-00278: log file '/home/oracle/app/oracle/admin/ora8/arch/arch_1_400.arc' noy
ORA-00308: cannot open archived log '/home/oracle/app/oracle/admin/ora8/arch
/arch_1_401.arc'
ORA-27037: unable to obtain file status
Intel SVR4 UNIX Error: 2: No such file or directory
Additional information: 3
<4> 重置日志
SVRMGR>alter database open resetlogs;
意外处理:如果提示创建日志的路径不存在,按提示路径创建目录。然后再重置日志。
<5> 重启数据库,完成恢复
SVRMGR>shutdown immediate
SVRMGR>startup
ORACLE instance started.
Total System Global Area 123437040 bytes
Fixed Size 69616 bytes
Variable Size 106418176 bytes
Database Buffers 16777216 bytes
Redo Buffers 172032 bytes
Database mounted.
Database opened.
数据库正常打开,数据库重建恢复成功。
2. Oracle9i RMAN 备份及恢复步骤
在这里没有讨论多么深入的RMAN技术,也没有告诉大家这样去编写备份脚本,这并不是我的初衷,我只想把我会的写出来,和大家一起学习,一起进步,谢谢。
1、切换服务器归档模式,如果已经是归档模式可跳过此步:
%sqlplus /nolog (启动sqlplus)
SQL> conn / as sysdba (以DBA身份连接数据库)
SQL> shutdown immediate; (立即关闭数据库)
SQL> startup mount (启动实例并加载数据库,但不打开)
SQL> alter database archivelog; (更改数据库为归档模式)
SQL> alter database open; (打开数据库)
SQL> alter system archive log start; (启用自动归档)
SQL> exit (退出)
2、连接:
%rman target=rman/rman@mydb (启动恢复管理器)
3、基本设置:
RMAN> configure default device type to disk; (设置默认的备份设备为磁盘)
RMAN> configure device type disk parallelism 2; (设置备份的并行级别,通道数)
RMAN> configure channel 1 device type disk fromat '/backup1/backup_%U'; (设置备份的文件格式,只适用于磁盘设备)
RMAN> configure channel 2 device type disk fromat '/backup2/backup_%U'; (设置备份的文件格式,只适用于磁盘设备)
RMAN> configure controlfile autobackup on; (打开控制文件与服务器参数文件的自动备份)
RMAN> configure controlfile autobackup format for device type disk to '/backup1/ctl_%F'; (设置控制文件与服务器参数文件自动备份的文件格式)
4、查看所有设置:
RMAN> show all
5、查看数据库方案报表:
RMAN> report schema;
6、备份全库:
RMAN> backup database plus archivelog delete input; (备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志)
7、备份表空间:
RMAN> backup tablespace system plus archivelog delete input; (备份指定表空间及归档的重做日志,并删除旧的归档日志)
8、备份归档日志:
RMAN> backup archivelog all delete input;
9、复制数据文件:
RMAN> copy datafile 1 to '/oracle/dbs/system.copy';
10、查看备份和文件复本:
RMAN> list backup;
11、验证备份:
RMAN> validate backupset 3;
12、从自动备份中恢复服务器参数文件:
RMAN> shutdown immediate; (立即关闭数据库)
RMAN> startup nomount; (启动实例)
RMAN> restore spfile to pfile '/backup1/mydb.ora' from autobackup; (从自动备份中恢复服务器参数文件)
13、从自动备份中恢复控制文件:
RMAN> shutdown immediate; (立即关闭数据库)
RMAN> startup nomount; (启动实例)
RMAN> restore controlfile to '/backup1' from autobackup; (从自动备份中恢复控制文件)
13、恢复和复原全数据库:
RMAN> shutdown immediate; (立即关闭数据库)
RMAN> exit (退出)
%mv /oracle/dbs/tbs_12.f /oracle/dbs/tbs_12.bak (将数据文件重命名)
%mv /oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak (将数据文件重命名)
%mv /oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak (将数据文件重命名)
%mv /oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak (将数据文件重命名)
%rman target=rman/rman@mydb (启动恢复管理器)
RMAN> startup pfile=/oracle/admin/mydb/pfile/initmydb.ora (指定初始化参数文件启动数据库)
RMAN> restore database; (还原数据库)
RMAN> recover database; (恢复数据库)
RMAN> alter database open; (打开数据库)
14、恢复和复原表空间:
RMAN> sql 'alter tablespace users offline immediate'; (将表空间脱机)
RMAN> exit (退出恢复管理器)
%mv /oracle/dbs/users01.dbf /oracle/dbs/users01.bak (将表空间重命名)
%rman target=rman/rman@mydb (启动恢复管理器)
RMAN> restore tablespace users; (还原表空间)
RMAN> recover tablespace users; (恢复表空间)
RMAN> sql 'alter tablespace users online'; (将表空间联机)
15、增量备份与恢复:
第一天的增量基本备份:
RMAN> backup incremental level=0 database plus archivelog delete input;
第二天的增量差异备份:
RMAN> backup incremental level=2 database plus archivelog delete input;
第三天的增量差异备份:
RMAN> backup incremental level=2 database plus archivelog delete input;
第四天的增量差异备份:
RMAN> backup incremental level=1 database plus archivelog delete input;
第五天的增量差异备份:
RMAN> backup incremental level=2 database plus archivelog delete input;
第六天的增量差异备份:
RMAN> backup incremental level=2 database plus archivelog delete input;
第七天的增量差异备份:
RMAN> backup incremental level=0 database plus archivelog delete input;
增量恢复:
RMAN> shutdown immediate;
RMAN> exit
%mv /oracle/dbs/tbs_12.f /oracle/dbs/tbs_12.bak
%mv /oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak
%mv /oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak
%mv /oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak
%rman target=rman/rman@mydb
RMAN> startup pfile=/oracle/admin/mydb/pfile/initmydb.ora
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open;