3.24 UPGRADE CATALOG

目的

UPGRADE CATALOGコマンドを使用すると、リカバリ・カタログ・スキーマを、旧バージョンから、RMANクライアントで必要なバージョンにアップグレードできます。

前提条件

RMANがリカバリ・カタログ所有者としてリカバリ・カタログ・データベースに接続していて、リカバリ・カタログ・データベースがオープン状態である必要があります。仮想プライベート・カタログへの接続中は、UPGRADE CATALOGコマンドを使用できません(CREATE CATALOGコマンドを参照)。アップグレードできるのは基本カタログのみです。

リカバリ・カタログが、RMAN実行可能ファイルに必要なバージョンより後のバージョンになっていないことが必要であり、後のバージョンの場合は、エラーが発行されます。RMANは、アップグレード中に生成したエラー・メッセージをメッセージ・ログに表示します。

Oracle Database 10gリリース1のリカバリ・カタログ・スキーマには、CREATE TYPE権限が必要です。10gリリース1より前のリリースでリカバリ・カタログ所有者を作成し、このユーザーにRECOVERY_CATALOG_OWNERロールを付与しているとします。このロールにCREATE TYPE権限が含まれていない場合は、アップグレードを実行する前に、このユーザーに明示的にCREATE TYPEを付与する必要があります。

リカバリ・カタログをOracle Database 12cリリース2 (12.2)以降にアップグレードする場合、リカバリ・カタログ権限を管理するdbmsrmansys.sqlスクリプトを実行する必要があります。さらに、仮想プライベート・カタログが使用されている場合、仮想プライベート・カタログをアップグレードするdbmsrmanvpc.sqlスクリプトを実行する必要があります。Oracle Database 12cリリース1 (12.1.0.2)以降、リカバリ・カタログ・データベースはOracle Database Enterprise Editionを使用する必要があります。

使用上のノート

アップグレードを確定するため、UPGRADE CATALOGコマンドを続けて2回入力するように求められます。追加の確認ステップを省略するには、UPGRADE CATALOGコマンドを最初に実行する際、NOPROMPTオプションとともに入力します。

リカバリ・カタログがすでに現行の状態になっていれば、RMANはコマンドの実行を認めます。その結果、必要に応じてパッケージの再作成ができます。

ベース・リカバリ・カタログへのアップグレードで既存の仮想プライベート・カタログへの変更が必要な場合は、RMANが次にその仮想プライベート・カタログに接続したときに、これらの変更が自動的に行われます。

UPGRADE CATALOGコマンドでは、アップグレード用のスクリプトは実行されません。かわりに、RMANは各種のSQL DDL文をリカバリ・カタログに送信し、新規の表、ビュー、列などでリカバリ・カタログ・スキーマを更新します。

Oracle Database 23c以降では、リカバリ・カタログのアップグレードの実行中に、カタログ・スキーマ接続をより適切に制御できます。次のオプションを使用できます。
  • 特定の遅延時間の後にUPGRADE CATALOGコマンドを実行して、ブロックしている接続を完了できるようにします
  • すべてのブロックしている接続を強制的に終了することで、UPGRADE CATALOGコマンドを実行して、ただちに開始します
  • 特定の遅延時間の後、その遅延時間の終了時にブロックしている接続を強制的に終了してから、UPGRADE CATALOGコマンドを実行して開始します
  • UPGRADE CATALOGコマンドが実行中の場合、RMANをメンテナンス・モードでリカバリ・カタログに接続できます。ブロックまたは待機しているカタログ接続がリカバリ・カタログのアップグレードの進行に影響する場合は、カタログ・スキーマ接続に対してアクションを実行できます。

リカバリ・カタログのアップグレードの管理の詳細は、バックアップおよびリカバリ・ユーザーズ・ガイドカタログ・アップグレードの監視のためのメンテナンス・モードの使用を参照してください。

構文

upgradeCatalog::=

セマンティクス

NOPROMPT
カタログをアップグレードする際、確認ステップを省略します。
TABLESPACE tablespace_name NOPROMPT
指定した表領域をアップグレードする際、確認ステップを省略します。
構文要素 説明

NOPROMPT

カタログをアップグレードする際、確認ステップを省略します。

TABLESPACE tablespace_name NOPROMPT

指定した表領域をアップグレードする際、確認ステップを省略します。

WAIT integer

リカバリ・カタログのアップグレードを開始するための遅延時間を秒単位で指定します。

アップグレードを開始するための特定の遅延時間を導入するには、WAITオプションを使用します。これは、リカバリ・カタログのアップグレードを開始する前に、ブロックしている接続を完了する時間を確保する場合に特に役立ちます。ブロックしている接続とは、UPGRADE CATALOGコマンドの発行前に開始されたカタログ・スキーマ接続です。

待機時間の終了時にブロックしている接続がある場合、UPGRADE CATALOGコマンドはエラー・メッセージで終了します。

TERMINATE CONNECTED USERS

UPGRADE CATALOGコマンドをTERMINATE CONNECTED USERSオプションとともに使用して、ブロック接続を強制的に終了した直後にリカバリ・カタログのアップグレードを開始します。

WAITオプションとTERMINATE CONNECTED USERSオプションを組み合せて、特定の遅延後に、その遅延時間の終了時にすべてのブロックしている接続を強制的に終了してから、UPGRADE CATALOGを実行します。

例3-85 リカバリ・カタログのアップグレード

この例では、RMANをリカバリ・カタログ・データベースcatdbに接続し、それを新しいバージョンにアップグレードします。

RMAN> CONNECT CATALOG rco@catdb

recovery catalog database Password: password
connected to recovery catalog database 
PL/SQL package RCO.DBMS_RCVCAT version 11.02.00.04 in RCVCAT database is too old

RMAN> UPGRADE CATALOG;

recovery catalog owner is RCO 
enter UPGRADE CATALOG command again to confirm catalog upgrade 

RMAN> UPGRADE CATALOG;

recovery catalog upgraded to version 12.02.00.00
DBMS_RCVMAN package upgraded to version 12.02.00.00
DBMS_RCVCAT package upgraded to version 12.02.00.00

例3-86 UPGRADE CATALOGコマンドのデフォルト動作のオーバーライド

この例では、UPGRADE CATALOGコマンドは、指定された600秒の遅延時間の後に実行されます。RMANは、遅延時間の終了時にブロックしている接続を終了することで、カタログのアップグレードを完了します。
RMAN> CONNECT CATALOG rco@catdb;
UPGRADE CATALOG WAIT 600 TERMINATE CONNECTED USERS; 
UPGRADE CATALOG WAIT 600 TERMINATE CONNECTED USERS;

#RMAN-06008: connected to recovery catalog database

#RMAN-06435: recovery catalog owner is RMAN2
#RMAN-06442: enter UPGRADE CATALOG command again to confirm catalog upgrade

RMAN-07558: Following sessions are connected to catalog schema
RMAN-07559: =============================================
RMAN-07560: Logon_time             SID   Serial User
RMAN-07559: =============================================
RMAN-07561: 2023-08-01 11:17:13     53    34909 RMAN
RMAN-07561: 2023-08-01 11:18:12     54    29938 RMAN3
RMAN-07561: 2023-08-01 11:19:02     51     4252 RMAN
RMAN-07559: =============================================
RMAN-07556: Following sessions are blocking the catalog schema upgrade
RMAN-07559: =============================================
RMAN-07560: Logon_time             SID   Serial User
RMAN-07559: =============================================
RMAN-07561: 2023-08-01 11:17:13     53    34909 RMAN
RMAN-07559: =============================================
RMAN-07556: Following sessions are blocking the catalog schema upgrade
RMAN-07559: =============================================
RMAN-07560: Logon_time             SID   Serial User
RMAN-07559: =============================================
RMAN-07561: 2023-08-01 11:17:13     53    34909 RMAN
RMAN-06958: Executing: alter system kill session '53, 34909'
RMAN-07559: =============================================
#RMAN-06408: recovery catalog upgraded to version 23.01.00.23.02
#RMAN-06452: DBMS_RCVMAN package upgraded to version 23.01.00.23
#RMAN-06452: DBMS_RCVCAT package upgraded to version 23.01.00.23.
#
#Recovery Manager complete.