0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

最小限の設定でスタンバイデータベースの差分同期を試す(Oracle Database 19c)

Last updated at Posted at 2023-02-03

差分同期を使ったデータベースの移行方法

 データベースの移行方法にはいくつか選択肢があります。差分適用が必要な場合には GoldenGate のようなツールを使う場合や、同一バージョンの環境では Data Guard 環境を構築して新しい環境にスイッチオーバー(またはフェイルオーバー)することもあります。本記事ではスタンバイ・データベースを使いながら、RMAN の RECOVER STANDBY DATABASE FROM SERVICE コマンドを使って Data Guard 設定を使わずに差分適用を行う方法について記載しています。

スタンバイ・データベースの作成

 スタンバイ・データベースの作成方法は Data Guard 環境と同じです。スタンバイ・データベースは制御ファイルがスタンバイ用になっている以外は元となるデータベースの物理コピーです。ここでは RMAN の DUPLICATE コマンドで稼働中のデータベース・インスタンスからスタンバイ・データベースを作成しています。tnsnames.ora ファイルには以下の設定が記載されています。

名前 説明
SRCDB コピー元となるデータベース
DSTDB コピー先(移行先)データベース

 NOLOGGING 操作でもREDOログが出力されるように元データベースで ALTER DATABASE FORCE LOGGING 文を実行しています。コピー元となるデータベースに必要な変更はこれだけです。

$ sqlplus SYS/<<password>>@SRCDB as sysdba
SQL> ALTER DATABASE FORCE LOGGING;

データベースが変更されました。

SQL> EXIT
$ 
$ rman target SYS/<<password>>@SRCDB auxiliary SYS/<<password>>@DSTDB
Recovery Manager: Release 19.0.0.0.0 - Production on  1 30 11:35:55 2023
Version 19.14.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

ターゲット・データベース: O19X (DBID=377954733)に接続されました
補助データベース: O19Xに接続されました(マウントされていません)

RMAN> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK;
Duplicate Db23-01-30で開始しています
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用していま 
チャネル: ORA_AUX_DISK_1が割り当てられました

... <<途中省略>> ...

5オブジェクトを削除しました

Duplicate Db23-01-30で終了しました

RMAN> EXIT
$

 DUPLICATE コマンドが正常に終了したらスタンバイ・データベースの完成です。インスタンスは MOUNT 状態で起動しています。

差分適用

 Data Guard 設定を行っているわけではないので元データベースの更新処理はスタンバイ・データベースに伝播しません。RMAN で移行先データベースに接続し、RECOVER STANDBY DATABASE FROM SERVICE コマンドを実行します。移行元データベースを指すサービス(下記の例では SRCDB)を指定します。

$ rman target  SYS/<<password>>@DSTDB

Recovery Manager: Release 19.0.0.0.0 - Production on  1 30 12:48:20 2023
Version 19.14.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

ターゲット・データベース: O19X (DBID=377954733、未オープン)に接続されました

RMAN> RECOVER STANDBY DATABASE FROM SERVICE SRCDB;

recover23-01-30で開始しています
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用していま 
Oracleインスタンスが起動しました
... <<途中省略>> ...

メディア・リカバリを開始しています

メディア・リカバリが完了しました。経過時間: 00:00:00
recover23-01-30で終了しました

RMAN> EXIT
$ 

差分の適用が完了しました。

フェイルオーバー

差分適用が完了したらスタンバイ・データベースをプライマリ・データベースに移行します。下記の例では状態を確認し、フェイルオーバーを実行しています。ALTER DATABASE FAILOVER 文は失敗しているので、ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE 文を実行して強制的に昇格処理を実行しています。その後、データベースをオープンして移行完了です。

$ sqlplus SYS/<<password>>@DSTDB as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on  1 31 10:58:36 2023
Version 19.14.0.0.0

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

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.14.0.0.0
に接続されました。
SQL> SELECT name, open_mode, database_role FROM v$database;

NAME      OPEN_MODE            DATABASE_ROLE
--------- -------------------- ----------------
O19X      MOUNTED              PHYSICAL STANDBY

SQL> ALTER DATABASE FAILOVER TO O19U;
ALTER DATABASE FAILOVER TO O19U
*
1でエラーが発生しました。:
ORA-00283: recovery session canceled due to errors
ORA-16436: ALTER DATABASE ... RECOVER FINISH could not start

SQL> ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;

データベースが変更されました。

SQL> ALTER DATABASE OPEN;

データベースが変更されました。

Author: Noriyoshi Shinoda / Date: February 3, 2023

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?