基于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左右。如下图所示:
1.5 ArcSDE的配置完成了oracle数据库的迁移后,下一步工作是配置ArcSDE了,因为数据库中,已经存在了sde用户,并且sde用户下面已经有了数据,则在arcasd配置时,只需要建立sde服务即可。 具体操作: 1、 arcsde post时,采用自定义方式。
2、 在post时,只选择建立sde服务。
3、 录入完服务信息时,下一步,直到完成,如果发现服务没有成功启动,需要重启一次机器。
|