始める前に
Windows 環境で Oracle データベースを検出、保護、マウントする前に、次の点を確認してください。
データベース サーバーで次の設定を確認します。
Oracle データベースと Oracle Listener が稼働している(Windows サービスを確認)。
SID という名前の tns エントリがあることを確認します。tnsnames.ora ファイルは、
%ORACLE_HOME%\network\admin次のコマンドを実行して、tns エントリが有効であることを確認します。
%ORACLE_HOME%\bin\tnsping <SID>
ログモードがアーカイブログ モードに設定されているかどうかを確認します。
sql> archive log listデータベースが非アーカイブログ モードの場合は、アーカイブログ モードに戻します。
sql> shutdown immediate; sql> startup mount; sql> alter database archivelog; sql> alter database open;データベースの変更ブロック トラッキングを有効にします。データベースの BCT がオフになっていると、増分バックアップ時間に影響します。変更ブロック トラッキング機能は、Oracle Enterprise Edition で利用できます。SQL クエリを実行して、変更ブロックのトラッキングが有効になっていることを確認します。クエリを実行します。
sqlplus / as sysdba sql> select * from v$block_change_tracking;
変更ブロック トラッキングを有効にするには:
sql> alter database enable block change tracking
using file '<Oracle home directory>\orcl.bct';
Windows 環境で Oracle データベースをバックアップする
Windows 環境で Oracle データベースをバックアップする手順は次のとおりです。
アプライアンス管理コンソールで、Oracle データベースのアプリケーションの詳細と設定を設定します。
バックアップ プランを適用してデータベースを保護します。
報告されている問題
Oracle 19c SQL*Plus(sqlplus.exe)が、exit コマンドの実行時に Windows でハングすることがあります(ドキュメント ID 2820655.1)。このバグは Windows に固有のものです。Oracle は、この問題が SQL*Plus バージョン 19.10、19.11、19.12 で発生することを確認しています。Oracle は次のソリューションを提供しました。
- SQL*Plus 21.1 以降を使用する(または)
- パッチ 31466370 を適用します。このパッチは 19.11 と 19.13 で利用できます。
アーカイブログが Backup and DR で保護されていない場合に、RMAN を使用して Windows 環境の Oracle データベースをスケジュール設定されたバックアップ ポイントに手動で復元する
Windows 環境で Oracle データベース全体を復元するには:
Oracle データベースを標準マウントとしてマウントするの説明に従って、Backup and DR から Oracle サーバーにデータベース バックアップ スナップショットをマウントします。
データベース環境を設定し、Backup and DR のマウントされたボリュームのパラメータ ファイルを使用して、データベースを no-mount 状態で起動します(たとえば、マウントされたデータベース ボリュームを E: に設定します)。
sqlplus / as sysdba sql> startup nomount pfile='E:\<sid>___backup.ora';pfile から spfile を作成します。
sql> create spfile='%ORACLE_HOME%\database\spfile<sid>.ora' from pfile='E:\<sid>___backup.ora';nomount状態で spfile を使用してデータベースを起動します。sql> shutdown immediate; sql> startup nomount;Backup and DR でマウントされたボリュームから RMAN を使用して制御ファイルを復元します。
rman target / rman> restore controlfile from 'E:\cf-D_<sid>-id_<id>.ctl';データベースをマウントします。
rman> alter database mount;Backup and DR のマウントされたボリュームから RMAN にデータファイルとアーカイブ ファイル フォルダをカタログ化します。
rman> run { catalog start with 'E:\datafile' noprompt; catalog start with 'E:\archivelog' noprompt; }データベースを復元して復旧します。
rman> run { restore database; recover database; }リセットログ オプションを指定してデータベースを開きます。
rman> alter database open resetlogs;
Windows 環境で RMAN を使用して、Backup and DR で保護されたアーカイブログのロールフォワードにより、スケジュールされたバックアップ ポイントに Oracle データベースを手動で復元する
ソース データベース サーバーからバックアップをマウントして復元します。Oracle データベースを標準マウントとしてマウントするの説明に従って、Backup and DR から Oracle サーバーにバックアップ スナップショットをマウントします。
データベース環境を設定し、Backup and DR のマウントされたボリュームのパラメータ ファイルを使用して、データベースをマウントなしの状態で起動します。この例では、データベース バックアップは E:\ にマウントされ、保護されたアーカイブ ログは Z:\ にマウントされます。
sqlplus / as sysdbastartup nomount pfile='E:\<sid>___backup.ora';pfile から spfile を作成します。
sql> create spfile='%ORACLE_HOME%\database\spfile<sid>.ora' from pfile='E:\<sid>___backup.ora';nomount 状態で spfile を使用してデータベースを起動します。
```sql shutdown immediate; startup nomount; ```Backup and DR でマウントされたアーカイブ ログのバックアップから RMAN を使用して制御ファイルを復元します。
```rman rman target / rman> restore controlfile from 'Z:\cf-D_<sid>-id_<id>.ctl'; ```データベースをマウントします。
```rman rman> alter database mount; ```Backup and DR でマウントされたデータベース バックアップとアーカイブログ バックアップから、データファイルとアーカイブログ フォルダを RMAN にカタログ化します。
```rman rman> run { catalog start with 'E:\datafile' noprompt; catalog start with 'E:\archivelog' noprompt; catalog start with 'Z:\archivelog' noprompt; } ```データベースを復元して復旧します。
```rman rman> run { restore database; recover database; } ```特定の時点の復元を行うには、次のように recover コマンドを実行します。
```rman rman> run { restore database; recover database until time "to_date('<time stamp>','yyyymmddhh24mi')"; } ```リセットログ オプションを指定してデータベースを開きます。
```rman rman> alter database open resetlogs; ```データベースは読み取りと書き込みに使用できます。
データベース ボリュームがマウントされるのを監視する監視スクリプト
アプリケーション対応マウントを作成すると、監視スクリプトを使用して、Backup and DR からマウントされているボリュームと、実行中の Oracle プロセスを表示できます。アプリケーション認識型マウントについては、Oracle データベースを仮想アプリケーションとしてマウントするをご覧ください。
アプリケーション認識マウントを実行するときに、この監視スクリプトを使用できます。スクリプトの場所は、C:\Program Files\Backup and DR\scripts にする必要があります。Windows ホストで実行するスクリプトは、.bat ファイルまたは .vbs ファイルである必要があります。
```Windows
@echo off
:loop
echo. > watchtemp
echo ------------------ >> watchtemp
echo Oracle Processes >> watchtemp
echo ------------------ >> watchtemp
tasklist /svc | findstr oracle >> watchtemp
echo. >> watchtemp
echo ------------------ >> watchtemp
echo Backup and DR Mounts >> watchtemp
echo ------------------ >> watchtemp
wmic volume get label, name | findstr Backup and DR >> watchtemp
echo. >> watchtemp
cls
type watchtemp
timeout 2 > null
goto loop
```
出力は次のようになります。
Oracle Processes
------------------
oracle.exe 1492 OracleServiceORCL
oracle.exe 3768 OracleServiceTestDB
oracle.exe 872 OracleServiceTestDB2
------------------
Backup and DR Mounts
------------------
Backup and DR-Backup-ORCL D:\mount_1