通过移动原始数据文件来移动 Oracle 数据库

Ada*_*dam 5 oracle migration restore

我有一个大型 Oracle 数据库(~300 GB),我需要在短时间内将该数据库的副本移动到新环境。我想知道是否有办法只获取 Oracle 管理的原始文件并将它们移动到新框并绕过转储然后再导入?

我正在查看http://docs.oracle.com/cd/B28359_01/server.111/b31107/asmcon.htm但不确定这是否是我需要的。原始数据文件存储在哪里?

REW*_*REW 6

这在很大程度上取决于 Oracle 版本和 OS 版本的差异。如果两者都在同一个版本中,并且 Oracle 在同一个庄园中打了补丁,那么答案就变成了一个因素:

如果所有与数据库相关的文件将驻留在同一个地方 THEN

...对数据库进行冷干净关闭

...复制 $ORACLE_HOME/dbs 中的数据文件、临时、撤消、重做日志、控制文件和实例相关文件(initINST.ora、spfileINST.ora、orapwINST 等)

...在oratab文件中设置实例(或者,如果是Windows,则使用ORADIM创建实例相关的Windows服务)

...正常启动

如果文件结构会改变,但实例名称不会THEN

...对数据库进行冷干净关闭

...复制 $ORACLE_HOME/dbs 中的数据文件、撤消、重做日志和实例相关文件(initINST.ora、spfileINST.ora、orapwINST 等)

...不要复制控制文件

...在oratab文件中设置实例(或者,如果是Windows,则使用ORADIM创建实例相关的Windows服务)

...启动 nomount

...使用“创建控制文件重用 ~ noresetlogs”命令重新创建控制文件

...添加回 TEMP 表空间

如果文件结构会改变并且实例名称也会改变 THEN

...对数据库进行冷干净关闭

...复制 $ORACLE_HOME/dbs 中的数据文件、撤消、重做日志和实例相关文件(initINST.ora、spfileINST.ora、orapwINST 等)

...不要复制控制文件、临时或重做日志

...在oratab文件中设置实例(或者,如果是Windows,则使用ORADIM创建实例相关的Windows服务)

...启动 nomount

...使用“create controlfile set ~ resetlogs”命令重新创建控制文件

...添加回 TEMP 表空间

这是典型的旧式克隆技术。通常,我是 RMAN DUPLICATE 的粉丝,但如果这是一次性的,我可能不会担心。如果这不是 11g,您将进行单独的备份,将其传输以供 rman 使用。如果是11g,可以使用“from active database”子句,只要实例可以在网络上互相访问即可。


Ada*_*sch 3

将数据文件(当数据库关闭时)从一台服务器复制到另一台服务器是所需操作的一部分,但不是全部。您还需要重做日志文件,并且还需要在目标系统上创建新的控制文件。如果您要转移到另一台 Windows 计算机,还会遇到其他一些问题。您自然需要在目标计算机上安装相同版本的 Oracle,并安装相同的补丁。

如果您使用带有恢复目录的 RMAN 来备份数据库,那么使用该DUPLICATE TARGET DATABASE命令可能是最简单的。