您当前的位置:首页 > 互联网教程

如何将正在运行的 Oracle 数据库迁移到另一个系统

发布时间:2025-05-23 17:11:28    发布人:远客网络

如何将正在运行的 Oracle 数据库迁移到另一个系统

一、如何将正在运行的 Oracle 数据库迁移到另一个系统

在本文提供的示例中,源服务器配置有控制域和一个托管 Oracle数据库的来宾域(名为 ldg1)。控制域名为

primary,也是一个 I/O域。此外,控制域还用作服务域,为来宾域提供虚拟设备服务(虚拟磁盘和虚拟网络)。

作为服务域,控制域提供以下虚拟设备服务:

一个虚拟磁盘服务(primary-vds0),将物理磁盘作为虚拟磁盘导出到来宾域。

一个虚拟控制台集中器服务(primary-vcc0),提供对来宾域虚拟控制台的访问。此服务使用端口范围 5000–5100

一个虚拟交换机服务(primary-vsw0),与主网络接口(nxge0)

按照以下步骤配置您的环境以便进行实时迁移。

新的 SPARC服务器上预先安装了 Oracle Solaris。对于这些系统,应确保安装了相应的 Oracle Solaris

要在 SPARC系统上重新安装 Oracle

Solaris 11文档。在本文的示例中,操作系统安装在服务器的第一个内部磁盘上。

安装 Oracle Solaris之后,可以配置并启用系统以使用 Oracle VM Server for SPARC 2.1软件。

新的 SPARC服务器上也预先安装了 Oracle VM Server for SPARC软件。对于这些系统,应确保安装了相应的 Oracle VM

Server for SPARC版本,并验证打了所有需要的补丁。

如果在服务器上重新安装了 Oracle

Solaris,您可能必须重新安装 Oracle VM Server for SPARC软件。参见 Oracle

以下示例显示了在每台物理服务器上执行的操作。每台服务器已经安装了 Oracle Solaris和所需的补丁。

应确保系统固件与您计划安装的 Oracle VM

Server for SPARC版本匹配。参见文档的 Oracle VM

Server for SPARC 2.1版本说明中的“所需软件和补丁”以及 Oracle VM Server for SPARC 2.1

管理指南中的“升级系统固件”。

VM下载页面下载 Oracle VM Server for SPARC 2.1软件。

程序包。参见 Oracle VM Server for SPARC 2.1管理指南中的“在新系统上安装 Oracle VM Server

primary# pkgadd-d OVM_Server_SPARC-2_1/Product SUNWldm.v

Sun Storage 2540-M2存储阵列连接到控制域,控制域将两个 LUN(LUN 0和 LUN 1)作为虚拟磁盘导出到来宾域。

来宾域使用第一个 LUN(LUN 0)作为操作系统的系统磁盘,使用第二个 LUN(LUN 1)作为存储 Oracle数据库数据文件的磁盘。

安装 Oracle VM Server for SPARC软件之后,重新配置当前系统使其成为控制域。在每台物理服务器上执行以下操作:

服务以供虚拟网络终端服务器后台程序(vntsd)使用,并作为所有逻辑域控制台的集中器。

primary# ldm add-vcc port-range=5000-5100 primary-vcc0 primary

primary# ldm add-vds primary-vds0 primary

以便在逻辑域中的虚拟网络(vnet)设备之间实现联网。

primary# ldm add-vsw net-dev=igb0 primary-vsw0 primary

list-services命令验证已经创建了这些服务,如清单 1所示。

primary# ldm list-services primary

primary-vsw0 02:04:4f:fb:9f:0d nxge0 switch@0 prog,promisc

primary-vcc0 primary 5000-5100

NAME LDOM MAC NET-DEV ID DEVICE LINKPROP DEFAULT-VLAN-ID PVID VID...

primary-vsw0 primary 00:14:4f:f8:28:c2 igb0 0 switch@0 1 1 1500 on

NAME LDOM VOLUME OPTIONS MPGROUP DEVICE

Oracle VM Server for SPARC使用 SSL

对迁移流量进行加密,以保护敏感数据免受利用,并消除了对额外硬件和专用网络的需求;

当源计算机和目标计算机上的主域具有分配的加密单元时,迁移操作的速度会增加。速度增加的原因在于可以将 SSL操作分流到加密单元。

具有内置的加密指令,因此您不需要为 CPU分配这些指令。

primary# ldm list-o crypto primary

primary# ldm set-crypto 1 primary

您可以通过向源计算机上的主域中添加更多 CPU来减少整体迁移时间。最好为每个主域至少分配 8个 CPU。例如,以下命令为控制域分配 8个 CPU和

primary# ldm start-reconf primary

primary# ldm set-vcpu 8 primary

primary# ldm set-memory 4G primary

重新启动系统之后,启用 Oracle VM Server for SPARC并为系统配置一个域:控制域

primary。在控制域中,您可以创建和配置其他域。

确保启用 Logical Domains Manager

(ldmd)和虚拟网络终端服务器(vntsd)服务。

添加逻辑域计算机配置。例如,以下命令添加名为 initial的配置。

primary# ldm add-config initial

配置控制域之后,创建来宾域以用作 Oracle数据库节点。在作为源计算机的物理服务器上,仅创建一个来宾域。另一台物理服务器最终将成为目标计算机。

最初使用以下资源创建来宾域 ldg1:

一个虚拟网络接口(vnet0),它连接到虚拟交换机 primary-vsw0。

一个虚拟磁盘,它在来宾域中显示为 c0d0并且是存储阵列中的一个 LUN。域 ldg1

使用存储阵列的 LUN 0(c2t6d0)。

另一个虚拟磁盘,它在来宾域中显示为 c0d1并且是存储阵列中的一个 LUN。域 ldg1

使用存储阵列的 LUN 1(c2t6d1)。此虚拟磁盘用于存储 Oracle数据库文件。

SPARC T4的系统,则仅执行 ldm set-crypto命令。

primary# ldm set-memory 8G ldg1

primary# ldm set-crypto 3 ldg1

primary# ldm add-vnet vnet0 primary-vsw0 ldg1

primary# ldm add-vdsdev/dev/dsk/c2t6d0s2 vol1@primary-vds0

primary# ldm add-vdisk vol1 vol1@primary-vds0 ldg1

primary# ldm add-vdsdev/dev/dsk/c2t6d1s2 oradata@primary-vds0

primary# ldm add-vdisk oradata oradata@primary-vds0 ldg1

创建域之后,在源计算机上使用以下命令从控制域绑定并启动来宾域。

NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME

ldg1 active-n---- 5000 24 8G 0.0% 1h 1m

primary# telnet localhost 5000

启动来宾域之后,确保在来宾域中安装了相应的 Oracle Solaris操作系统和补丁。您可以通过网络、从 DVD或使用 DVD ISO

映像来执行安装。参见 Oracle VM Server for SPARC 2.1管理指南。

通常在不同服务器上以不同名称显示。控制域中的 LUN名称不需要相同。但是,两个系统上的控制域必须使用相同的卷名(vol1和

oradata)对相同的 LUN(LUN 0和 LUN 1)进行虚拟化。

清单 2的示例显示了如何为名为 ldg1的域配置 8个 CPU、24 GB内存以及 Sun Storage

清单 2.域配置示例 primary# ldm ls-l ldg1

NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME

ldg1 active-n---- 5000 24 8G 0.0% 1h 1m

NAME SERVICE ID DEVICE MAC MODE PVID VID MTU LINKPROP

vnet1 primary-vsw0@primary 0 network@0 00:14:4f:f9:c0:62 1 1500

NAME VOLUME TOUT ID DEVICE SERVER MPGROUP

vdisk1 vol1@primary-vds0 0 disk@0 primary

oradata oradata@primary-vds0 1 disk@1 primary

ldg1 primary-vcc0@primary 5000

清单 3的示例显示了控制域的配置。使用 ldm list-services

清单 3.控制域配置示例 primary# ldm ls-services primary

primary-vcc0 primary 5000-5100

NAME LDOM MAC NET-DEV ID DEVICE LINKPROP DEFAULT-VLAN-ID...

primary-vsw0 primary 00:14:4f:f9:32:b0 nxgeg0 0 switch@0 1 1...

NAME LDOM VOLUME OPTIONS MPGROUP DEVICE

primary-vds0 primary vol1/dev/dsk/c2t6d0s2

确保在来宾域中安装了相应的 Oracle Solaris版本,并验证打了所需的补丁。

在来宾域中安装 Oracle Solaris之后,可以配置并启用系统使其使用 Oracle数据库。

Oracle Database软件的安装类似于标准 Oracle Database安装。首先安装 Oracle

Database,然后应用最新补丁集。使用第二个 LUN创建 UFS或 ZFS文件系统用于存储 Oracle数据库数据文件。

Oracle数据库配置 Oracle Solaris ZFS。

执行以下各节中所述的步骤来准备目标计算机:

确保在目标服务器上提供了供待迁移域使用的所有虚拟 I/O服务。

确保目标服务器有权访问同一存储中的 LUN 0和 LUN

要将第一个 LUN(LUN 0)和第二个 LUN(LUN 1)添加到目标计算机,从目标服务器的控制域执行以下命令:

# ldm add-vdsdev/dev/dsk/c2t6d0s2 vol1@primary-vds0

# ldm add-vdsdev/dev/dsk/c2t6d1s2 oradata@primary-vds0

通常在不同服务器上以不同名称显示。控制域中的 LUN名称不需要相同。但是,两个系统上的控制域必须使用相同的卷名(vol1和

oradata)对相同的 LUN(LUN 0和 LUN 1)进行虚拟化。

确保待迁移域中的每个虚拟网络设备在目标计算机上都有一个对应的虚拟网络交换机:

# ldm add-vsw net-dev=nxge0 primary-vsw0 primary

二、如何将ORACLE数据库数据文件迁移到其它目录

源数据库数据文件位置:/u01/oradata/orcl

实验中想把数据文件迁移到的位置:/u01/oradata/orcl_test

sys@ORCL> select file_name from dba_data_files;

----------------------------------------

/u01/oradata/orcl/system01.dbf

/u01/oradata/orcl/undotbs01.dbf

/u01/oradata/orcl/sysaux01.dbf

sys@ORCL> select file_name from dba_temp_files;

----------------------------------------

sys@ORCL> col member for a30

sys@ORCL> select member from v$logfile;

------------------------------

需要移动所有的数据文件,采用alter database方法

sys@ORCL> shutdown immediate

2、移动数据文件到/u01/oradata/orcl_test目录

[oracle@ora10gserv orcl]$ mv*/u01/oradata/orcl_test/

[oracle@ora10gserv orcl]$ cd/u01/oradata/orcl_test/

[oracle@ora10gserv orcl_test]$ ls

control01.ctl control03.ctl redo02.log sysaux01.dbf temp01.dbf users01.dbf

control02.ctl redo01.log redo03.log system01.dbf undotbs01.dbf

[oracle@ora10gserv/]$ sqlplus/nolog

SQL*Plus: Release 10.2.0.1.0- Production on Tue Aug 2 00:05:27 2011

Copyright(c) 1982, 2005, Oracle. All rights reserved.

Connected to an idle instance.

Total System Global Area 465567744 bytes

Database Buffers 314572800 bytes

SQL> create pfile='/u01/initorcl.ora' from spfile;

SQL> host vi/u01/initorcl.ora

orcl.__db_cache_size=314572800

orcl.__large_pool_size=4194304

orcl.__shared_pool_size=138412032

*.audit_file_dest='/dba/admin/orcl/adump'

*.background_dump_dest='/dba/admin/orcl/bdump'

*.compatible='10.2.0.1.0'

*.control_file_record_keep_time=14

*.control_files='/u01/oradata/orcl_test/control01.ctl','/u01/oradata/orcl_test/control02.ctl','/u01/oradata/orcl_test/control03.ctl'

*.core_dump_dest='/dba/admin/orcl/cdump'

*.db_domain='lsf.com.cn'

*.db_file_multiblock_read_count=16

*.db_recovery_file_dest='/dba/flash_recovery_area'

*.db_recovery_file_dest_size=2147483648

*.dispatchers='(PROTOCOL=TCP)(SERVICE=orclXDB)'

*.log_archive_dest_1='location=/u01/arch_orcl'

*.pga_aggregate_target=154140672

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/dba/admin/orcl/udump'

ORA-01507: database not mounted

SQL> create spfile from pfile='/u01/initorcl.ora';

4、启动数据库到mount状态,更改数据文件位置

Total System Global Area 465567744 bytes

Database Buffers 314572800 bytes

idle> alter database rename file'/u01/oradata/orcl/system01.dbf' to'/u01/oradata/orcl_test/system01.dbf';

idle> alter database rename file'/u01/oradata/orcl/undotbs01.dbf' to'/u01/oradata/orcl_test/undotbs01.dbf';

idle> alter database rename file'/u01/oradata/orcl/sysaux01.dbf' to'/u01/oradata/orcl_test/sysaux01.dbf';

idle> alter database rename file'/u01/oradata/orcl/users01.dbf' to'/u01/oradata/orcl_test/users01.dbf';

5、继续接着第4步,更改联机日志文件位置

idle> alter database rename file'/u01/oradata/orcl/redo01.log' to'/u01/oradata/orcl_test/redo01.log';

idle> alter database rename file'/u01/oradata/orcl/redo02.log' to'/u01/oradata/orcl_test/redo02.log';

idle> alter database rename file'/u01/oradata/orcl/redo03.log' to'/u01/oradata/orcl_test/redo03.log';

sys@ORCL> select file_name from dba_data_files;

----------------------------------------

/u01/oradata/orcl_test/system01.dbf

/u01/oradata/orcl_test/undotbs01.dbf

/u01/oradata/orcl_test/sysaux01.dbf

/u01/oradata/orcl_test/users01.dbf

sys@ORCL> select file_name from dba_temp_files;

----------------------------------------

sys@ORCL> col member for a40

sys@ORCL> select member from v$logfile;

----------------------------------------

/u01/oradata/orcl_test/redo01.log

/u01/oradata/orcl_test/redo02.log

/u01/oradata/orcl_test/redo03.log

sys@ORCL> select name from v$controlfile;

--------------------------------------------------

/u01/oradata/orcl_test/control01.ctl

/u01/oradata/orcl_test/control02.ctl

/u01/oradata/orcl_test/control03.ctl

由于控制文件不记录临时文件的信息,所以不能使用alter database rename file命令完成,只能删除掉原来的再创建一个

sys@ORCL> create temporary tablespace temp02 tempfile'/u01/oradata/orcl_test/temp02.dbf' size 200m autoextend on extent management local uniform size 1m;

sys@ORCL> alter database default temporary tablespace temp02;

sys@ORCL> drop tablespace temp including contents and datafiles;

sys@ORCL> select file_name from dba_temp_files;

----------------------------------------

/u01/oradata/orcl_test/temp02.dbf

[oracle@ora10gserv orcl_test]$ ls-l

-rw-r----- 1 oracle oinstall 7061504 Aug 2 00:20 control01.ctl

-rw-r----- 1 oracle oinstall 7061504 Aug 2 00:20 control02.ctl

-rw-r----- 1 oracle oinstall 7061504 Aug 2 00:20 control03.ctl

-rw-r----- 1 oracle oinstall 52429312 Aug 2 00:20 redo01.log

-rw-r----- 1 oracle oinstall 52429312 Aug 2 00:15 redo02.log

-rw-r----- 1 oracle oinstall 52429312 Aug 2 00:15 redo03.log

-rw-r----- 1 oracle oinstall 251666432 Aug 2 00:20 sysaux01.dbf

-rw-r----- 1 oracle oinstall 503324672 Aug 2 00:20 system01.dbf

-rw-r----- 1 oracle oinstall 209723392 Jul 21 22:00 temp01.dbf

-rw-r----- 1 oracle oinstall 209723392 Aug 2 00:20 temp02.dbf

-rw-r----- 1 oracle oinstall 419438592 Aug 2 00:20 undotbs01.dbf

-rw-r----- 1 oracle oinstall 104865792 Aug 2 00:15 users01.dbf

[oracle@ora10gserv orcl_test]$ rm-rf temp01.dbf

sys@ORCL> select username,temporary_tablespace from dba_users;

------------------------------------------------------------

如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】

希望我的回答对您有所帮助,望采纳!

三、怎么将oracle数据库的数据迁移(oracle数据库迁移怎么操作)

迁移的话,直接导出一个库的dmp文件,之后导入到另外一个库里面就可以了(导出和导入数据库版本必须一直,否则导入可能会报错)。

1将数据库TEST完全导出,用户名system密码manager导出到D:chu.dmp中

expsystem/manager@TESTfile=d:chu.dmpfull=y

2将数据库中system用户与sys用户的表导出

expsystem/manager@TESTfile=d:chu.dmpowner=(system,sys)

3将数据库中的表table1、table2导出

expsystem/manager@TESTfile=d:chu.dmptables=(table1,table2)

4将数据库中的表table1中的字段filed1以"00"打头的数据导出



相关内容FAQs: