关闭

采用冷备份的方式快速迁移空间数据库(noachivelog模式)

767人阅读 评论(0) 收藏 举报
分类:
基于oracle的空间数据库,如果快速的实现从一台服务器迁移到另外一台服务器上面?笔者经过实验,认为冷备份是一种很好的办法,该方法适用于数据库处于非归档模式下面。

场景说明:oracle数据库为10.2 ,图形和属性数据约为10GB。GIS空间数据引擎为ArcSDE。要求快速从源服务器迁移到目标服务器上面,整个迁移时间要求在30分钟内完成。

1.1数据备份

1、              到源服务器上面,获取数据库信息,了解数据文件 、重做重做日志文件位置 、控制文件的位置,用sys用户,进入PLSQL,执行如下查询,保留好查询结果:

select name from  v$datafile ;

select * from v$logfile ;

select * from v$controlfile ;

 

2、          检查服务器是否设定了快速闪回区,如果设定,则有闪回区大小和路径,则在恢复时,在目标数据库上面需要设定相同的路径。

 

3、              然后停止源服务器上面的oracle服务;根据第一个步骤,将datafile、logfile、control备份到一个文件夹中。

 

4、              然后备份参数文件(pfile) 、服务器参数文件(spfile)、密码文件。备份位置一般为 $/oracle/product/10.2.0/db_1/database 下面。参数文件在$/oracle/product/10.2.0/db_1/ database下面,如果找不到参数文件,则表明数据库用spfile启动,可以不需要备份。

参数文件命名为:init+oracle实例名.ora;

服务器参数文件命名为:SPFILE+oracle实例名.ora;

密码文件命名为:PWD+ oracle实例名.ora;

 

1.2迁移工作

 

1、         然后到目标服务器上面安装oracle软件,创建相同名称的oracle实例(名称必须相同)。数据文件存放到在相同的盘区。

2、         把前面数据备份的 数据文件 、重做日志文件、控制文件覆盖 新安装的oracle位置。

 

3、         初始化参数文件、服务器参数文件覆盖、密码文件覆盖。

 

4、         重启动oracle服务即可,可能会提示监听错误,反复在windwos服务管理下面启动几次监听,或者重启一下机器。

或者进入sqlplus 如:

Sqlplus / as sysdba

运行:shutdown immediate ;

运行:startup open ;如果提示数据库打开,表示已经恢复成功,如果没有打开,则会有相应的错误提示。

1.3迁移工作中引发的一个问题

上面的恢复都是要求数据文件在同一目录下面,这样限制太死,假如原始数据存放在D盘下面,而目标数据库服务器中没有D盘,怎么办呢。其实还是有办法的。

下面分2种情况详细说明,一种是当源和目标数据库的控制文件位置相同,部分数据文件位置不相同。一种是源数据库和目标数据库中控制文件、数据文件位置均不相同的情况,尤其是存放盘符不同。

1.3.1控制文件源和目标数据库位置相同

方法:参数文件和密码文件、数据文件只需要直接覆盖,控制文件重建,然后再重置临时表空间位置。

举例:如源数据库和目标数据库的控制文件存放在D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/下面,原始数据文件test.ora存放在D:/tablespace目录下面,而目标数据库要求存放在D:/tabspa_new下面,怎么实行迁移,具体如下所示:

1、先查询源始库的数据文件位置,如下图所示:

 

2、从源数据库中备份数据文件和重做重做日志文件(这里不需要备份控制文件),覆盖到目标库的位置。

3、在新的实例上面,采用nomount的方式启动实例,数据库不做装载,然后建立控制文件,这里记得修改数据文件新的位置,将test.ora存放到D:/tabspa_new文件夹下面。

 

 

4、执行一次数据恢复,保证控制文件和数据文件的一致性,然后就可以打开数据库,打开数据库后,还需要重置临时表空间位置。具体操作如下所示:

 

5、做完上述操作后,数据库则迁移完成,执行查询,可以返回对应的结果。

 

1.3.1控制文件源和目标数据库位置不相同

方法:用源数据库的密码文件覆盖目标数据库中的密码文件,服务器参数文件spfile不需要理会,将目标数据库用参数文件pfile启动。然后重建控制文件,再重置临时表空间位置。

举例:假如源数据库在实例建在D盘,目标数据库要求迁移到E盘。

1、原始数据库的控制文件和数据文件位置:

 

 

2、停止源数据库的服务,然后备份数据文件、重做重做日志文件和密码文件。

3、在目标数据库上面创建新的oracle实例,新实例的数据文件、重做重做日志文件、密码文件位置为E盘oracle_data目录下面。启动实例后,进入sqlplus,根据服务器参数文件spfile创建一份参数化文件(pfile)。Create pfile from spfile,文件创建完后,默认位置为$/oracle/product/10.2.0/db_1/database下面。

 

 

4、然后关闭oracle实例,将$/oracle/product/10.2.0/db_1/database下面的SPfile重命名(注意是spfile,不是pfile)。同时将步骤 2备份的数据文件、重做日志文件、密码文件覆盖到目标数据库相应位置。

5、以nomount方式启动数据库,然后重建控制文件。

 

 

6、重建控制文件后执行一次恢复,如果弹出oracle 264错误,表示数据库是一致的,不需要恢复,打开数据库,如果打开成功表示数据迁移成功。然后在把临时表空间重建一下,如下图所示:

 

 

1.4控制文件重建脚本

控制文件重建时,脚本比较麻烦,一不小心敲错一个字符就得重来,其实只要把控制文件备份成文本文件,然后用记事本打开修改里面的内容即可。命令为alter database backup controlfile to trace 。备份好的文本文件一般位于$:/oracle/product/10.2.0/admin/orcl/udump下面,文件大小一般为10KB左右。如下图所示:

 


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:675819次
    • 积分:7930
    • 等级:
    • 排名:第2739名
    • 原创:74篇
    • 转载:340篇
    • 译文:0篇
    • 评论:14条