Nutanix CE の Acropolis Block Services(ABS)ボリュームのデータを、2台の Oracle Database サーバ間で移行をしてみようと思います。
今回は、データ移行元の DB サーバで、移行用データの用意をします。
前提とする環境
Nutanix Acropolis Hypervisor (AHV) 上に、Oracle Linux 7.2 の VM を構築してあります。AHV は KVM ベースのハイパーバイザです。
[root@ora-sv-a ~]# dmidecode -s system-product-name KVM [root@ora-sv-a ~]# cat /etc/oracle-release Oracle Linux Server release 7.2
Prism から見るとこんな感じです。
すでに、シングルインスタンス構成の Oracle Database サーバを構築ずみです。
[oracle@ora-sv-a ~]$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Sun Sep 4 17:24:20 2016 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options SQL> col host_name for a10 SQL> select host_name,instance_name,status from v$instance; HOST_NAME INSTANCE_NAME STATUS ---------- ---------------- ------------ ora-sv-a oradba OPEN
Oracle Database のデータファイル配置先として Oracle ASM を使用しています。既存ファイルは、すべて DG_LOCAL という名前のディスクグループに配置しています。
SQL> col TABLESPACE_NAME for a10 SQL> col FILE_NAME for a50 SQL> select TABLESPACE_NAME,FILE_NAME from dba_data_files; TABLESPACE FILE_NAME ---------- -------------------------------------------------- SYSTEM +DG_LOCAL/ORADBA/DATAFILE/system.258.921596971 SYSAUX +DG_LOCAL/ORADBA/DATAFILE/sysaux.257.921596925 EXAMPLE +DG_LOCAL/ORADBA/DATAFILE/example.270.921597263 USERS +DG_LOCAL/ORADBA/DATAFILE/users.259.921597027 UNDOTBS1 +DG_LOCAL/ORADBA/DATAFILE/undotbs1.260.921597033
Oracle ASM を使用するため、oracleasm-support の RPM をインストールしています。
[root@ora-sv-a ~]# rpm -q oracleasm-support oracleasm-support-2.1.8-3.el7.x86_64 [root@ora-sv-a ~]# oracleasm configure ORACLEASM_UID=oracle ORACLEASM_GID=dba ORACLEASM_SCANBOOT=true ORACLEASM_SCANORDER="" ORACLEASM_SCANEXCLUDE="" ORACLEASM_USE_LOGICAL_BLOCK_SIZE="false"
VM には、3つの vDisk を接続しています。
[root@ora-sv-a ~]# lsscsi [0:0:0:0] cd/dvd QEMU QEMU DVD-ROM 2.1. /dev/sr0 [2:0:0:0] disk NUTANIX VDISK 0 /dev/sda [2:0:1:0] disk NUTANIX VDISK 0 /dev/sdb [2:0:2:0] disk NUTANIX VDISK 0 /dev/sdc
最初にマウントしているファイルシステムの様子です。ASM の領域はここからは見えません。
[root@ora-sv-a ~]# df -h -T -t ext4 -t xfs ファイルシス タイプ サイズ 使用 残り 使用% マウント位置 /dev/mapper/ol-root xfs 14G 1.6G 13G 12% / /dev/mapper/vg01-data ext4 20G 13G 6.4G 66% /u01 /dev/sda1 xfs 497M 147M 350M 30% /boot
ASM ディスクとして、/dev/sdc1 を使用しています。このあと、下記とは別に移行対象データを格納するためのディスクを追加します。
[root@ora-sv-a ~]# oracleasm querydisk -p /dev/sd?1 Device "/dev/sda1" is not marked as an ASM disk Device "/dev/sdc1" is marked an ASM disk with the label "LOCALDISK1"
Oracle はシングル構成ですが、Oracle Database インスタンス、ASM インスタンス、ASM ディスクグループなどが Oracle Clusterware にリソース登録されている「Oracle Restart」 構成になっています。oradba という DB が OPEN 状態になっています。
[oracle@ora-sv-a ~]$ crsctl stat res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.DG_LOCAL.dg ONLINE ONLINE ora-sv-a STABLE ora.LISTENER.lsnr ONLINE ONLINE ora-sv-a STABLE ora.asm ONLINE ONLINE ora-sv-a Started,STABLE ora.ons OFFLINE OFFLINE ora-sv-a STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.cssd 1 ONLINE ONLINE ora-sv-a STABLE ora.diskmon 1 OFFLINE OFFLINE STABLE ora.evmd 1 ONLINE ONLINE ora-sv-a STABLE ora.oradba.db 1 ONLINE ONLINE ora-sv-a Open,STABLE -------------------------------------------------------------------------------- [oracle@ora-sv-a ~]$
Nutanix ABS ボリューム グループ作成~接続
ABS VG の作成
Nutanix ABS でボリュームグループ(VG) を作成します。
Prism の Storage 画面で、「+ Volume Group」をクリックします。
VG の名前 (NAME) は「vg-oradb」にしています。
NAME を入力したら、「+ Add new disk」で ボリューム (vDisk) を追加します。
Nutanix DSF (Distributed Storage Fabric) のコンテナに、5 GBの vDisk を追加します。
同様に、2 GB の vDisk を追加します。
2つの vDisk が追加された状態で、いったん「Save」します。
ABS VG の VM への割り当て
作成した VG は、「Table」→「Volume Group」画面を開くと確認できます。
VM に割り当てるため、VG「gv-oradb」を選択して、「Update」をクリックします。
VG 作成時と同様の画面が表示されるので、下のほうにある「Attach to a VM」をクリックします。
割り当て先の VM「ora-sv-a」を選択して「Attach」します。
「ora-sv-a」が割り当てられました。「Save」します。
Oracle Linux 7.2 の VM では、オンラインでディスク認識します。/dev/sdd と /dev/sde が追加で認識されました。
[root@ora-sv-a ~]# lsscsi [0:0:0:0] cd/dvd QEMU QEMU DVD-ROM 2.1. /dev/sr0 [2:0:0:0] disk NUTANIX VDISK 0 /dev/sda [2:0:1:0] disk NUTANIX VDISK 0 /dev/sdb [2:0:2:0] disk NUTANIX VDISK 0 /dev/sdc [2:0:3:0] disk NUTANIX VDISK 0 /dev/sdd [2:0:3:1] disk NUTANIX VDISK 0 /dev/sde
先ほど作成したとおり、容量は 5 GB と 2 GB です。
[root@ora-sv-a ~]# lsblk /dev/sdd /dev/sde NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdd 8:48 0 5G 0 disk sde 8:64 0 2G 0 disk
ゲスト OS でのデバイスのセットアップ
ゲスト OS 側で、認識した VG を使用する準備をします。
vDisk#1 → ASM Disk Group
1つめの vDisk (/dev/sdd) から、ASM Disk Group「DG_ABS」を作成します。
まず、ディスク パーティション(/dev/sdd1)を作成します。
[root@ora-sv-a ~]# echo '2048,,L' | sfdisk -uS -q -f /dev/sdd
ASM Disk ラベルを作成します。これで、ASM Disk「ABSDISK1」として認識されるようになります。
[root@ora-sv-a ~]# oracleasm createdisk ABSDISK1 /dev/sdd1 Writing disk header: done Instantiating disk: done [root@ora-sv-a ~]# oracleasm listdisks ABSDISK1 LOCALDISK1
ASM 管理ユーザ(今回は oracle) で、ASM Disk Group を作成します。ちなみに、通常は Nutanix 側でデータの冗長性があるので、Oracle ASM 側では冗長性をもたない「外部 (EXTERNAL)」冗長性を指定しています。
[oracle@ora-sv-a ~]$ asmca -silent -createDiskGroup -diskString '/dev/oracleasm/disks/*' -diskGroupName DG_ABS -diskList /dev/oracleasm/disks/ABSDISK1 -redundancy EXTERNAL ディスク・グループDG_ABSは正常に作成されました。
「DG_ABS」ディスクグループが作成されました。「ora.DG_ABS.dg」リソースも登録されています。
[oracle@ora-sv-a ~]$ crsctl stat res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.DG_ABS.dg ONLINE ONLINE ora-sv-a STABLE ora.DG_LOCAL.dg ONLINE ONLINE ora-sv-a STABLE ora.LISTENER.lsnr ONLINE ONLINE ora-sv-a STABLE ora.asm ONLINE ONLINE ora-sv-a Started,STABLE ora.ons OFFLINE OFFLINE ora-sv-a STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.cssd 1 ONLINE ONLINE ora-sv-a STABLE ora.diskmon 1 OFFLINE OFFLINE STABLE ora.evmd 1 ONLINE ONLINE ora-sv-a STABLE ora.oradba.db 1 ONLINE ONLINE ora-sv-a Open,STABLE -------------------------------------------------------------------------------- [oracle@ora-sv-a ~]$
vDisk#2 → TTS Export Data 配置用の領域
移行用手順で使用する、Oracle の Transportable Tablespace (TTS) のエクスポート データを配置するファイルシステム「/u02」を用意しておきます。
ディスク パーティション(/dev/sde1)を作成します。
[root@ora-sv-a ~]# echo '2048,,L' | sfdisk -uS -q -f /dev/sde
ext4 ファイルシステム を作成します。そしてファイルシステム ラベルとして、マウント先「/u02」を付与しておきます。
[root@ora-sv-a ~]# mkfs -t ext4 /dev/sde1 [root@ora-sv-a ~]# e2label /dev/sde1 /u02
マウントポイントを作成して、マウントしておきます。
[root@ora-sv-a ~]# mkdir /u02 [root@ora-sv-a ~]# echo 'LABEL="/u02" /u02 ext4 defaults 0 0' >> /etc/fstab [root@ora-sv-a ~]# mount /u02
マウントされました。
[root@ora-sv-a ~]# df -h -T /u02 ファイルシス タイプ サイズ 使用 残り 使用% マウント位置 /dev/sde1 ext4 2.0G 6.0M 1.9G 1% /u02
TTS のエクスポート データの出力先にするディレクトリを作成しておきます。
[root@ora-sv-a ~]# mkdir /u02/dpdir [root@ora-sv-a ~]# chown oracle:dba /u02/dpdir
移行対象データの作成
ここまでに準備した領域に、移行対象のデータを作成します。
Oracle Database インスタンスに接続します。
[oracle@ora-sv-a ~]$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Sun Sep 4 17:24:20 2016 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options SQL> col host_name for a10 SQL> select host_name,instance_name,status from v$instance; HOST_NAME INSTANCE_NAME STATUS ---------- ---------------- ------------ ora-sv-a oradba OPEN SQL>
ASM Disk Group「DG_ABS」に、Oracle の表領域「TS_NTNX」を作成します。
SQL> create tablespace TS_NTNX datafile '+DG_ABS' size 200M; Tablespace created.
表領域「TS_NTNX」をデフォルト表領域とするユーザ「ntnx」を作成して、そのユーザで接続します。
SQL> create user ntnx identified by ntnx1234 default tablespace ts_ntnx; User created. SQL> grant connect,resource,dba to ntnx; Grant succeeded. SQL> conn ntnx/ntnx1234 Connected. SQL> show user USER is "NTNX"
テーブルを作成して、何件かレコードを登録します。
SQL> create table tab01(c1 number, c2 varchar(20)); Table created. SQL> insert into tab01 values(1,'poke'); 1 row created. SQL> insert into tab01 values(2,'go'); 1 row created. SQL> commit; Commit complete. SQL> select * from ntnx.tab01; C1 C2 ---------- -------------------- 1 poke 2 go
テーブルは、ABS ボリューム上にある TS_NTNX 表領域に作成されています。
SQL> col TABLESPACE_NAME for a10 SQL> col TABLE_NAME for a10 SQL> select TABLESPACE_NAME,TABLE_NAME from user_tables; TABLESPACE TABLE_NAME ---------- ---------- TS_NTNX TAB01 SQL> quit
ASM Disk Group「DG_ABS」には、「TS_NTNX」表領域だけ格納されています。この「TS_NTNX」表領域を、別の DB サーバに移行します。
SQL> select TABLESPACE_NAME,FILE_NAME from dba_data_files; TABLESPACE FILE_NAME ---------- -------------------------------------------------- SYSTEM +DG_LOCAL/ORADBA/DATAFILE/system.258.921596971 SYSAUX +DG_LOCAL/ORADBA/DATAFILE/sysaux.257.921596925 UNDOTBS1 +DG_LOCAL/ORADBA/DATAFILE/undotbs1.260.921597033 USERS +DG_LOCAL/ORADBA/DATAFILE/users.259.921597027 EXAMPLE +DG_LOCAL/ORADBA/DATAFILE/example.270.921597263 TS_NTNX +DG_ABS/ORADBA/DATAFILE/ts_ntnx.256.921691481 6 rows selected.
つづく。