Skip to main content
Enterprise applications
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

Oracleデータベースホストのデータコピー

共同作成者

データベースレベルの移行と同様に、ホストレイヤでの移行では、ストレージベンダーに依存しないアプローチが提供されます。

言い換えれば、いつか「ファイルをコピーするだけ」が最良のオプションです。

このローテクなアプローチは基本的すぎるように思われるかもしれませんが、特別なソフトウェアは必要なく、プロセス中に元のデータに安全に触れることができないため、大きな利点があります。主な制限事項は、ファイルコピーデータの移行はシステムの停止を伴うプロセスであることです。これは、コピー処理を開始する前にデータベースをシャットダウンする必要があるためです。ファイル内の変更を同期する適切な方法はないため、コピーを開始する前にファイルを完全に休止する必要があります。

コピー処理で必要なシャットダウンが望ましくない場合、次に推奨されるホストベースのオプションは論理ボリュームマネージャ(LVM)を利用することです。Oracle ASMを含む多くのLVMオプションは、すべて同様の機能を備えていますが、いくつかの制限事項を考慮する必要があります。ほとんどの場合、移行はダウンタイムやシステム停止なしで完了します。

ファイルシステムからファイルシステムへのコピー

単純なコピー操作の有用性を過小評価してはなりません。この処理はコピープロセス中のダウンタイムを必要としますが、信頼性の高いプロセスであり、オペレーティングシステム、データベース、ストレージシステムに関する特別な専門知識は必要ありません。さらに、元のデータに影響を与えないため、非常に安全です。通常'システム管理者は'ソース・ファイル・システムを読み取り専用としてマウントするように変更してから'サーバを再起動して'現在のデータに損傷を与えないようにしますコピープロセスをスクリプト化して、ユーザーエラーのリスクなしにできるだけ迅速に実行できるようにすることができます。I/Oのタイプはデータの単純なシーケンシャル転送であるため、帯域幅効率に優れています。

次の例は、安全かつ迅速な移行のための1つのオプションを示しています。

環境

移行する環境は次のとおりです。

  • 現在のファイルシステム

    ontap-nfs1:/host1_oradata       52428800  16196928  36231872  31% /oradata
    ontap-nfs1:/host1_logs          49807360    548032  49259328   2% /logs
  • 新しいファイルシステム

    ontap-nfs1:/host1_logs_new      49807360       128  49807232   1% /new/logs
    ontap-nfs1:/host1_oradata_new   49807360       128  49807232   1% /new/oradata

概要

データベースは、データベースをシャットダウンしてファイルをコピーするだけで移行できますが、多数のデータベースを移行する必要がある場合や、ダウンタイムを最小限に抑えることが重要な場合は、プロセスを簡単にスクリプト化できます。スクリプトを使用すると、ユーザエラーの可能性も低くなります。

このスクリプトの例では、次の処理が自動化されています。

  • データベースのシャットダウン

  • 既存のファイルシステムの読み取り専用状態への変換

  • ソース・ファイル・システムからターゲット・ファイル・システムへのすべてのデータのコピー(すべてのファイル権限を保持)

  • 古いファイルシステムと新しいファイルシステムのアンマウント

  • 以前のファイルシステムと同じパスでの新しいファイルシステムの再マウント

手順

  1. データベースをシャットダウンします。

    [root@host1 current]# ./dbshut.pl NTAP
    ORACLE_SID = [oracle] ? The Oracle base has been set to /orabin
    SQL*Plus: Release 12.1.0.2.0 Production on Thu Dec 3 15:58:48 2015
    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, OLAP, Advanced Analytics and Real Application Testing options
    SQL> Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
    With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
    NTAP shut down
  2. ファイルシステムを読み取り専用に変換します。スクリプトを使用すると、に示すように、この処理をより迅速に実行できます。 "ファイルシステムを読み取り専用に変換"

    [root@host1 current]# ./mk.fs.readonly.pl /oradata
    /oradata unmounted
    /oradata mounted read-only
    [root@host1 current]# ./mk.fs.readonly.pl /logs
    /logs unmounted
    /logs mounted read-only
  3. ファイルシステムが読み取り専用になったことを確認します。

    ontap-nfs1:/host1_oradata on /oradata type nfs (ro,bg,vers=3,rsize=65536,wsize=65536,addr=172.20.101.10)
    ontap-nfs1:/host1_logs on /logs type nfs (ro,bg,vers=3,rsize=65536,wsize=65536,addr=172.20.101.10)
  4. ファイルシステムの内容を rsync コマンドを実行します

    [root@host1 current]# rsync -rlpogt --stats --progress --exclude=.snapshot /oradata/ /new/oradata/
    sending incremental file list
    ./
    NTAP/
    NTAP/IOPS.dbf
     10737426432 100%  153.50MB/s    0:01:06 (xfer#1, to-check=10/13)
    NTAP/iops.dbf.zip
        22823573 100%   12.09MB/s    0:00:01 (xfer#2, to-check=9/13)
    ...
    NTAP/undotbs02.dbf
      1073750016 100%  131.60MB/s    0:00:07 (xfer#10, to-check=1/13)
    NTAP/users01.dbf
         5251072 100%    3.95MB/s    0:00:01 (xfer#11, to-check=0/13)
    Number of files: 13
    Number of files transferred: 11
    Total file size: 18570092218 bytes
    Total transferred file size: 18570092218 bytes
    Literal data: 18570092218 bytes
    Matched data: 0 bytes
    File list size: 277
    File list generation time: 0.001 seconds
    File list transfer time: 0.000 seconds
    Total bytes sent: 18572359828
    Total bytes received: 228
    sent 18572359828 bytes  received 228 bytes  162204017.96 bytes/sec
    total size is 18570092218  speedup is 1.00
    [root@host1 current]# rsync -rlpogt --stats --progress --exclude=.snapshot /logs/ /new/logs/
    sending incremental file list
    ./
    NTAP/
    NTAP/1_22_897068759.dbf
        45523968 100%   95.98MB/s    0:00:00 (xfer#1, to-check=15/18)
    NTAP/1_23_897068759.dbf
        40601088 100%   49.45MB/s    0:00:00 (xfer#2, to-check=14/18)
    ...
    NTAP/redo/redo02.log
        52429312 100%   44.68MB/s    0:00:01 (xfer#12, to-check=1/18)
    NTAP/redo/redo03.log
        52429312 100%   68.03MB/s    0:00:00 (xfer#13, to-check=0/18)
    Number of files: 18
    Number of files transferred: 13
    Total file size: 527032832 bytes
    Total transferred file size: 527032832 bytes
    Literal data: 527032832 bytes
    Matched data: 0 bytes
    File list size: 413
    File list generation time: 0.001 seconds
    File list transfer time: 0.000 seconds
    Total bytes sent: 527098156
    Total bytes received: 278
    sent 527098156 bytes  received 278 bytes  95836078.91 bytes/sec
    total size is 527032832  speedup is 1.00
  5. 古いファイルシステムをアンマウントし、コピーしたデータを再配置します。スクリプトを使用すると、に示すように、この処理をより迅速に実行できます。 "ファイルシステムの置き換え"

    [root@host1 current]# ./swap.fs.pl /logs,/new/logs
    /new/logs unmounted
    /logs unmounted
    Updated /logs mounted
    [root@host1 current]# ./swap.fs.pl /oradata,/new/oradata
    /new/oradata unmounted
    /oradata unmounted
    Updated /oradata mounted
  6. 新しいファイルシステムが所定の位置にあることを確認します。

    ontap-nfs1:/host1_logs_new on /logs type nfs (rw,bg,vers=3,rsize=65536,wsize=65536,addr=172.20.101.10)
    ontap-nfs1:/host1_oradata_new on /oradata type nfs (rw,bg,vers=3,rsize=65536,wsize=65536,addr=172.20.101.10)
  7. データベースを起動します。

    [root@host1 current]# ./dbstart.pl NTAP
    ORACLE_SID = [oracle] ? The Oracle base has been set to /orabin
    SQL*Plus: Release 12.1.0.2.0 Production on Thu Dec 3 16:10:07 2015
    Copyright (c) 1982, 2014, Oracle.  All rights reserved.
    Connected to an idle instance.
    SQL> ORACLE instance started.
    Total System Global Area  805306368 bytes
    Fixed Size                  2929552 bytes
    Variable Size             390073456 bytes
    Database Buffers          406847488 bytes
    Redo Buffers                5455872 bytes
    Database mounted.
    Database opened.
    SQL> Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
    With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
    NTAP started

カットオーバーを完全に自動化

このサンプルスクリプトでは、データベースSIDの引数に続いて、共通区切りのファイルシステムペアを指定します。上記の例では、コマンドは次のように実行されます。

[root@host1 current]# ./migrate.oracle.fs.pl NTAP /logs,/new/logs /oradata,/new/oradata

このサンプルスクリプトを実行すると、次のシーケンスが試行されます。いずれかの手順でエラーが発生すると終了します。

  1. データベースをシャットダウンします。

  2. 現在のファイルシステムを読み取り専用ステータスに変換します。

  3. カンマで区切られた各ファイルシステム引数のペアを使用し、最初のファイルシステムを2番目のファイルシステムに同期します。

  4. 以前のファイルシステムをディスマウントします。

  5. を更新します /etc/fstab ファイルは次のとおりです。

    1. バックアップの作成場所 /etc/fstab.bak

    2. 以前のファイルシステムと新しいファイルシステムの前のエントリをコメントアウトします。

    3. 古いマウントポイントを使用する新しいファイルシステム用の新しいエントリを作成します。

  6. ファイルシステムをマウントします。

  7. データベースを起動します。

次のテキストは、このスクリプトの実行例を示しています。

[root@host1 current]# ./migrate.oracle.fs.pl NTAP /logs,/new/logs /oradata,/new/oradata
ORACLE_SID = [oracle] ? The Oracle base has been set to /orabin
SQL*Plus: Release 12.1.0.2.0 Production on Thu Dec 3 17:05:50 2015
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, OLAP, Advanced Analytics and Real Application Testing options
SQL> Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
NTAP shut down
sending incremental file list
./
NTAP/
NTAP/1_22_897068759.dbf
    45523968 100%  185.40MB/s    0:00:00 (xfer#1, to-check=15/18)
NTAP/1_23_897068759.dbf
    40601088 100%   81.34MB/s    0:00:00 (xfer#2, to-check=14/18)
...
NTAP/redo/redo02.log
    52429312 100%   70.42MB/s    0:00:00 (xfer#12, to-check=1/18)
NTAP/redo/redo03.log
    52429312 100%   47.08MB/s    0:00:01 (xfer#13, to-check=0/18)
Number of files: 18
Number of files transferred: 13
Total file size: 527032832 bytes
Total transferred file size: 527032832 bytes
Literal data: 527032832 bytes
Matched data: 0 bytes
File list size: 413
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 527098156
Total bytes received: 278
sent 527098156 bytes  received 278 bytes  150599552.57 bytes/sec
total size is 527032832  speedup is 1.00
Succesfully replicated filesystem /logs to /new/logs
sending incremental file list
./
NTAP/
NTAP/IOPS.dbf
 10737426432 100%  176.55MB/s    0:00:58 (xfer#1, to-check=10/13)
NTAP/iops.dbf.zip
    22823573 100%    9.48MB/s    0:00:02 (xfer#2, to-check=9/13)
... NTAP/undotbs01.dbf
   309338112 100%   70.76MB/s    0:00:04 (xfer#9, to-check=2/13)
NTAP/undotbs02.dbf
  1073750016 100%  187.65MB/s    0:00:05 (xfer#10, to-check=1/13)
NTAP/users01.dbf
     5251072 100%    5.09MB/s    0:00:00 (xfer#11, to-check=0/13)
Number of files: 13
Number of files transferred: 11
Total file size: 18570092218 bytes
Total transferred file size: 18570092218 bytes
Literal data: 18570092218 bytes
Matched data: 0 bytes
File list size: 277
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 18572359828
Total bytes received: 228
sent 18572359828 bytes  received 228 bytes  177725933.55 bytes/sec
total size is 18570092218  speedup is 1.00
Succesfully replicated filesystem /oradata to /new/oradata
swap 0 /logs /new/logs
/new/logs unmounted
/logs unmounted
Mounted updated /logs
Swapped filesystem /logs for /new/logs
swap 1 /oradata /new/oradata
/new/oradata unmounted
/oradata unmounted
Mounted updated /oradata
Swapped filesystem /oradata for /new/oradata
ORACLE_SID = [oracle] ? The Oracle base has been set to /orabin
SQL*Plus: Release 12.1.0.2.0 Production on Thu Dec 3 17:08:59 2015
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
Connected to an idle instance.
SQL> ORACLE instance started.
Total System Global Area  805306368 bytes
Fixed Size                  2929552 bytes
Variable Size             390073456 bytes
Database Buffers          406847488 bytes
Redo Buffers                5455872 bytes
Database mounted.
Database opened.
SQL> Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
NTAP started
[root@host1 current]#

Oracle ASM spfileとpasswdの移行

ASMを含む移行を完了する際の難しさの1つに、ASM固有のspfileとパスワードファイルがあります。デフォルトでは、これらの重要なメタデータファイルは、最初に定義されたASMディスクグループに作成されます。特定のASMディスクグループを退避して削除する必要がある場合は、そのASMインスタンスを制御するspfileファイルとパスワードファイルを再配置する必要があります。

これらのファイルの再配置が必要になる別のユースケースとして、SnapManager for OracleやSnapCenter Oracleプラグインなどのデータベース管理ソフトウェアを導入する場合があります。これらの製品の機能の1つは、データファイルをホストしているASM LUNの状態をリバートして、データベースを迅速にリストアすることです。そのためには、リストアを実行する前にASMディスクグループをオフラインにする必要があります。特定のデータベースのデータファイルが専用のASMディスクグループに分離されていれば、これは問題になりません。

そのディスクグループにASM spfile/passwdファイルも含まれている場合、ディスクグループをオフラインにするには、ASMインスタンス全体をシャットダウンするしかありません。これはシステムの停止を伴うプロセスであり、spfile/passwdファイルを再配置する必要があります。

環境

  1. データベースSID =トースト

  2. 現在のデータファイル: +DATA

  3. 現在のログファイルと制御ファイル +LOGS

  4. シンシイASMテイスククルウフノセツテイ +NEWDATA および +NEWLOGS

ASM spfile/passwdファイルの場所

これらのファイルは、システムを停止することなく再配置できます。ただし、安全のために、NetAppでは、ファイルが再配置され、構成が適切に更新されたことを確実に確認できるように、データベース環境をシャットダウンすることを推奨しています。サーバに複数のASMインスタンスが存在する場合は、この手順を繰り返す必要があります。

ASMインスタンスの識別

に記録されたデータに基づいてASMインスタンスを特定します。 oratab ファイル。ASMインスタンスは+記号で示されます。

-bash-4.1$ cat /etc/oratab | grep '^+'
+ASM:/orabin/grid:N             # line added by Agent

このサーバーには+asmというASMインスタンスが1つあります。

すべてのデータベースがシャットダウンされていることを確認する

表示されるSMONプロセスは、使用中のASMインスタンスのSMONだけです。別のSMONプロセスが存在する場合は、データベースが実行中であることを示します。

-bash-4.1$ ps -ef | grep smon
oracle     857     1  0 18:26 ?        00:00:00 asm_smon_+ASM

SMONプロセスはASMインスタンス自体のみです。これは、他のデータベースが実行されていないことを意味し、データベースの処理を中断するリスクを伴わずに、安全に処理を続行できることを意味します。

ファイルの検索

次のコマンドを使用して、ASM spfileおよびパスワードファイルの現在の場所を特定します。 spget および pwget コマンド

bash-4.1$ asmcmd
ASMCMD> spget
+DATA/spfile.ora
ASMCMD> pwget --asm
+DATA/orapwasm

これらのファイルは両方とも、 +DATA ディスクグループ:

ファイルのコピー

次のコマンドを使用して、ファイルを新しいASMディスクグループにコピーします。 spcopy および pwcopy コマンド新しいディスクグループが最近作成され、現在空の場合は、最初にマウントする必要があります。

ASMCMD> mount NEWDATA
ASMCMD> spcopy +DATA/spfile.ora +NEWDATA/spfile.ora
copying +DATA/spfile.ora -> +NEWDATA/spfilea.ora
ASMCMD> pwcopy +DATA/orapwasm +NEWDATA/orapwasm
copying +DATA/orapwasm -> +NEWDATA/orapwasm

ファイルは次の場所からコピーされました: +DATA 終了: +NEWDATA

ASMインスタンスの更新

ASMインスタンスを更新して、場所の変更を反映する必要があります。。 spset および pwset コマンドは、ASMディスクグループの起動に必要なASMメタデータを更新します。

ASMCMD> spset +NEWDATA/spfile.ora
ASMCMD> pwset --asm +NEWDATA/orapwasm

更新ファイルを使用したASMのアクティブ化

この時点で、ASMインスタンスは引き続きこれらのファイルの以前の場所を使用します。新しい場所からファイルを強制的に再読み込みし、以前のファイルのロックを解除するには、インスタンスを再起動する必要があります。

-bash-4.1$ sqlplus / as sysasm
SQL> shutdown immediate;
ASM diskgroups volume disabled
ASM diskgroups dismounted
ASM instance shutdown
SQL> startup
ASM instance started
Total System Global Area 1140850688 bytes
Fixed Size                  2933400 bytes
Variable Size            1112751464 bytes
ASM Cache                  25165824 bytes
ORA-15032: not all alterations performed
ORA-15017: diskgroup "NEWDATA" cannot be mounted
ORA-15013: diskgroup "NEWDATA" is already mounted

古いspfileファイルとパスワードファイルを削除する

手順が正常に実行されると、以前のファイルはロックされなくなり、削除できるようになります。

-bash-4.1$ asmcmd
ASMCMD> rm +DATA/spfile.ora
ASMCMD> rm +DATA/orapwasm

Oracle ASMカラASMヘノコヒイ

Oracle ASMは、基本的に軽量なボリュームマネージャとファイルシステムを統合したものです。ファイルシステムはすぐには認識されないため、RMANを使用してコピー処理を実行する必要があります。コピーベースの移動プロセスは安全でシンプルですが、システム停止が発生することがあります。システム停止を最小限に抑えることはできますが、完全に排除することはできません。

ASMベースのデータベースを無停止で移行する場合は、ASMの機能を活用して、古いLUNを削除しながらASMエクステントを新しいLUNにリバランシングすることを推奨します。これは一般に安全でノンストップオペレーションですが、バックアウトパスは提供されません。機能またはパフォーマンスの問題が発生した場合、唯一の選択肢はデータをソースに戻すことです。

このリスクを回避するには、データを移動するのではなく、データベースを新しい場所にコピーして、元のデータに変更を加えないようにします。データベースは、稼働を開始する前に新しい場所で完全にテストすることができ、問題が見つかった場合は、元のデータベースをフォールバックオプションとして使用できます。

この手順は、RMANに関連する多数のオプションの1つです。最初のバックアップが作成され、ログ再生によって後で同期される2段階のプロセスが可能になります。このプロセスでは、最初のベースラインコピーの実行中もデータベースの運用を維持し、データを提供できるため、ダウンタイムを最小限に抑えることが推奨されます。

データベースコピー

Oracle RMANは、ASMディスクグループに現在配置されているソースデータベースのレベル0(完全)コピーを作成します。 +DATA 次の場所に移動します: +NEWDATA

-bash-4.1$ rman target /
Recovery Manager: Release 12.1.0.2.0 - Production on Sun Dec 6 17:40:03 2015
Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.
connected to target database: TOAST (DBID=2084313411)
RMAN> backup as copy incremental level 0 database format '+NEWDATA' tag 'ONTAP_MIGRATION';
Starting backup at 06-DEC-15
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=302 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=+DATA/TOAST/DATAFILE/system.262.897683141
...
input datafile file number=00004 name=+DATA/TOAST/DATAFILE/users.264.897683151
output file name=+NEWDATA/TOAST/DATAFILE/users.258.897759623 tag=ONTAP_MIGRATION RECID=5 STAMP=897759622
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting incremental level 0 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 06-DEC-15
channel ORA_DISK_1: finished piece 1 at 06-DEC-15
piece handle=+NEWDATA/TOAST/BACKUPSET/2015_12_06/nnsnn0_ontap_migration_0.262.897759623 tag=ONTAP_MIGRATION comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 06-DEC-15

アーカイブログの強制切り替え

コピーの完全な整合性を確保するために必要なすべてのデータがアーカイブログに含まれていることを確認するには、アーカイブログを強制的に切り替えます。このコマンドを使用しないと、REDOログにキーデータが残っている可能性があります。

RMAN> sql 'alter system archive log current';
sql statement: alter system archive log current

ソースデータベースのシャットダウン

データベースがシャットダウンされ、アクセスが制限された読み取り専用モードになるため、システムが停止します。ソースデータベースをシャットダウンするには、次のコマンドを実行します。

RMAN> shutdown immediate;
using target database control file instead of recovery catalog
database closed
database dismounted
Oracle instance shut down
RMAN> startup mount;
connected to target database (not started)
Oracle instance started
database mounted
Total System Global Area     805306368 bytes
Fixed Size                     2929552 bytes
Variable Size                390073456 bytes
Database Buffers             406847488 bytes
Redo Buffers                   5455872 bytes

制御ファイルのバックアップ

移行を中止して元のストレージの場所に戻す必要がある場合に備えて、制御ファイルをバックアップする必要があります。バックアップ制御ファイルのコピーは100%必要ではありませんが、データベースファイルの場所を元の場所にリセットする処理が簡単になります。

RMAN> backup as copy current controlfile format '/tmp/TOAST.ctrl';
Starting backup at 06-DEC-15
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=358 device type=DISK
channel ORA_DISK_1: starting datafile copy
copying current control file
output file name=/tmp/TOAST.ctrl tag=TAG20151206T174753 RECID=6 STAMP=897760073
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 06-DEC-15

パラメータの更新

現在のspfileには、古いASMディスクグループ内の現在の場所にある制御ファイルへの参照が含まれています。編集する必要があります。これは、中間のpfileバージョンを編集することで簡単に実行できます。

RMAN> create pfile='/tmp/pfile' from spfile;
Statement processed

pfileの更新

古いASMディスクグループを参照しているすべてのパラメータを更新し、新しいASMディスクグループ名を反映させます。次に、更新されたpfileを保存します。次のことを確認します。 db_create パラメータが存在します。

次の例では、 +DATA 変更されました +NEWDATA 黄色で強調表示されます。主なパラメータは次の2つです。 db_create 正しい場所に新しいファイルを作成するパラメータ。

*.compatible='12.1.0.2.0'
*.control_files='+NEWLOGS/TOAST/CONTROLFILE/current.258.897683139'
*.db_block_size=8192
*. db_create_file_dest='+NEWDATA'
*. db_create_online_log_dest_1='+NEWLOGS'
*.db_domain=''
*.db_name='TOAST'
*.diagnostic_dest='/orabin'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=TOASTXDB)'
*.log_archive_dest_1='LOCATION=+NEWLOGS'
*.log_archive_format='%t_%s_%r.dbf'

init.oraファイルの更新

ほとんどのASMベースのデータベースでは、 init.ora ファイルはにあります $ORACLE_HOME/dbs ディレクトリ。ASMディスクグループ上のspfileへのポイントです。このファイルは、新しいASMディスクグループの場所にリダイレクトする必要があります。

-bash-4.1$ cd $ORACLE_HOME/dbs
-bash-4.1$ cat initTOAST.ora
SPFILE='+DATA/TOAST/spfileTOAST.ora'

このファイルを次のように変更します。

SPFILE=+NEWLOGS/TOAST/spfileTOAST.ora

パラメータファイルの再作成

これで'編集したpfileのデータをspfileに入力する準備が整いました

RMAN> create spfile from pfile='/tmp/pfile';
Statement processed

新しいspfileの使用を開始するには'データベースを起動します

データベースを起動して、新しく作成されたspfileが使用されていること、およびシステムパラメータに対するそれ以降の変更が正しく記録されていることを確認します。

RMAN> startup nomount;
connected to target database (not started)
Oracle instance started
Total System Global Area     805306368 bytes
Fixed Size                     2929552 bytes
Variable Size                373296240 bytes
Database Buffers             423624704 bytes
Redo Buffers                   5455872 bytes

制御ファイルのリストア

RMANによって作成されたバックアップ制御ファイルは、RMANによって、新しいspfileに指定された場所に直接リストアすることもできます。

RMAN> restore controlfile from '+DATA/TOAST/CONTROLFILE/current.258.897683139';
Starting restore at 06-DEC-15
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=417 device type=DISK
channel ORA_DISK_1: copied control file copy
output file name=+NEWLOGS/TOAST/CONTROLFILE/current.273.897761061
Finished restore at 06-DEC-15

データベースをマウントし、新しい制御ファイルが使用されていることを確認します。

RMAN> alter database mount;
using target database control file instead of recovery catalog
Statement processed
SQL> show parameter control_files;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      +NEWLOGS/TOAST/CONTROLFILE/cur
                                                 rent.273.897761061

ログ再生

データベースは現在、古い場所にあるデータファイルを使用しています。コピーを使用する前に、コピーを同期する必要があります。最初のコピープロセスで時間が経過し、主にアーカイブログに変更が記録されました。これらの変更は次のように複製されます。

  1. アーカイブ・ログを含むRMAN増分バックアップを実行します。

    RMAN> backup incremental level 1 format '+NEWLOGS' for recover of copy with tag 'ONTAP_MIGRATION' database;
    Starting backup at 06-DEC-15
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=62 device type=DISK
    channel ORA_DISK_1: starting incremental level 1 datafile backup set
    channel ORA_DISK_1: specifying datafile(s) in backup set
    input datafile file number=00001 name=+DATA/TOAST/DATAFILE/system.262.897683141
    input datafile file number=00002 name=+DATA/TOAST/DATAFILE/sysaux.260.897683143
    input datafile file number=00003 name=+DATA/TOAST/DATAFILE/undotbs1.257.897683145
    input datafile file number=00004 name=+DATA/TOAST/DATAFILE/users.264.897683151
    channel ORA_DISK_1: starting piece 1 at 06-DEC-15
    channel ORA_DISK_1: finished piece 1 at 06-DEC-15
    piece handle=+NEWLOGS/TOAST/BACKUPSET/2015_12_06/nnndn1_ontap_migration_0.268.897762693 tag=ONTAP_MIGRATION comment=NONE
    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
    channel ORA_DISK_1: starting incremental level 1 datafile backup set
    channel ORA_DISK_1: specifying datafile(s) in backup set
    including current control file in backup set
    including current SPFILE in backup set
    channel ORA_DISK_1: starting piece 1 at 06-DEC-15
    channel ORA_DISK_1: finished piece 1 at 06-DEC-15
    piece handle=+NEWLOGS/TOAST/BACKUPSET/2015_12_06/ncsnn1_ontap_migration_0.267.897762697 tag=ONTAP_MIGRATION comment=NONE
    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
    Finished backup at 06-DEC-15
  2. ログを再生します。

    RMAN> recover copy of database with tag 'ONTAP_MIGRATION';
    Starting recover at 06-DEC-15
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting incremental datafile backup set restore
    channel ORA_DISK_1: specifying datafile copies to recover
    recovering datafile copy file number=00001 name=+NEWDATA/TOAST/DATAFILE/system.259.897759609
    recovering datafile copy file number=00002 name=+NEWDATA/TOAST/DATAFILE/sysaux.263.897759615
    recovering datafile copy file number=00003 name=+NEWDATA/TOAST/DATAFILE/undotbs1.264.897759619
    recovering datafile copy file number=00004 name=+NEWDATA/TOAST/DATAFILE/users.258.897759623
    channel ORA_DISK_1: reading from backup piece +NEWLOGS/TOAST/BACKUPSET/2015_12_06/nnndn1_ontap_migration_0.268.897762693
    channel ORA_DISK_1: piece handle=+NEWLOGS/TOAST/BACKUPSET/2015_12_06/nnndn1_ontap_migration_0.268.897762693 tag=ONTAP_MIGRATION
    channel ORA_DISK_1: restored backup piece 1
    channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
    Finished recover at 06-DEC-15

アクティブ化

リストアされた制御ファイルは元の場所にあるデータ・ファイルを参照しており、コピーされたデータ・ファイルのパス情報も含まれています。

  1. アクティブなデータファイルを変更するには、 switch database to copy コマンドを実行します

    RMAN> switch database to copy;
    datafile 1 switched to datafile copy "+NEWDATA/TOAST/DATAFILE/system.259.897759609"
    datafile 2 switched to datafile copy "+NEWDATA/TOAST/DATAFILE/sysaux.263.897759615"
    datafile 3 switched to datafile copy "+NEWDATA/TOAST/DATAFILE/undotbs1.264.897759619"
    datafile 4 switched to datafile copy "+NEWDATA/TOAST/DATAFILE/users.258.897759623"

    アクティブなデータファイルがコピーされたデータファイルになりますが、最終的なREDOログに変更が含まれている可能性があります。

  2. 残りのログをすべて再生するには、 recover database コマンドを実行しますというメッセージが表示されます media recovery complete と表示され、プロセスは成功しました。

    RMAN> recover database;
    Starting recover at 06-DEC-15
    using channel ORA_DISK_1
    starting media recovery
    media recovery complete, elapsed time: 00:00:01
    Finished recover at 06-DEC-15

    このプロセスで変更されるのは、通常のデータファイルの場所だけです。一時データファイルの名前は変更する必要がありますが、一時データファイルであるためコピーする必要はありません。データベースは現在ダウンしているため、一時データファイルにアクティブなデータはありません。

  3. 一時データファイルを移動するには、まずその場所を特定します。

    RMAN> select file#||' '||name from v$tempfile;
    FILE#||''||NAME
    --------------------------------------------------------------------------------
    1 +DATA/TOAST/TEMPFILE/temp.263.897683145
  4. 各データファイルに新しい名前を設定するRMANコマンドを使用して、一時データファイルを移動します。Oracle Managed Files(OMF)では、完全な名前は必要ありません。ASMディスクグループで十分です。データベースが開くと、OMFはASMディスクグループ上の適切な場所にリンクします。ファイルを再配置するには、次のコマンドを実行します。

    run {
    set newname for tempfile 1 to '+NEWDATA';
    switch tempfile all;
    }
    RMAN> run {
    2> set newname for tempfile 1 to '+NEWDATA';
    3> switch tempfile all;
    4> }
    executing command: SET NEWNAME
    renamed tempfile 1 to +NEWDATA in control file

Redoログの移行

移行プロセスはほぼ完了していますが、REDOログは元のASMディスクグループに残ります。REDOログは直接再配置できません。代わりに、新しいREDOログセットが作成されて設定に追加され、古いログがドロップされます。

  1. REDOロググループの数とそれぞれのグループ番号を確認します。

    RMAN> select group#||' '||member from v$logfile;
    GROUP#||''||MEMBER
    --------------------------------------------------------------------------------
    1 +DATA/TOAST/ONLINELOG/group_1.261.897683139
    2 +DATA/TOAST/ONLINELOG/group_2.259.897683139
    3 +DATA/TOAST/ONLINELOG/group_3.256.897683139
  2. Redoログのサイズを入力します。

    RMAN> select group#||' '||bytes from v$log;
    GROUP#||''||BYTES
    --------------------------------------------------------------------------------
    1 52428800
    2 52428800
    3 52428800
  3. Redoログごとに、設定が一致する新しいグループを作成します。OMFを使用しない場合は、フルパスを指定する必要があります。また、この例では、 db_create_online_log パラメータ前述のように、このパラメータは+NEWLOGSに設定されています。この設定では、次のコマンドを使用して、ファイルの場所や特定のASMディスクグループを指定することなく、新しいオンラインログを作成できます。

    RMAN> alter database add logfile size 52428800;
    Statement processed
    RMAN> alter database add logfile size 52428800;
    Statement processed
    RMAN> alter database add logfile size 52428800;
    Statement processed
  4. データベースを開きます。

    SQL> alter database open;
    Database altered.
  5. 古いログを削除します。

    RMAN> alter database drop logfile group 1;
    Statement processed
  6. アクティブなログをドロップできないエラーが発生した場合は、次のログに切り替えてロックを解除し、グローバルチェックポイントを強制的に実行します。以下に例を示します。古い場所にあるログファイルグループ3を削除しようとしましたが、このログファイルにアクティブなデータが残っているため拒否されました。チェックポイントに続くログアーカイブでは、ログファイルを削除できます。

    RMAN> alter database drop logfile group 3;
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: failure of sql statement command at 12/08/2015 20:23:51
    ORA-01623: log 3 is current log for instance TOAST (thread 4) - cannot drop
    ORA-00312: online log 3 thread 1: '+LOGS/TOAST/ONLINELOG/group_3.259.897563549'
    RMAN> alter system switch logfile;
    Statement processed
    RMAN> alter system checkpoint;
    Statement processed
    RMAN> alter database drop logfile group 3;
    Statement processed
  7. 環境をレビューして、すべてのロケーションベースのパラメータが更新されていることを確認します。

    SQL> select name from v$datafile;
    SQL> select member from v$logfile;
    SQL> select name from v$tempfile;
    SQL> show parameter spfile;
    SQL> select name, value from v$parameter where value is not null;
  8. 次のスクリプトは、このプロセスを簡素化する方法を示しています。

    [root@host1 current]# ./checkdbdata.pl TOAST
    TOAST datafiles:
    +NEWDATA/TOAST/DATAFILE/system.259.897759609
    +NEWDATA/TOAST/DATAFILE/sysaux.263.897759615
    +NEWDATA/TOAST/DATAFILE/undotbs1.264.897759619
    +NEWDATA/TOAST/DATAFILE/users.258.897759623
    TOAST redo logs:
    +NEWLOGS/TOAST/ONLINELOG/group_4.266.897763123
    +NEWLOGS/TOAST/ONLINELOG/group_5.265.897763125
    +NEWLOGS/TOAST/ONLINELOG/group_6.264.897763125
    TOAST temp datafiles:
    +NEWDATA/TOAST/TEMPFILE/temp.260.897763165
    TOAST spfile
    spfile                               string      +NEWDATA/spfiletoast.ora
    TOAST key parameters
    control_files +NEWLOGS/TOAST/CONTROLFILE/current.273.897761061
    log_archive_dest_1 LOCATION=+NEWLOGS
    db_create_file_dest +NEWDATA
    db_create_online_log_dest_1 +NEWLOGS
  9. ASMディスクグループが完全に退避された場合は、次のコマンドを使用してアンマウントできます。 asmcmd。ただし、多くの場合、他のデータベースまたはASM spfile/passwdファイルに属するファイルが存在する可能性があります。

    -bash-4.1$ . oraenv
    ORACLE_SID = [TOAST] ? +ASM
    The Oracle base remains unchanged with value /orabin
    -bash-4.1$ asmcmd
    ASMCMD> umount DATA
    ASMCMD>

Oracle ASMからファイルシステムへのコピー

Oracle ASMからファイルシステムへのコピー手順は、ASMからASMへのコピー手順と非常によく似ていますが、利点と制限は似ています。主な違いは、ASMディスクグループではなく可視ファイルシステムを使用する場合の、さまざまなコマンドや設定パラメータの構文です。

データベースコピー

Oracle RMANを使用して、ASMディスクグループに現在配置されているソースデータベースのレベル0(完全)コピーを作成します。 +DATA 次の場所に移動します: /oradata

RMAN> backup as copy incremental level 0 database format '/oradata/TOAST/%U' tag 'ONTAP_MIGRATION';
Starting backup at 13-MAY-16
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=377 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=+ASM0/TOAST/system01.dbf
output file name=/oradata/TOAST/data_D-TOAST_I-2098173325_TS-SYSTEM_FNO-1_01r5fhjg tag=ONTAP_MIGRATION RECID=1 STAMP=911722099
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=+ASM0/TOAST/sysaux01.dbf
output file name=/oradata/TOAST/data_D-TOAST_I-2098173325_TS-SYSAUX_FNO-2_02r5fhjo tag=ONTAP_MIGRATION RECID=2 STAMP=911722106
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile copy
input datafile file number=00003 name=+ASM0/TOAST/undotbs101.dbf
output file name=/oradata/TOAST/data_D-TOAST_I-2098173325_TS-UNDOTBS1_FNO-3_03r5fhjt tag=ONTAP_MIGRATION RECID=3 STAMP=911722113
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile copy
copying current control file
output file name=/oradata/TOAST/cf_D-TOAST_id-2098173325_04r5fhk5 tag=ONTAP_MIGRATION RECID=4 STAMP=911722118
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=+ASM0/TOAST/users01.dbf
output file name=/oradata/TOAST/data_D-TOAST_I-2098173325_TS-USERS_FNO-4_05r5fhk6 tag=ONTAP_MIGRATION RECID=5 STAMP=911722118
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting incremental level 0 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 13-MAY-16
channel ORA_DISK_1: finished piece 1 at 13-MAY-16
piece handle=/oradata/TOAST/06r5fhk7_1_1 tag=ONTAP_MIGRATION comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 13-MAY-16

アーカイブログの強制切り替え

コピーの完全な整合性を確保するために必要なすべてのデータがアーカイブログに含まれていることを確認するには、アーカイブログの切り替えを強制する必要があります。このコマンドを使用しないと、REDOログにキーデータが残っている可能性があります。アーカイブログを強制的に切り替えるには、次のコマンドを実行します。

RMAN> sql 'alter system archive log current';
sql statement: alter system archive log current

ソースデータベースのシャットダウン

データベースがシャットダウンされ、アクセスが制限された読み取り専用モードになるため、システムが停止します。ソースデータベースをシャットダウンするには、次のコマンドを実行します。

RMAN> shutdown immediate;
using target database control file instead of recovery catalog
database closed
database dismounted
Oracle instance shut down
RMAN> startup mount;
connected to target database (not started)
Oracle instance started
database mounted
Total System Global Area     805306368 bytes
Fixed Size                  2929552 bytes
Variable Size             331353200 bytes
Database Buffers          465567744 bytes
Redo Buffers                5455872 bytes

制御ファイルのバックアップ

移行を中止して元のストレージの場所に戻す必要がある場合に備えて、制御ファイルをバックアップします。バックアップ制御ファイルのコピーは100%必要ではありませんが、データベースファイルの場所を元の場所にリセットする処理が簡単になります。

RMAN> backup as copy current controlfile format '/tmp/TOAST.ctrl';
Starting backup at 08-DEC-15
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
copying current control file
output file name=/tmp/TOAST.ctrl tag=TAG20151208T194540 RECID=30 STAMP=897939940
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 08-DEC-15

パラメータの更新

RMAN> create pfile='/tmp/pfile' from spfile;
Statement processed

pfileの更新

古いASMディスクグループを参照するすべてのパラメータは、関連性がなくなったときに更新し、場合によっては削除する必要があります。新しいファイルシステムパスを反映するように更新し、更新されたpfileを保存します。完全なターゲットパスが表示されていることを確認します。これらのパラメータを更新するには、次のコマンドを実行します。

*.audit_file_dest='/orabin/admin/TOAST/adump'
*.audit_trail='db'
*.compatible='12.1.0.2.0'
*.control_files='/logs/TOAST/arch/control01.ctl','/logs/TOAST/redo/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='TOAST'
*.diagnostic_dest='/orabin'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=TOASTXDB)'
*.log_archive_dest_1='LOCATION=/logs/TOAST/arch'
*.log_archive_format='%t_%s_%r.dbf'
*.open_cursors=300
*.pga_aggregate_target=256m
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=768m
*.undo_tablespace='UNDOTBS1'

元のinit.oraファイルを無効にする

このファイルは、 $ORACLE_HOME/dbs ディレクトリとは、通常、ASMディスクグループ上のspfileへのポインタとして機能するpfile内にあります。元のspfileが使用されていないことを確認するには、名前を変更します。ただし、このファイルは移行を中止する必要がある場合に必要になるため、削除しないでください。

[oracle@jfsc1 ~]$ cd $ORACLE_HOME/dbs
[oracle@jfsc1 dbs]$ cat initTOAST.ora
SPFILE='+ASM0/TOAST/spfileTOAST.ora'
[oracle@jfsc1 dbs]$ mv initTOAST.ora initTOAST.ora.prev
[oracle@jfsc1 dbs]$

パラメータファイルの再作成

これは'spfile再配置の最後の手順です元のspfileは使用されなくなり'中間ファイルを使用してデータベースが現在起動されています(マウントされていません)このファイルの内容は'次のようにして新しいspfileの場所に書き出すことができます

RMAN> create spfile from pfile='/tmp/pfile';
Statement processed

新しいspfileの使用を開始するには'データベースを起動します

中間ファイルのロックを解除するには、データベースを起動し、新しいspfileファイルのみを使用してデータベースを起動する必要があります。データベースを起動すると、新しいspfileの場所が正しいことと、そのデータが有効であることも証明されます。

RMAN> shutdown immediate;
Oracle instance shut down
RMAN> startup nomount;
connected to target database (not started)
Oracle instance started
Total System Global Area     805306368 bytes
Fixed Size                     2929552 bytes
Variable Size                331353200 bytes
Database Buffers             465567744 bytes
Redo Buffers                   5455872 bytes

制御ファイルのリストア

バックアップ制御ファイルがパスに作成されました /tmp/TOAST.ctrl 手順の初期段階。新しいspfileでは、制御ファイルの場所を次のように定義します。 /logfs/TOAST/ctrl/ctrlfile1.ctrl および /logfs/TOAST/redo/ctrlfile2.ctrl。ただし、これらのファイルはまだ存在しません。

  1. このコマンドは、spfileに定義されているパスに制御ファイルのデータをリストアします。

    RMAN> restore controlfile from '/tmp/TOAST.ctrl';
    Starting restore at 13-MAY-16
    using channel ORA_DISK_1
    channel ORA_DISK_1: copied control file copy
    output file name=/logs/TOAST/arch/control01.ctl
    output file name=/logs/TOAST/redo/control02.ctl
    Finished restore at 13-MAY-16
  2. mountコマンドを問題して、制御ファイルが正しく検出され、有効なデータが含まれていることを確認します。

    RMAN> alter database mount;
    Statement processed
    released channel: ORA_DISK_1

    を検証するには control_files パラメータを指定して、次のコマンドを実行します。

    SQL> show parameter control_files;
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    control_files                        string      /logs/TOAST/arch/control01.ctl
                                                     , /logs/TOAST/redo/control02.c
                                                     tl

ログ再生

データベースは現在、古い場所にあるデータファイルを使用しています。コピーを使用する前に、データファイルを同期する必要があります。最初のコピープロセスで時間が経過し、変更は主にアーカイブログに記録されました。これらの変更は、次の2つのステップで複製されます。

  1. アーカイブ・ログを含むRMAN増分バックアップを実行します。

    RMAN>  backup incremental level 1 format '/logs/TOAST/arch/%U' for recover of copy with tag 'ONTAP_MIGRATION' database;
    Starting backup at 13-MAY-16
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=124 device type=DISK
    channel ORA_DISK_1: starting incremental level 1 datafile backup set
    channel ORA_DISK_1: specifying datafile(s) in backup set
    input datafile file number=00001 name=+ASM0/TOAST/system01.dbf
    input datafile file number=00002 name=+ASM0/TOAST/sysaux01.dbf
    input datafile file number=00003 name=+ASM0/TOAST/undotbs101.dbf
    input datafile file number=00004 name=+ASM0/TOAST/users01.dbf
    channel ORA_DISK_1: starting piece 1 at 13-MAY-16
    channel ORA_DISK_1: finished piece 1 at 13-MAY-16
    piece handle=/logs/TOAST/arch/09r5fj8i_1_1 tag=ONTAP_MIGRATION comment=NONE
    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
    Finished backup at 13-MAY-16
    RMAN-06497: WARNING: control file is not current, control file AUTOBACKUP skipped
  2. ログを再生します。

    RMAN> recover copy of database with tag 'ONTAP_MIGRATION';
    Starting recover at 13-MAY-16
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting incremental datafile backup set restore
    channel ORA_DISK_1: specifying datafile copies to recover
    recovering datafile copy file number=00001 name=/oradata/TOAST/data_D-TOAST_I-2098173325_TS-SYSTEM_FNO-1_01r5fhjg
    recovering datafile copy file number=00002 name=/oradata/TOAST/data_D-TOAST_I-2098173325_TS-SYSAUX_FNO-2_02r5fhjo
    recovering datafile copy file number=00003 name=/oradata/TOAST/data_D-TOAST_I-2098173325_TS-UNDOTBS1_FNO-3_03r5fhjt
    recovering datafile copy file number=00004 name=/oradata/TOAST/data_D-TOAST_I-2098173325_TS-USERS_FNO-4_05r5fhk6
    channel ORA_DISK_1: reading from backup piece /logs/TOAST/arch/09r5fj8i_1_1
    channel ORA_DISK_1: piece handle=/logs/TOAST/arch/09r5fj8i_1_1 tag=ONTAP_MIGRATION
    channel ORA_DISK_1: restored backup piece 1
    channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
    Finished recover at 13-MAY-16
    RMAN-06497: WARNING: control file is not current, control file AUTOBACKUP skipped

アクティブ化

リストアされた制御ファイルは元の場所にあるデータ・ファイルを参照しており、コピーされたデータ・ファイルのパス情報も含まれています。

  1. アクティブなデータファイルを変更するには、 switch database to copy コマンドを実行します

    RMAN> switch database to copy;
    datafile 1 switched to datafile copy "/oradata/TOAST/data_D-TOAST_I-2098173325_TS-SYSTEM_FNO-1_01r5fhjg"
    datafile 2 switched to datafile copy "/oradata/TOAST/data_D-TOAST_I-2098173325_TS-SYSAUX_FNO-2_02r5fhjo"
    datafile 3 switched to datafile copy "/oradata/TOAST/data_D-TOAST_I-2098173325_TS-UNDOTBS1_FNO-3_03r5fhjt"
    datafile 4 switched to datafile copy "/oradata/TOAST/data_D-TOAST_I-2098173325_TS-USERS_FNO-4_05r5fhk6"
  2. データファイルの整合性は完全である必要がありますが、オンラインREDOログに記録された残りの変更を再生するには、最後に1つの手順を実行する必要があります。を使用します recover database これらの変更を再生し、コピーを元のコピーと100%同一にするコマンド。ただし、コピーはまだ開いていません。

    RMAN> recover database;
    Starting recover at 13-MAY-16
    using channel ORA_DISK_1
    starting media recovery
    archived log for thread 1 with sequence 28 is already on disk as file +ASM0/TOAST/redo01.log
    archived log file name=+ASM0/TOAST/redo01.log thread=1 sequence=28
    media recovery complete, elapsed time: 00:00:00
    Finished recover at 13-MAY-16

一時データファイルの再配置

  1. 元のディスクグループでまだ使用されている一時データファイルの場所を特定します。

    RMAN> select file#||' '||name from v$tempfile;
    FILE#||''||NAME
    --------------------------------------------------------------------------------
    1 +ASM0/TOAST/temp01.dbf
  2. データファイルを移動するには、次のコマンドを実行します。一時ファイルが多数ある場合は、テキスト・エディタを使用してRMANコマンドを作成し、それをカットアンドペーストします。

    RMAN> run {
    2> set newname for tempfile 1 to '/oradata/TOAST/temp01.dbf';
    3> switch tempfile all;
    4> }
    executing command: SET NEWNAME
    renamed tempfile 1 to /oradata/TOAST/temp01.dbf in control file

Redoログの移行

移行プロセスはほぼ完了していますが、REDOログは元のASMディスクグループに残ります。REDOログは直接再配置できません。代わりに、新しいREDOログセットが作成され、古いログがドロップされて設定に追加されます。

  1. REDOロググループの数とそれぞれのグループ番号を確認します。

    RMAN> select group#||' '||member from v$logfile;
    GROUP#||''||MEMBER
    --------------------------------------------------------------------------------
    1 +ASM0/TOAST/redo01.log
    2 +ASM0/TOAST/redo02.log
    3 +ASM0/TOAST/redo03.log
  2. Redoログのサイズを入力します。

    RMAN> select group#||' '||bytes from v$log;
    GROUP#||''||BYTES
    --------------------------------------------------------------------------------
    1 52428800
    2 52428800
    3 52428800
  3. Redoログごとに、新しいファイルシステムの場所を使用して、現在のRedoロググループと同じサイズを使用して新しいグループを作成します。

    RMAN> alter database add logfile '/logs/TOAST/redo/log00.rdo' size 52428800;
    Statement processed
    RMAN> alter database add logfile '/logs/TOAST/redo/log01.rdo' size 52428800;
    Statement processed
    RMAN> alter database add logfile '/logs/TOAST/redo/log02.rdo' size 52428800;
    Statement processed
  4. 以前のストレージにまだ配置されている古いログファイルグループを削除します。

    RMAN> alter database drop logfile group 4;
    Statement processed
    RMAN> alter database drop logfile group 5;
    Statement processed
    RMAN> alter database drop logfile group 6;
    Statement processed
  5. アクティブログのドロップをブロックするエラーが発生した場合は、次のログに強制的に切り替えてロックを解除し、グローバルチェックポイントを強制的に実行します。以下に例を示します。古い場所にあるログファイルグループ3を削除しようとしましたが、このログファイルにアクティブなデータが残っているため拒否されました。ログをアーカイブしたあとにチェックポイントを追加すると、ログファイルの削除が可能になります。

    RMAN> alter database drop logfile group 4;
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: failure of sql statement command at 12/08/2015 20:23:51
    ORA-01623: log 4 is current log for instance TOAST (thread 4) - cannot drop
    ORA-00312: online log 4 thread 1: '+NEWLOGS/TOAST/ONLINELOG/group_4.266.897763123'
    RMAN> alter system switch logfile;
    Statement processed
    RMAN> alter system checkpoint;
    Statement processed
    RMAN> alter database drop logfile group 4;
    Statement processed
  6. 環境をレビューして、すべてのロケーションベースのパラメータが更新されていることを確認します。

    SQL> select name from v$datafile;
    SQL> select member from v$logfile;
    SQL> select name from v$tempfile;
    SQL> show parameter spfile;
    SQL> select name, value from v$parameter where value is not null;
  7. 次のスクリプトは、このプロセスを簡単にする方法を示しています。

    [root@jfsc1 current]# ./checkdbdata.pl TOAST
    TOAST datafiles:
    /oradata/TOAST/data_D-TOAST_I-2098173325_TS-SYSTEM_FNO-1_01r5fhjg
    /oradata/TOAST/data_D-TOAST_I-2098173325_TS-SYSAUX_FNO-2_02r5fhjo
    /oradata/TOAST/data_D-TOAST_I-2098173325_TS-UNDOTBS1_FNO-3_03r5fhjt
    /oradata/TOAST/data_D-TOAST_I-2098173325_TS-USERS_FNO-4_05r5fhk6
    TOAST redo logs:
    /logs/TOAST/redo/log00.rdo
    /logs/TOAST/redo/log01.rdo
    /logs/TOAST/redo/log02.rdo
    TOAST temp datafiles:
    /oradata/TOAST/temp01.dbf
    TOAST spfile
    spfile                               string      /orabin/product/12.1.0/dbhome_
                                                     1/dbs/spfileTOAST.ora
    TOAST key parameters
    control_files /logs/TOAST/arch/control01.ctl, /logs/TOAST/redo/control02.ctl
    log_archive_dest_1 LOCATION=/logs/TOAST/arch
  8. ASMディスクグループが完全に退避された場合は、次のコマンドを使用してアンマウントできます。 asmcmd。多くの場合、他のデータベースまたはASM spfile/passwdファイルに属するファイルは引き続き存在する可能性があります。

    -bash-4.1$ . oraenv
    ORACLE_SID = [TOAST] ? +ASM
    The Oracle base remains unchanged with value /orabin
    -bash-4.1$ asmcmd
    ASMCMD> umount DATA
    ASMCMD>

データファイルのクリーンアップ手順

Oracle RMANの使用方法によっては、移行プロセスの結果、構文が長いデータファイルや暗号化されたデータファイルが生成されることがあります。この例では、次のファイル形式でバックアップが実行されています: /oradata/TOAST/%U%U RMANが各データ・ファイルにデフォルトの一意の名前を作成する必要があることを示します。結果は次のテキストに示されているものと似ています。データファイルの従来の名前は、名前の中に埋め込まれています。これは、に示すスクリプト化されたアプローチを使用してクリーンアップできます。 "ASM移行クリーンアップ"

[root@jfsc1 current]# ./fixuniquenames.pl TOAST
#sqlplus Commands
shutdown immediate;
startup mount;
host mv /oradata/TOAST/data_D-TOAST_I-2098173325_TS-SYSTEM_FNO-1_01r5fhjg /oradata/TOAST/system.dbf
host mv /oradata/TOAST/data_D-TOAST_I-2098173325_TS-SYSAUX_FNO-2_02r5fhjo /oradata/TOAST/sysaux.dbf
host mv /oradata/TOAST/data_D-TOAST_I-2098173325_TS-UNDOTBS1_FNO-3_03r5fhjt /oradata/TOAST/undotbs1.dbf
host mv /oradata/TOAST/data_D-TOAST_I-2098173325_TS-USERS_FNO-4_05r5fhk6 /oradata/TOAST/users.dbf
alter database rename file '/oradata/TOAST/data_D-TOAST_I-2098173325_TS-SYSTEM_FNO-1_01r5fhjg' to '/oradata/TOAST/system.dbf';
alter database rename file '/oradata/TOAST/data_D-TOAST_I-2098173325_TS-SYSAUX_FNO-2_02r5fhjo' to '/oradata/TOAST/sysaux.dbf';
alter database rename file '/oradata/TOAST/data_D-TOAST_I-2098173325_TS-UNDOTBS1_FNO-3_03r5fhjt' to '/oradata/TOAST/undotbs1.dbf';
alter database rename file '/oradata/TOAST/data_D-TOAST_I-2098173325_TS-USERS_FNO-4_05r5fhk6' to '/oradata/TOAST/users.dbf';
alter database open;

Oracle ASMのリバランシング

前述したように、Oracle ASMディスクグループは、リバランシングプロセスを使用して新しいストレージシステムに透過的に移行できます。つまり、リバランシングプロセスでは、既存のLUNグループに同じサイズのLUNを追加してから、前のLUNを破棄する必要があります。Oracle ASMは、基盤となるデータを最適なレイアウトで新しいストレージに自動的に再配置し、完了すると古いLUNを解放します。

マイグレーションプロセスでは効率的なシーケンシャルI/Oを使用し、通常は原因パフォーマンスの中断は発生しませんが、必要に応じてマイグレーション速度を調整できます。

移行するデータを特定

SQL> select name||' '||group_number||' '||total_mb||' '||path||' '||header_status from v$asm_disk;
NEWDATA_0003 1 10240 /dev/mapper/3600a098038303537762b47594c315864 MEMBER
NEWDATA_0002 1 10240 /dev/mapper/3600a098038303537762b47594c315863 MEMBER
NEWDATA_0000 1 10240 /dev/mapper/3600a098038303537762b47594c315861 MEMBER
NEWDATA_0001 1 10240 /dev/mapper/3600a098038303537762b47594c315862 MEMBER
SQL> select group_number||' '||name from v$asm_diskgroup;
1 NEWDATA

新しいLUNを作成する

同じサイズの新しいLUNを作成し、必要に応じてユーザとグループのメンバーシップを設定します。LUNはと表示されます。 CANDIDATE ディスク:

SQL> select name||' '||group_number||' '||total_mb||' '||path||' '||header_status from v$asm_disk;
 0 0 /dev/mapper/3600a098038303537762b47594c31586b CANDIDATE
 0 0 /dev/mapper/3600a098038303537762b47594c315869 CANDIDATE
 0 0 /dev/mapper/3600a098038303537762b47594c315858 CANDIDATE
 0 0 /dev/mapper/3600a098038303537762b47594c31586a CANDIDATE
NEWDATA_0003 1 10240 /dev/mapper/3600a098038303537762b47594c315864 MEMBER
NEWDATA_0002 1 10240 /dev/mapper/3600a098038303537762b47594c315863 MEMBER
NEWDATA_0000 1 10240 /dev/mapper/3600a098038303537762b47594c315861 MEMBER
NEWDATA_0001 1 10240 /dev/mapper/3600a098038303537762b47594c315862 MEMBER

新しいLUNの追加

追加処理と削除処理は同時に実行できますが、新しいLUNを追加する方が2つの手順で簡単に実行できます。まず、新しいLUNをディスクグループに追加します。この手順により、エクステントの半分が現在のASM LUNから新しいLUNに移行されます。

リバランシング電力は、データが転送される速度を示します。数値が大きいほど、データ転送の並列性が高くなります。移行は、効率的なシーケンシャルI/O処理を使用して実行されますが、原因のパフォーマンスに問題が生じることはほとんどありません。ただし、必要に応じて、進行中の移行のリバランシング機能を alter diskgroup [name] rebalance power [level] コマンドを実行します一般的な移行では、値5が使用されます。

SQL> alter diskgroup NEWDATA add disk '/dev/mapper/3600a098038303537762b47594c31586b' rebalance power 5;
Diskgroup altered.
SQL> alter diskgroup NEWDATA add disk '/dev/mapper/3600a098038303537762b47594c315869' rebalance power 5;
Diskgroup altered.
SQL> alter diskgroup NEWDATA add disk '/dev/mapper/3600a098038303537762b47594c315858' rebalance power 5;
Diskgroup altered.
SQL> alter diskgroup NEWDATA add disk '/dev/mapper/3600a098038303537762b47594c31586a' rebalance power 5;
Diskgroup altered.

動作の監視

リバランシング処理は、さまざまな方法で監視および管理できます。この例では、次のコマンドを使用しました。

SQL> select group_number,operation,state from v$asm_operation;
GROUP_NUMBER OPERA STAT
------------ ----- ----
           1 REBAL RUN
           1 REBAL WAIT

移行が完了しても、リバランシング処理は報告されません。

SQL> select group_number,operation,state from v$asm_operation;
no rows selected

古いLUNを削除する

移行は途中で完了しました。環境が健全であることを確認するために、いくつかの基本的なパフォーマンステストを実行することを推奨します。確認後、古いLUNを削除して残りのデータを再配置できます。これによってLUNがすぐに解放されるわけではないことに注意してください。drop処理は、最初にエクステントを再配置してからLUNを解放するようOracle ASMに通知します。

sqlplus / as sysasm
SQL> alter diskgroup NEWDATA drop disk NEWDATA_0000 rebalance power 5;
Diskgroup altered.
SQL> alter diskgroup NEWDATA drop disk NEWDATA_0001 rebalance power 5;
Diskgroup altered.
SQL> alter diskgroup newdata drop disk NEWDATA_0002 rebalance power 5;
Diskgroup altered.
SQL> alter diskgroup newdata drop disk NEWDATA_0003 rebalance power 5;
Diskgroup altered.

動作の監視

リバランシング処理は、さまざまな方法で監視および管理できます。この例では、次のコマンドを使用しました。

SQL> select group_number,operation,state from v$asm_operation;
GROUP_NUMBER OPERA STAT
------------ ----- ----
           1 REBAL RUN
           1 REBAL WAIT

移行が完了しても、リバランシング処理は報告されません。

SQL> select group_number,operation,state from v$asm_operation;
no rows selected

古いLUNを削除する

ディスクグループから古いLUNを削除する前に、ヘッダーのステータスを最後に確認する必要があります。ASMからLUNを解放すると、LUNの名前は表示されなくなり、ヘッダーステータスが FORMER。これは、これらのLUNをシステムから安全に削除できることを示します。

SQL> select name||' '||group_number||' '||total_mb||' '||path||' '||header_status from v$asm_disk;
NAME||''||GROUP_NUMBER||''||TOTAL_MB||''||PATH||''||HEADER_STATUS
--------------------------------------------------------------------------------
 0 0 /dev/mapper/3600a098038303537762b47594c315863 FORMER
 0 0 /dev/mapper/3600a098038303537762b47594c315864 FORMER
 0 0 /dev/mapper/3600a098038303537762b47594c315861 FORMER
 0 0 /dev/mapper/3600a098038303537762b47594c315862 FORMER
NEWDATA_0005 1 10240 /dev/mapper/3600a098038303537762b47594c315869 MEMBER
NEWDATA_0007 1 10240 /dev/mapper/3600a098038303537762b47594c31586a MEMBER
NEWDATA_0004 1 10240 /dev/mapper/3600a098038303537762b47594c31586b MEMBER
NEWDATA_0006 1 10240 /dev/mapper/3600a098038303537762b47594c315858 MEMBER
8 rows selected.

LVMの移行

ここに示す手順は、LVMベースのボリュームグループ移動の原則を示しています。 datavg。これらの例はLinux LVMを参考にしていますが、原則はAIX、HP-UX、VxVMにも当てはまります。正確なコマンドは異なる場合があります。

  1. 現在に含まれているLUNを特定します。 datavg ボリュームグループ:

    [root@host1 ~]# pvdisplay -C | grep datavg
      /dev/mapper/3600a098038303537762b47594c31582f datavg lvm2 a--  10.00g 10.00g
      /dev/mapper/3600a098038303537762b47594c31585a datavg lvm2 a--  10.00g 10.00g
      /dev/mapper/3600a098038303537762b47594c315859 datavg lvm2 a--  10.00g 10.00g
      /dev/mapper/3600a098038303537762b47594c31586c datavg lvm2 a--  10.00g 10.00g
  2. 物理サイズが同じか少し大きい新しいLUNを作成し、物理ボリュームとして定義します。

    [root@host1 ~]# pvcreate /dev/mapper/3600a098038303537762b47594c315864
      Physical volume "/dev/mapper/3600a098038303537762b47594c315864" successfully created
    [root@host1 ~]# pvcreate /dev/mapper/3600a098038303537762b47594c315863
      Physical volume "/dev/mapper/3600a098038303537762b47594c315863" successfully created
    [root@host1 ~]# pvcreate /dev/mapper/3600a098038303537762b47594c315862
      Physical volume "/dev/mapper/3600a098038303537762b47594c315862" successfully created
    [root@host1 ~]# pvcreate /dev/mapper/3600a098038303537762b47594c315861
      Physical volume "/dev/mapper/3600a098038303537762b47594c315861" successfully created
  3. 新しいボリュームをボリュームグループに追加します。

    [root@host1 tmp]# vgextend datavg /dev/mapper/3600a098038303537762b47594c315864
      Volume group "datavg" successfully extended
    [root@host1 tmp]# vgextend datavg /dev/mapper/3600a098038303537762b47594c315863
      Volume group "datavg" successfully extended
    [root@host1 tmp]# vgextend datavg /dev/mapper/3600a098038303537762b47594c315862
      Volume group "datavg" successfully extended
    [root@host1 tmp]# vgextend datavg /dev/mapper/3600a098038303537762b47594c315861
      Volume group "datavg" successfully extended
  4. 問題 pvmove コマンドを使用して、現在の各LUNのエクステントを新しいLUNに再配置します。。 - i [seconds] 引数は、操作の進行状況を監視します。

    [root@host1 tmp]# pvmove -i 10 /dev/mapper/3600a098038303537762b47594c31582f /dev/mapper/3600a098038303537762b47594c315864
      /dev/mapper/3600a098038303537762b47594c31582f: Moved: 0.0%
      /dev/mapper/3600a098038303537762b47594c31582f: Moved: 14.2%
      /dev/mapper/3600a098038303537762b47594c31582f: Moved: 28.4%
      /dev/mapper/3600a098038303537762b47594c31582f: Moved: 42.5%
      /dev/mapper/3600a098038303537762b47594c31582f: Moved: 57.1%
      /dev/mapper/3600a098038303537762b47594c31582f: Moved: 72.3%
      /dev/mapper/3600a098038303537762b47594c31582f: Moved: 87.3%
      /dev/mapper/3600a098038303537762b47594c31582f: Moved: 100.0%
    [root@host1 tmp]# pvmove -i 10 /dev/mapper/3600a098038303537762b47594c31585a /dev/mapper/3600a098038303537762b47594c315863
      /dev/mapper/3600a098038303537762b47594c31585a: Moved: 0.0%
      /dev/mapper/3600a098038303537762b47594c31585a: Moved: 14.9%
      /dev/mapper/3600a098038303537762b47594c31585a: Moved: 29.9%
      /dev/mapper/3600a098038303537762b47594c31585a: Moved: 44.8%
      /dev/mapper/3600a098038303537762b47594c31585a: Moved: 60.1%
      /dev/mapper/3600a098038303537762b47594c31585a: Moved: 75.8%
      /dev/mapper/3600a098038303537762b47594c31585a: Moved: 90.9%
      /dev/mapper/3600a098038303537762b47594c31585a: Moved: 100.0%
    [root@host1 tmp]# pvmove -i 10 /dev/mapper/3600a098038303537762b47594c315859 /dev/mapper/3600a098038303537762b47594c315862
      /dev/mapper/3600a098038303537762b47594c315859: Moved: 0.0%
      /dev/mapper/3600a098038303537762b47594c315859: Moved: 14.8%
      /dev/mapper/3600a098038303537762b47594c315859: Moved: 29.8%
      /dev/mapper/3600a098038303537762b47594c315859: Moved: 45.5%
      /dev/mapper/3600a098038303537762b47594c315859: Moved: 61.1%
      /dev/mapper/3600a098038303537762b47594c315859: Moved: 76.6%
      /dev/mapper/3600a098038303537762b47594c315859: Moved: 91.7%
      /dev/mapper/3600a098038303537762b47594c315859: Moved: 100.0%
    [root@host1 tmp]# pvmove -i 10 /dev/mapper/3600a098038303537762b47594c31586c /dev/mapper/3600a098038303537762b47594c315861
      /dev/mapper/3600a098038303537762b47594c31586c: Moved: 0.0%
      /dev/mapper/3600a098038303537762b47594c31586c: Moved: 15.0%
      /dev/mapper/3600a098038303537762b47594c31586c: Moved: 30.4%
      /dev/mapper/3600a098038303537762b47594c31586c: Moved: 46.0%
      /dev/mapper/3600a098038303537762b47594c31586c: Moved: 61.4%
      /dev/mapper/3600a098038303537762b47594c31586c: Moved: 77.2%
      /dev/mapper/3600a098038303537762b47594c31586c: Moved: 92.3%
      /dev/mapper/3600a098038303537762b47594c31586c: Moved: 100.0%
  5. このプロセスが完了したら、 vgreduce コマンドを実行します成功すると、LUNをシステムから安全に削除できるようになります。

    [root@host1 tmp]# vgreduce datavg /dev/mapper/3600a098038303537762b47594c31582f
    Removed "/dev/mapper/3600a098038303537762b47594c31582f" from volume group "datavg"
    [root@host1 tmp]# vgreduce datavg /dev/mapper/3600a098038303537762b47594c31585a
      Removed "/dev/mapper/3600a098038303537762b47594c31585a" from volume group "datavg"
    [root@host1 tmp]# vgreduce datavg /dev/mapper/3600a098038303537762b47594c315859
      Removed "/dev/mapper/3600a098038303537762b47594c315859" from volume group "datavg"
    [root@host1 tmp]# vgreduce datavg /dev/mapper/3600a098038303537762b47594c31586c
      Removed "/dev/mapper/3600a098038303537762b47594c31586c" from volume group "datavg"