Oracle 11g 数据库迁移

简介:

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

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

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

1
2
3
4
5
6
7
8
9
10
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'

查看文件路径:

1
SQL>  select  name from  v $controlfile;
1
2
3
4
5
NAME
---------------------------------------------------------
F:\APP\ADMINISTRATOR\ORADATA\AGRISK\CONTROL01.CTL
F:\APP\ADMINISTRATOR\ORADATA\AGRISK\CONTROL02.CTL
F:\APP\ADMINISTRATOR\ORADATA\AGRISK\CONTROL03.CTL
1
SQL>  select  name from  v $datafile;
1
2
3
4
5
6
7
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
1
SQL>  select  name from  v $tempfile;
1
2
3
4
NAME
---------------------------------------------------------
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\TEMP01.DBF
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK_TEMP.DBF
1
SQL>  select  member from  v $logfile;
1
2
3
4
5
MEMBER
---------------------------------------------------------
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO03.LOG
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO02.LOG
D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO01.LOG

停止数据库:

1
SQL>  shutdown  immediate;

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

1
SQL> startup  mount ;


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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' ;
数据库已更改。


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

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


重启数据库:

1
2
3
4
SQL>  shutdown  immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
1
2
3
4
5
6
7
8
9
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进行配置。


 本文转自 酥心糖 51CTO博客,原文链接:http://blog.51cto.com/tryingstuff/1952754


相关文章
|
8天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
45 7
|
25天前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(3)
Oracle数据库基本概念理解(3)
18 2
|
8天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
35 5
|
25天前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(2)
Oracle数据库基本概念理解(2)
13 1
|
8天前
|
存储 SQL Oracle
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
32 7
|
25天前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(1)
Oracle数据库基本概念理解(1)
12 1
|
25天前
|
Oracle 关系型数据库 MySQL
Seata常见问题之oracle 数据库 报 just support mysql如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
53 0
|
1月前
|
Oracle Java 关系型数据库
SpringBoot整合Mybatis连接Oracle数据库
SpringBoot整合Mybatis连接Oracle数据库
SpringBoot整合Mybatis连接Oracle数据库
|
1月前
|
存储 Oracle 关系型数据库
Oracle系列十六:数据库备份
Oracle系列十六:数据库备份
|
1月前
|
存储 Oracle 关系型数据库
手把手教你安装Oracle——以oracle 11g为例
手把手教你安装Oracle——以oracle 11g为例
手把手教你安装Oracle——以oracle 11g为例