What You See Is What You Get Element

如何将 Oracle 数据库从 Oracle Solaris 8 迁移到 Oracle Solaris 11

作者:Orgad Kimchi

如何使用 Oracle Solaris Legacy Containers 中附带的 Oracle Solaris 8 P2V(物理到虚拟)Archiver 工具将包含 Oracle Database 10.2 的 Oracle Solaris 8 物理系统和 Oracle 自动存储管理文件系统迁移到 Oracle Solaris 11 控制域之上的 Oracle Solaris 10 来宾域内的 Oracle Solaris 8 标记区域中。


2012 年 10 月发布(转载自 The art of virtualization 博客)

本文将演示包含 Oracle Database 10.2.0.5 版的 Oracle Solaris 8 物理系统和 SAN 存储上的 Oracle 自动存储管理文件系统到 Oracle Solaris 11 控制域之上的 Oracle Solaris 10 来宾域内的 Oracle Solaris 8 标记区域的迁移过程。

想要分享一些自己喜爱的系统管理员操作?成为 OTN 成员,并通过在 OTN 上发布文章获得报酬

在第一个示例中,我们将保留主机信息。在第二个示例中,我们将修改主机名。

Oracle 自动存储管理文件系统位于通过光纤通道 HBA 连接的 SAN 存储中的 LUN 上。在迁移过程中,我们在源服务器和目标服务器上采用相同的 LUN 以避免数据迁移。

P2V Archiver 工具成功地将 Oracle Solaris 8 物理系统迁移到 Oracle Solaris 8 标记区域中,该区域能够访问 Oracle 自动存储管理文件系统。

架构布局

图 1 显示了架构布局。

架构布局

图 1.架构布局

这些示例中使用的源系统:

  • 硬件:Sun Fire V440 服务器,包含 4 个 UltraSPARC 3i CPU (1593 MHz),8 GB RAM
  • 操作系统:Oracle Solaris 8 2/04 加上新推荐的补丁集

这些示例中使用的目标系统:

保留主机信息的示例

在这个示例中,我们将保留主机信息。

设置控制域

  1. 创建一个虚拟控制台集中器 (vcc) 服务以供虚拟网络终端服务器后台进程 (vntsd) 使用,并作为所有逻辑域控制台的集中器:

    primary# ldm add-vcc port-range=5000-5100 primary-vcc0 primary
    
  2. 创建虚拟磁盘服务器 (vds),以便将虚拟磁盘导入逻辑域:

    primary# ldm add-vds primary-vds0 primary
    
  3. 确定用于创建虚拟交换机服务 (vsw) 的主网络接口。

    以下示例显示 Oracle Solaris 11 系统上的主网络接口。系统的主网络接口为 net0,即 igb0 上数据链路的通用名称。

    primary# dladm show-phys
    LINK   MEDIA      STATE   SPEED   DUPLEX   DEVICE
    net0   Ethernet   up      1000    full     igb0
    net1   Ethernet   up      1000    full     igb1
    
  4. 创建一个虚拟交换机服务 (vsw),以便在逻辑域中的虚拟网络 (vnet) 设备之间实现联网。

    primary# ldm add-vsw net-dev=net0 primary-vsw0 primary
    
  5. 使用 list-services 子命令验证已经创建了这些服务,如清单 1 所示。

    primary# ldm list-services primary
    VCC
    NAME         LDOM    PORT-RANGE
    primary-vcc0 primary 5000-5100
    VSW
    NAME LDOM MAC NET-DEV ID DEVICE LINKPROP DEFAULT-VLAN-ID PVID VID MTU MODE INTER-VNET-LINK
    primary-vsw0 primary 00:14:4f:fb:44:4d net0 0 switch@0 1 1 1500 on
    VDS
    NAME         LDOM VOLUME OPTIONS MPGROUP DEVICE
    primary-vds0 primary
    

    清单 1.示例

  6. 确定控制域中是否有加密设备。

    :只有 Oracle UltraSPARC T2、UltraSPARC T2+ 和 SPARC T3 平台可能有加密设备。

    primary# ldm list -o crypto primary
    
  7. 为控制域分配加密资源(如果有的话)。

    primary# ldm set-mau 1 primary
    
  8. 为控制域分配虚拟 CPU:

    primary# ldm set-vcpu 8 primary
    
  9. 启动控制域上的延迟重新配置:

    primary# ldm start-reconf primary
    
  10. 为控制域分配内存:

    primary# ldm set-memory 4G primary
    
  11. 向服务处理器 (SP) 添加逻辑域计算机配置。例如,以下命令添加一个名为 initial 的配置。

    primary# ldm add-config initial
    
  12. 下次重新启动时,验证该配置可以使用:

    primary# ldm list-config
    factory-default
    initial [next poweron]
    
  13. 重新启动系统。

    primary# init 6
    

    重新启动系统之后,启用 Oracle VM Server for SPARC 并为系统配置一个域:控制域 primary。在控制域中,您可以创建和配置其他域。

  14. 确保启用 Logical Domains Manager (ldmd) 和虚拟网络终端服务器 (vntsd) 服务。

    primary# svcadm enable ldmd
    primary# svcadm enable vntsd
    

设置来宾域

配置控制域之后,创建托管 Oracle Solaris 8 标记区域的来宾域。一开始使用以下资源创建来宾域 ldg1

  • 8 GB 内存
  • 24 个 CPU
  • 一个虚拟网络接口 (vnet0),它连接到虚拟交换机 primary-vsw0
  • Oracle Solaris 8 标记区域将使用的另一个虚拟网络接口 (vnet1),它使用专用 IP 地址,有自己的 IP 相关状态以及一个或多个专用数据链路
  • 一个虚拟磁盘,它在来宾域中显示为 c0d0;域 ldg1 使用控制域中的磁盘 c3t1d0

:磁盘通常在不同服务器上显示为不同的名称。

运行以下命令设置来宾域。

  1. 创建名为 ldg1 的来宾域。

    primary# ldm add-domain ldg1
    
  2. 将 24 个虚拟 CPU 添加到来宾域 ldg1

    primary# ldm add-vcpu 24 ldg1
    
  3. 将 8 GB 内存添加到来宾域 ldg1

    primary# ldm add-memory 8G ldg1
    
  4. 将一个虚拟网络设备(详情见下)添加到来宾域 ldg1

    primary# ldm add-vnet vnet0 primary-vsw0 ldg1
    primary# ldm add-vnet vnet1 primary-vsw0 ldg1
    
  5. 指定虚拟磁盘服务器将作为虚拟磁盘导出到来宾域的设备。

    primary# ldm add-vdsdev /dev/dsk/c3t1d0s2 vol1@primary-vds0
    
  6. 将虚拟磁盘添加到来宾域。

    以下示例将一个虚拟磁盘添加到来宾域 ldg1,其中:

    • vdisk1 是虚拟磁盘的名称。
    • vol1 是要连接到的现有卷的名称。
    • primary-vds0 是要连接到的现有虚拟磁盘服务器的名称。
    primary# ldm add-vdisk vdisk1 vol1@primary-vds0 ldg1
    
  7. 设置来宾域的 auto-boot?boot-device 变量。

    以下命令将来宾域 ldg1auto-boot? 设置为 true,并将 boot-device 设置为 vdisk1

    primary# ldm set-var auto-boot\?=true ldg1
    primary# ldm set-var boot-device=vdisk1 ldg1
    
  8. 创建域之后,使用以下命令从控制域绑定并启动来宾域:

    primary# ldm bind-domain ldg1
    primary# ldm start-domain ldg1
    
  9. 确定域的控制台端口。

     primary# ldm ls ldg1
     NAME STATE  FLAGS  CONS VCPU MEMORY UTIL     UPTIME
     ldg1 active -n---- 5000 24   8G     0.0%     1h 1m
     
  10. 使用 telnet 命令访问 ldg1 域的控制台。

    primary# telnet localhost 5000
    
  11. 启动来宾域之后,确保在来宾域中安装了相应的 Oracle Solaris 操作系统(本例将使用 Oracle Solaris 10 08/11)和补丁。

    您可以通过网络、从 DVD 或使用 DVD ISO 映像执行安装。参见 Oracle VM Server for SPARC 2.2 管理指南

  12. 在来宾域上成功完成 Oracle Solaris 安装之后,使用 svcs -xv 命令验证来宾域上的所有 Oracle Solaris 服务是否已经启动并在运行:

    guest# svcs -xv
    

    如果所有服务均已启动和运行,该命令不返回任何信息。

安装 Oracle Solaris Legacy Containers

Oracle Solaris Legacy Containers 产品将 Oracle Solaris 8 Containers 和 Oracle Solaris 9 Containers 捆绑在一起。通过 Oracle Solaris Legacy Containers,可以轻松地将现有的 Oracle Solaris 8 和 Oracle Solaris 9 应用环境移至运行 Oracle Solaris 10 OS 的新的、经济高效的、更强大的系统上。

Oracle Solaris Legacy Containers 提供了以下工具:

  • P2V(物理到虚拟)Archiver 工具,它自动将原始映像(Oracle Solaris 8 或 Oracle Solaris 9)归档、转换并移至目标 Oracle Solaris 10 系统上
  • Oracle Solaris 8 Containers 和 Oracle Solaris 9 Containers,它们为所迁移的应用提供运行时环境
  • 永久性许可和为期一年的标准支持服务

Oracle Solaris Legacy Containers 下载包括两个产品版本:

  • Oracle Solaris Legacy Containers 1.0.1,适用于 Oracle Solaris 10 10/08 或更高版本
  • Oracle Solaris Legacy Containers 1.0,适用于 Oracle Solaris 10 08/07 或 Oracle Solaris 10 05/08

两个产品版本包含相同的特性。1.0.1 产品依赖于 Oracle Solaris 10 10/08 中引入的 Oracle Solaris 软件包。1.0 产品为 Oracle Solaris 10/08 版之前的版本提供这些软件包。

既然本例使用的是 Oracle Solaris 10 08/11,因此我们将使用 Oracle Solaris Legacy Containers 1.0.1。

要安装 Oracle Solaris Legacy Containers 1.0.1,请执行以下操作:

  1. 下载 Oracle Solaris Legacy Containers 软件包。

    要找到下载,比较简单的方法是转到软件下载页面,然后向下滚动,并单击 Solaris Legacy Containers

  2. 解压缩并安装 Oracle Solaris Legacy Containers 1.0.1 软件包:

    guest# unzip solarislegacycontainers-solaris10-sparc.zip
    guest# cd solarislegacycontainers/1.0.1/Product
    guest# pkgadd -d `pwd` SUNWs8brandk
    

    如需进一步的安装说明,请参见自述文件。

开始迁移

  1. 在源系统上运行以下命令:

    sol8# su - oracle
    
  2. 关闭 Oracle 数据库:

    sol8$ sqlplus "/as sysdba"
    SQL*Plus: Release 10.2.0.5.0 - Production on Sun Aug 26 13:19:48 2012
    Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
    
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    
    SQL> shutdown immediate
    
  3. 关闭 Oracle 自动存储管理实例,如清单 2 所示:

    sol8$ export ORACLE_SID=+ASM
    sol8$ sqlplus "/as sysdba" 
    
    SQL*Plus: Release 10.2.0.5.0 - Production on Sun Aug 26 13:21:38 2012
    Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
    
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    
    SQL> shutdown
    ASM diskgroups dismounted
    ASM instance shutdown
    

    清单 2.关闭自动存储管理实例

  4. 停止监听器:

    sol8$ lsnrctl stop
    LSNRCTL for Solaris: Version 10.2.0.5.0 - Production on 26-AUG-2012 13:23:49
    Copyright (c) 1991, 2010, Oracle. All rights reserved.
    
    Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
    The command completed successfully
    

创建存档

  1. 使用 flarcreate 命令创建系统存档。

    在下面的示例中:

    • -S 指定我们跳过磁盘空间检查,且不将存档大小数据写入存档。其结果是大大缩短了创建存档所需的时间。
    • -n 指定映像名称。
    sol8# flarcreate -S -n s8-system /export/home/s8-system.flar
    

    有关更高级的存档创建示例,请参见 flarcreate(1M)

  2. 将存档复制到目标来宾域。
  3. 在目标系统上,移动 SAN 存储并将其连接到目标系统。
  4. 在控制域上,将 SAN 存储 LUN(包括 Oracle 自动存储管理文件系统 (c5t40d0s6))添加到来宾域:

    primary# ldm add-vdsdev /dev/dsk/c5t40d0s6 oradata@primary-vds0
    primary# ldm add-vdisk oradata oradata@primary-vds0 ldg1
    
  5. 在来宾域上,验证是否可以访问 LUN。

    LUN 在来宾域中显示为 c0d2 并且是控制域添加的存储阵列 (c5t40d0s6) 中的一个 LUN。

    :LUN 通常在不同服务器上显示为不同的名称。

    guest# format
    Searching for disks...done
    
    AVAILABLE DISK SELECTIONS:
    0. c0d0
    /virtual-devices@100/channel-devices@200/disk@0
    1. c0d2
    /virtual-devices@100/channel-devices@200/disk@2
    
  6. 验证来宾域是否有第二个网络接口 (vnet1):

    guest# dladm show-dev vnet1
    
  7. 在来宾域上使用 zonecfg 命令设置 Oracle Solaris 8 标记区域 s8-zone

    清单 3 显示配置完成后 zonecfg -z s8-zone info 命令的输出。

    guest# zonecfg -z s8-zone info 
    zonename: s8-zone
    zonepath: /zones/s8-zone
    brand: solaris8
    autoboot: true
    bootargs:
    pool:
    limitpriv: default,proc_priocntl,proc_lock_memory
    scheduling-class: FSS
    ip-type: exclusive
    hostid:
    net:
            address not specified
            physical: vnet1
            defrouter not specified
    device
           match: /dev/rdsk/c0d2s0
    attr:
            name: machine
            type: string
            value: sun4u
    

    清单 3.设置标记区域

  8. 使用 zoneadm 命令安装 Oracle Solaris 8 区域。

    在下面的示例中:

    • -z 指定区域名称。
    • -p 指定我们保留系统标识。
    • -a 指定存档位置。
    guest# zoneadm -z s8-zone install -p -a /export/home/s8-system.flar
    
  9. 启动 Oracle Solaris 8 区域:

    guest# zoneadm -z s8-zone boot
    guest# zlogin -C s8-zone 
    sol8_zone# su - oracle
    
  10. 修改 Oracle 自动存储管理磁盘所有权:

    sol8_zone# chown oracle:dba /dev/rdsk/c0d2s0 
    
  11. 启动 Oracle 监听器:

    sol8_zone$ lsnrctl start
    
  12. 启动 Oracle 自动存储管理实例,如清单 4 所示:

    sol8_zone$ export ORACLE_SID=+ASM
    sol8_zone$ sqlplus / as sysdba
    
    SQL*Plus: Release 10.2.0.5.0 - Production on Sun Aug 26 14:36:44 2012
    Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
    
    Connected to an idle instance.
    
    SQL> startup
    ASM instance started
    
    Total System Global Area 130023424 bytes
    Fixed Size 2050360 bytes
    Variable Size 102807240 bytes
    ASM Cache 25165824 bytes
    ASM diskgroups mounted
    SQL> quit
    Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    

    清单 4.启动 Oracle 自动存储管理实例

  13. 启动数据库,如清单 5 所示:

    sol8_zone$ export ORACLE_SID=ORA10
    sol8_zone$ sqlplus / as sysdba
    
    SQL*Plus: Release 10.2.0.5.0 - Production on Sun Aug 26 14:37:13 2012
    Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
    
    Connected to an idle instance.
    
    SQL> startup
    ORACLE instance started.
    
    Total System Global Area 1610612736 bytes
    Fixed Size 2052448 bytes
    Variable Size 385879712 bytes
    Database Buffers 1207959552 bytes
    Redo Buffers 14721024 bytes
    Database mounted.
    Database opened.
    

    清单 5.启动 Oracle 数据库

更改主机信息的示例

在第一个示例中,我们将保留主机信息,包括主机名、IP 地址和名称服务配置。有时在 P2V 迁移期间需要更改主机信息,例如更改 IP 地址或主机名。

在第二个示例中,我们将修改主机名。所有步骤均与第一个示例中的相同,直到安装 Oracle Solaris 8 区域。此时要改用以下步骤。

  1. 运行以下命令:

    guest# zoneadm -z s8-zone install -u -a /net/server/s8_image.flar
    
  2. 启动 Oracle Solaris 8 区域:

    guest# zoneadm -z s8-zone boot
    
  3. 使用新 IP 地址和新主机名配置区域:

    guest# zlogin -C s8-zone
    
  4. 修改 Oracle 自动存储管理磁盘所有权:

    sol8_zone# chown oracle:dba /dev/rdsk/c0d2s0
    sol8_zone# cd $ORACLE_HOME/bin
    
  5. 重新配置 Oracle 自动存储管理参数,如清单 6 所示:

    sol8_zone# ./localconfig delete
    
    Aug 27 05:17:11 s8-zone last message repeated 3 times
    Aug 27 05:17:28 s8-zone root: Oracle CSSD being stopped
    Stopping CSSD.
    Unable to communicate with the CSS daemon.
    Shutdown has begun. The daemons should exit soon.
    sol8_zone# ./localconfig add
    
    Successfully accumulated necessary OCR keys.
    Creating OCR keys for user 'root', privgrp 'other'..
    Operation successful.
    Configuration for local CSS has been initialized
    
    sol8_zone# su - oracle
    

    清单 6.重新配置参数

  6. 按照与第一个示例中相同的方式启动监听器、Oracle 自动存储管理和 Oracle 数据库。

另请参见

有关在来宾域上安装 Oracle Solaris 的更多信息,请参见 Oracle VM Server for SPARC 2.2 管理指南 中的“在来宾域上安装 Oracle Solaris 操作系统”一节。

关于作者

Orgad Kimchi 是 Oracle(之前任职于 Sun Microsystems)ISV 工程小组的首席软件工程师。5 年来,他一直专注于虚拟化和云计算技术。

修订版 1.0,2012 年 10 月 10 日

facebook 横幅广告 twitter 横幅广告