你好,游客 登录 注册 搜索
背景:
阅读新闻

Oracle 11g 数据库迁移

[日期:2017-08-09] 来源:Linux社区  作者:tryingstuff [字体: ]

由于服务器更换,或者硬盘损坏等问题,在有些场景下,我们需要对数据库进行迁移。Oracle 数据库有多种备份方式,如果可以停机,建议最好使用冷备的方式,直接迁移数据文件,这样效率会比较高。
由于两台主机都是Windows server,为了方便直接使用复制文件的方式,由于特殊原因,迁移前的数据目录和迁移后的数据目录是不一致的。直接迁移数据后,启动会报如下错误:
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 1071333376 bytes
Fixed Size                  1334380 bytes
Variable Size            301990804 bytes
Database Buffers          754974720 bytes
Redo 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.CTL
F:\APP\ADMINISTRATOR\ORADATA\AGRISK\CONTROL02.CTL
F:\APP\ADMINISTRATOR\ORADATA\AGRISK\CONTROL03.CTL

SQL> select name from v$datafile;

NAME
---------------------------------------------------------
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSTEM01.DBF
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSAUX01.DBF
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\UNDOTBS01.DBF
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\USERS01.DBF
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK.DBF

SQL> select name from v$tempfile;

NAME
---------------------------------------------------------
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\TEMP01.DBF
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK_TEMP.DBF

SQL> select member from v$logfile;

MEMBER
---------------------------------------------------------
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO03.LOG
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO02.LOG
D:\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> startup
ORACLE 例程已经启动。
Total System Global Area 1071333376 bytes
Fixed Size                  1334380 bytes
Variable Size            301990804 bytes
Database Buffers          754974720 bytes
Redo Buffers              13033472 bytes
数据库装载完毕。
数据库已经打开。

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

更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-08/146129.htm

linux
相关资讯       Oracle 11g 数据库迁移  Oracle 11g迁移 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款