千家信息网

Oracle 11g 数据库迁移

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,由于服务器更换,或者硬盘损坏等问题,在有些场景下,我们需要对数据库进行迁移。Oracle 数据库有多种备份方式,如果可以停机,建议最好使用冷备的方式,直接迁移数据文件,这样效率会比较高。由于两台主机都
千家信息网最后更新 2025年01月21日Oracle 11g 数据库迁移

由于服务器更换,或者硬盘损坏等问题,在有些场景下,我们需要对数据库进行迁移。

Oracle 数据库有多种备份方式,如果可以停机,建议最好使用冷备的方式,直接迁移数据文件,这样效率会比较高。

由于两台主机都是Windows server,为了方便直接使用复制文件的方式,由于特殊原因,迁移前的数据目录和迁移后的数据目录是不一致的。直接迁移数据后,启动会报如下错误:

SQL> startupORACLE 例程已经启动。Total System Global Area 1071333376 bytesFixed Size                  1334380 bytesVariable Size             301990804 bytesDatabase Buffers          754974720 bytesRedo Buffers               13033472 bytes数据库装载完毕。ORA-01157: 无法标识/锁定数据文件 1 - 请参阅 DBWR 跟踪文件ORA-01110: 数据文件 1: 'D:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSTEM01.DBF'

查看文件路径:

SQL> select name from v$controlfile;
NAME---------------------------------------------------------F:\APP\ADMINISTRATOR\ORADATA\AGRISK\CONTROL01.CTLF:\APP\ADMINISTRATOR\ORADATA\AGRISK\CONTROL02.CTLF:\APP\ADMINISTRATOR\ORADATA\AGRISK\CONTROL03.CTL
SQL> select name from v$datafile;
NAME---------------------------------------------------------D:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSTEM01.DBFD:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSAUX01.DBFD:\APP\ADMINISTRATOR\ORADATA\AGRISK\UNDOTBS01.DBFD:\APP\ADMINISTRATOR\ORADATA\AGRISK\USERS01.DBFD:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK.DBF
SQL> select name from v$tempfile;
NAME---------------------------------------------------------D:\APP\ADMINISTRATOR\ORADATA\AGRISK\TEMP01.DBFD:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK_TEMP.DBF
SQL> select member from v$logfile;
MEMBER---------------------------------------------------------D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO03.LOGD:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO02.LOGD:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO01.LOG

停止数据库:

SQL> shutdown immediate;

将原主机上oradata目录下实例的文件全部拷贝到迁移后的主机对应目录。然后在新的主机上以mount方式启动数据库实例:

SQL> startup mount;


除了控制文件的路径是正常的,其他的文件路径都需要修改,将原来的错误路径D盘改为F盘:

SQL> alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSTEM01.DBF' to 'F:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSTEM01.DBF';数据库已更改。SQL> alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSAUX01.DBF' to 'F:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSAUX01.DBF';数据库已更改。SQL> alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\AGRISK\UNDOTBS01.DBF' to 'F:\APP\ADMINISTRATOR\ORADATA\AGRISK\UNDOTBS01.DBF';数据库已更改。SQL> alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\AGRISK\USERS01.DBF' to 'F:\APP\ADMINISTRATOR\ORADATA\AGRISK\USERS01.DBF';数据库已更改。SQL> alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK.DBF' to 'F:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK.DBF';数据库已更改。SQL> alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\AGRISK\TEMP01.DBF' to 'F:\APP\ADMINISTRATOR\ORADATA\AGRISK\TEMP01.DBF';数据库已更改。SQL> alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK_TEMP.DBF' to 'F:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK_TEMP.DBF';数据库已更改。SQL> alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO01.LOG' to 'F:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO01.LOG';数据库已更改。SQL> alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO02.LOG' to 'F:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO02.LOG';数据库已更改。SQL> alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO03.LOG' to 'F:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO03.LOG';数据库已更改。


确认修改成功后,启动数据库:

SQL> alter database open;数据库已更改。


重启数据库:

SQL> shutdown immediate;数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。
SQL> startupORACLE 例程已经启动。Total System Global Area 1071333376 bytesFixed Size                  1334380 bytesVariable Size             301990804 bytesDatabase Buffers          754974720 bytesRedo Buffers               13033472 bytes数据库装载完毕。数据库已经打开。

查看监听端口。如果没有配置netca网络监听端口,需要使用系统自带的Net Cofiguration Assistant进行配置。

0