oracle数据库冷备份迁移的步骤
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
冷备是一种常用的数据库备份方式,它是在数据库关闭的情况下利用操作系统的拷贝命令备份完整的数据库文件集。
冷备能保证在备份的时间点上数据库的完整性和一致性。假如开启了归档模式,并且能保证在最后一次冷备后的所有归档日志的完整性,
那么我们就能够将数据库恢复到冷备后的任何一个时间点上。下面将详细描述冷备的步骤:
1 收集数据库文件集信息
一个完整的数据库文件集包括:数据库启动参数文件,控制文件,数据文件,日志文件。可以通过下面的方式来得到文件的位置和
名称。
(1) 参数文件
9i以下版本 $ORACLE_BASEADMIN$ORACLE_SIDPFILEINIT.ORA
9i或以上版本 $ORACLE_HOMEDATABASEINIT[$ORACLE_SID].ORA 或者 $ORACLE_HOMEDATABASEspfile[$ORACLE_SID].ORA
9i或以上版本需要一份pfile文件(就是init[$ORACLE_SID].ora),因为spfile文件是不能直接用编辑器修改的;
(2) 控制文件
sql> show parameter control_files
(3) 数据文件
9i以下版本
sql> select file_name from dba_data_files;
9i或以上版本
sql> select file_name from dba_data_files;
select file_name from dba_temp_files;
(4) 日志文件
sql> select member from v$logfile;
2 关闭数据库
sqlplus user/pwd@link as sysdba
sql>shutdown immediate -- 必须保证数据库正常的关闭
3 复制文件集
4 在新的机器上进行恢复
(1) 安装数据库,必须保证和源数据库版本一致,不创建数据库
(2) 创建一个数据库服务,其中sid 要和源数据库保持一致
> oradim -new -sid $ORACLE_SID -startmode m
(3) 创建监听(可以用net manager ) ,并启动,监听中需指明oracle sid
(4) 将启动参数文件放入 $ORACLE_HOMEDATABASE下 ,9i 以下版本放在 $ORACLE_BASEadmin$ORACLE_SIDpfile
修改参数文件中的control_files 到控制文件所在的位置
修改 参数文件中所有需指明路径的参数,修改到你希望的系统位置,并保证指定的路径下有该文件或者文件夹的存在.
(5) 创建本地密码验证文件
> cd $ORACLE_HOMEdatabase
> orapwd file=pwd[$ORACLE_SID].ora password=sys entries=10
(6) 创建连接到本地库的连接串
(7) 启动数据库
(1) 启动数据库到mount 状态
> sqlplus /nolog
sql> connect sys/sys@link as sysdba -- link为创建的连接串
sql> startup mount
(2) 如果源数据库中数据文件所在的路径和当前数据库中数据文件所在的路径不同,需修改conctol file中指定数据文件
路径的信息(此修改不包括临时数据文件temp)
sql> alter database rename file
'old_file_dest1',
'old_file_dest2',
....
to
'new_file_dest1',
'new_file_dest2',
...
/
(3) 打开数据库
sql> alter database open;
(4) 创建新的temp文件
sql> alter tablespace temp add tempfile 'temp_file_name' size XXM;
(5) 删除旧的temp文件
sqlplus sys/sys@link as sysdba
sql> shutdown immediate
sql> startup mount
sql> alter database tempfile 'old_temp_file_name' drop;
sql> alter database open;
(6) 校验数据库的正确性
SQL> select * from v$recover_file; -- 如果没有内容就没有问题