誤ってテーブルを削除(DROP)してしまった際、バックアップ全体を戻さずに特定の表だけを復元したいことがあります。本記事では Oracle RMAN を使用し、oracle sqlplus 等で確認した SCN を指定してテーブルを復旧する「テーブル単位のポイントインタイムリカバリ(Table PITR)」の手順を詳しく解説します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
1. 導入(要約)
「間違えて重要なテーブルを DROP してしまった」というトラブルは、DBAにとって最も焦る場面の一つです。通常、表の復旧にはデータベース全体のリカバリが必要ですが、RMANの RECOVER TABLE 機能を使えば、稼働中のデータベースを停止させることなく、特定のテーブルだけを過去の時点へ復元できます。この記事では、19c環境における Oracle RMAN を使った確実なリカバリ手順を紹介します。
2. 結論・最短手順(やることリスト)
RMANによるテーブルリカバリ(Table PITR)の最短ステップは以下の通りです。
- バックアップの確認: 削除時点より前のフルバックアップとアーカイブログがあることを確認。
- 復元ポイント(SCN)の特定: テーブル削除直前の SCN を特定する。
- 補助領域の準備: 補助インスタンスが使用する一時的なディスク領域を確保する。
- リカバリコマンドの実行: RMANで
RECOVER TABLEコマンドを実行する。 - データの確認: 本番環境にテーブルが再インポートされたことを確認する。
3. 背景と基礎:Table PITR とは?
Table PITR(Table Point-in-Time Recovery) は、Oracle 12c から導入された、特定の表や表パーティションのみを過去の時点へ復旧する機能です。
- 補助インスタンスの自動生成: RMANがバックグラウンドで一時的な「補助データベース」を自動で立ち上げます。
- 仕組み: 補助側でシステム表領域や対象の表領域のみをリストアし、指定した SCN までリカバリを行った後、Data Pump(expdp/impdp)を使用して対象テーブルを本番環境へ書き戻します。
4. 手順・実装:リカバリの前提条件
実機で実行する前に、以下の前提条件を確認してください。
- 対象OS: Oracle Linux 7/8/9 等
- 対象Edition: Enterprise Edition 限定(Standard Edition 2 では使用不可)
- DBモード: アーカイブログモードであること
- 権限:
SYSDBAまたはSYSBACKUP権限を持つユーザーで実行 - SCNの記録: 削除操作を行う前の
CURRENT_SCNが必要
5. 実行例:SCNを指定したリカバリ
以下の例では、test1.emp_rman テーブルを削除前の SCN 2276451 に復元します。
① リカバリ対象の確認(sqlplus)
まず、誤削除が起きる前の正常な状態を確認し、SCNを控えます。
-- 現在のSCNを確認し、メモしておく
SELECT CURRENT_SCN FROM v$database;
-- (誤操作) テーブルを削除
DROP TABLE test1.emp_rman PURGE;
② RMANによるリカバリコマンドの実行
RMANを起動し、補助領域(/u01/app/oracle/auxdest)を指定してコマンドを発行します。
# RMANに接続
rman target /
# テーブル単位のリカバリを実行
RECOVER TABLE test1.emp_rman
UNTIL SCN 2276451
AUXILIARY DESTINATION '/u01/app/oracle/auxdest';
SQLの意図と結果:
このコマンドにより、RMANは指定されたパスに一時的な制御ファイルやデータファイルを展開し、削除されたテーブルを Data Pump 経由で本番 DB へ自動インポートします。完了後、一時ファイルは自動的に削除されます。
SQL> CREATE TABLE emp_rman AS SELECT * FROM scott.emp; ★表を作成
表が作成されました。
SQL> set linesize 100 pagesize 100
SQL> select empno,ename,job,deptno from emp_rman
2 order by deptno;
EMPNO ENAME JOB DEPTNO
---------- ------------------------------ --------------------------- ----------
7839 KING PRESIDENT 10
7782 CLARK MANAGER 10
7934 MILLER CLERK 10
7902 FORD ANALYST 20
7369 SMITH CLERK 20
7566 JONES MANAGER 20
7900 JAMES CLERK 30
7844 TURNER SALESMAN 30
7654 MARTIN SALESMAN 30
7521 WARD SALESMAN 30
7499 ALLEN SALESMAN 30
7698 BLAKE MANAGER 30
12行が選択されました。
SQL> exit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0との接続が切断されました。
[oracle@v19single ~]$ rman target /
Recovery Manager: Release 19.0.0.0.0 - Production on 土 3月 22 11:01:47 2025
Version 19.21.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
ターゲット・データベース: V19 (DBID=2957249400)に接続されました
RMAN> BACKUP DATABASE; ★バックアップ
backupを25-03-22で開始しています
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=72 デバイス・タイプ=DISK
チャネルORA_DISK_1: フル・データファイル・バックアップ・セットを開始しています
チャネルORA_DISK_1: バックアップ・セットにデータファイルを指定しています
入力データファイル ファイル番号=00001 名前=/u01/app/oracle/oradata/V19/system01.dbf
入力データファイル ファイル番号=00003 名前=/u01/app/oracle/oradata/V19/sysaux01.dbf
入力データファイル ファイル番号=00004 名前=/u01/app/oracle/oradata/V19/undotbs01.dbf
入力データファイル ファイル番号=00007 名前=/u01/app/oracle/oradata/V19/users01.dbf
チャネルORA_DISK_1: ピース1 (25-03-22)を起動します
チャネルORA_DISK_1: ピース1 (25-03-22)が完了しました
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/013kvrd7_1_1_1 タグ=TAG20250322T110159 コメント=NONE
チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:25
backupを25-03-22で終了しました
Control File and SPFILE Autobackupを25-03-22で開始しています
ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-2957249400-20250322-00 コメント=NONE
Control File and SPFILE Autobackupを25-03-22で終了しました
RMAN> exit
Recovery Managerが完了しました。
[oracle@v19single ~]$ sqlplus test1/test1
SQL*Plus: Release 19.0.0.0.0 - Production on 土 3月 22 11:02:38 2025
Version 19.21.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
最終正常ログイン時間: 土 3月 22 2025 10:59:42 +09:00
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0
に接続されました。
SQL> SELECT CURRENT_SCN FROM v$database;
CURRENT_SCN
-----------
2276451 ★現在のSCNを確認
SQL> drop table emp_rman purge; ★表をDROP
表が削除されました。
SQL> exit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0との接続が切断されました。
[oracle@v19single ~]$ rman target /
Recovery Manager: Release 19.0.0.0.0 - Production on 土 3月 22 11:08:53 2025
Version 19.21.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
ターゲット・データベース: V19 (DBID=2957249400)に接続されました
RMAN> RECOVER TABLE test1.emp_rman
2> UNTIL SCN 2276451 ★表をDROPする前のSCNを指定
3> AUXILIARY DESTINATION '/u01/app/oracle/auxdest';
recoverを25-03-22で開始しています
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=72 デバイス・タイプ=DISK
RMAN-05026: 警告: 次の表領域のセットは、指定したPoint-in-Timeへの適用が想定されています
UNDOセグメントがあると予測される表領域のリスト
表領域SYSTEM
表領域UNDOTBS1
自動インスタンスを作成しています(SID='sdxz')
自動インスタンスに使用される初期化パラメータ:
db_name=V19
db_unique_name=sdxz_pitr_V19
compatible=19.0.0
db_block_size=8192
db_files=200
diagnostic_dest=/u01/app/oracle
_pdb_name_case_sensitive=false
_system_trig_enabled=FALSE
sga_target=1472M
processes=200
db_create_file_dest=/u01/app/oracle/auxdest
log_archive_dest_1='location=/u01/app/oracle/auxdest'
#No auxiliary parameter file used
自動インスタンスV19を起動しています
Oracleインスタンスが起動しました
システム・グローバル領域の合計は、 1543500120バイトです。
Fixed Size 8925528バイト
Variable Size 369098752バイト
Database Buffers 1157627904バイト
Redo Buffers 7847936バイト
自動インスタンスが作成されました
メモリー・スクリプトの内容:
{
# set requested point in time
set until scn 2276451;
# restore the controlfile
restore clone controlfile;
# mount the controlfile
sql clone 'alter database mount clone database';
# archive current online log
sql 'alter system archive log current';
}
メモリー・スクリプトを実行しています
実行コマンド: SET until clause
restoreを25-03-22で開始しています
チャネル: ORA_AUX_DISK_1が割り当てられました
チャネルORA_AUX_DISK_1: SID=34 デバイス・タイプ=DISK
チャネルORA_AUX_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
チャネルORA_AUX_DISK_1: 制御ファイルをリストア中です
チャネルORA_AUX_DISK_1: バックアップ・ピース/u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-2957249400-20250322-00から読取り中です
チャネルORA_AUX_DISK_1: ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/c-2957249400-20250322-00 タグ=TAG20250322T110224
チャネルORA_AUX_DISK_1: バックアップ・ピース1がリストアされました
チャネルORA_AUX_DISK_1: リストアが完了しました。経過時間: 00:00:01
出力ファイル名=/u01/app/oracle/auxdest/V19/controlfile/o1_mf_mxw6yc53_.ctl
restoreを25-03-22で終了しました
SQL文: alter database mount clone database
SQL文: alter system archive log current
メモリー・スクリプトの内容:
{
# set requested point in time
set until scn 2276451;
# set destinations for recovery set and auxiliary set datafiles
set newname for clone datafile 1 to new;
set newname for clone datafile 4 to new;
set newname for clone datafile 3 to new;
set newname for clone tempfile 1 to new;
# switch all tempfiles
switch clone tempfile all;
# restore the tablespaces in the recovery set and the auxiliary set
restore clone datafile 1, 4, 3;
switch clone datafile all;
}
メモリー・スクリプトを実行しています
実行コマンド: SET until clause
実行コマンド: SET NEWNAME
実行コマンド: SET NEWNAME
実行コマンド: SET NEWNAME
実行コマンド: SET NEWNAME
制御ファイルで一時ファイル1の名前を/u01/app/oracle/auxdest/V19/datafile/o1_mf_temp_%u_.tmpに変更しました
restoreを25-03-22で開始しています
チャネルORA_AUX_DISK_1の使用
チャネルORA_AUX_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
チャネルORA_AUX_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています
チャネルORA_AUX_DISK_1: データファイル00001を/u01/app/oracle/auxdest/V19/datafile/o1_mf_system_%u_.dbfにリストアしています
チャネルORA_AUX_DISK_1: データファイル00004を/u01/app/oracle/auxdest/V19/datafile/o1_mf_undotbs1_%u_.dbfにリストアしています
チャネルORA_AUX_DISK_1: データファイル00003を/u01/app/oracle/auxdest/V19/datafile/o1_mf_sysaux_%u_.dbfにリストアしています
チャネルORA_AUX_DISK_1: バックアップ・ピース/u01/app/oracle/product/19.0.0/dbhome_1/dbs/013kvrd7_1_1_1から読取り中です
チャネルORA_AUX_DISK_1: ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/013kvrd7_1_1_1 タグ=TAG20250322T110159
チャネルORA_AUX_DISK_1: バックアップ・ピース1がリストアされました
チャネルORA_AUX_DISK_1: リストアが完了しました。経過時間: 00:00:15
restoreを25-03-22で終了しました
データファイル1はデータファイル・コピーに切り替えられました
入力データファイル・コピー レコードID=4 スタンプ=1196420976 ファイル名=/u01/app/oracle/auxdest/V19/datafile/o1_mf_system_mxw6yk9t_.dbf
データファイル4はデータファイル・コピーに切り替えられました
入力データファイル・コピー レコードID=5 スタンプ=1196420976 ファイル名=/u01/app/oracle/auxdest/V19/datafile/o1_mf_undotbs1_mxw6ykb5_.dbf
データファイル3はデータファイル・コピーに切り替えられました
入力データファイル・コピー レコードID=6 スタンプ=1196420976 ファイル名=/u01/app/oracle/auxdest/V19/datafile/o1_mf_sysaux_mxw6ykb1_.dbf
メモリー・スクリプトの内容:
{
# set requested point in time
set until scn 2276451;
# online the datafiles restored or switched
sql clone "alter database datafile 1 online";
sql clone "alter database datafile 4 online";
sql clone "alter database datafile 3 online";
# recover and open database read only
recover clone database tablespace "SYSTEM", "UNDOTBS1", "SYSAUX";
sql clone 'alter database open read only';
}
メモリー・スクリプトを実行しています
実行コマンド: SET until clause
SQL文: alter database datafile 1 online
SQL文: alter database datafile 4 online
SQL文: alter database datafile 3 online
recoverを25-03-22で開始しています
チャネルORA_AUX_DISK_1の使用
実行中: alter database datafile 7 offline
メディア・リカバリを開始しています
スレッド1 (順序13)のアーカイブ・ログは、ファイル/u01/app/oracle/product/19.0.0/dbhome_1/dbs/arch1_13_1153872185.dbfとしてディスクにすでに存在します
アーカイブ・ログ・ファイル名=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/arch1_13_1153872185.dbf スレッド=1 順序=13
メディア・リカバリが完了しました。経過時間: 00:00:00
recoverを25-03-22で終了しました
SQL文: alter database open read only
メモリー・スクリプトの内容:
{
sql clone "create spfile from memory";
shutdown clone immediate;
startup clone nomount;
sql clone "alter system set control_files =
''/u01/app/oracle/auxdest/V19/controlfile/o1_mf_mxw6yc53_.ctl'' comment=
''RMAN set'' scope=spfile";
shutdown clone immediate;
startup clone nomount;
# mount database
sql clone 'alter database mount clone database';
}
メモリー・スクリプトを実行しています
SQL文: create spfile from memory
データベースがクローズしました
データベースがディスマウントされました。
Oracleインスタンスがシャットダウンしました
補助データベースに接続されました(開始されていません)
Oracleインスタンスが起動しました
システム・グローバル領域の合計は、 1543500120バイトです。
Fixed Size 8925528バイト
Variable Size 369098752バイト
Database Buffers 1157627904バイト
Redo Buffers 7847936バイト
SQL文: alter system set control_files = ''/u01/app/oracle/auxdest/V19/controlfile/o1_mf_mxw6yc53_.ctl'' comment= ''RMAN set'' scope=spfile
Oracleインスタンスがシャットダウンしました
補助データベースに接続されました(開始されていません)
Oracleインスタンスが起動しました
システム・グローバル領域の合計は、 1543500120バイトです。
Fixed Size 8925528バイト
Variable Size 369098752バイト
Database Buffers 1157627904バイト
Redo Buffers 7847936バイト
SQL文: alter database mount clone database
メモリー・スクリプトの内容:
{
# set requested point in time
set until scn 2276451;
# set destinations for recovery set and auxiliary set datafiles
set newname for datafile 7 to new;
# restore the tablespaces in the recovery set and the auxiliary set
restore clone datafile 7;
switch clone datafile all;
}
メモリー・スクリプトを実行しています
実行コマンド: SET until clause
実行コマンド: SET NEWNAME
restoreを25-03-22で開始しています
チャネル: ORA_AUX_DISK_1が割り当てられました
チャネルORA_AUX_DISK_1: SID=37 デバイス・タイプ=DISK
チャネルORA_AUX_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
チャネルORA_AUX_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています
チャネルORA_AUX_DISK_1: データファイル00007を/u01/app/oracle/auxdest/SDXZ_PITR_V19/datafile/o1_mf_users_%u_.dbfにリストアしています
チャネルORA_AUX_DISK_1: バックアップ・ピース/u01/app/oracle/product/19.0.0/dbhome_1/dbs/013kvrd7_1_1_1から読取り中です
チャネルORA_AUX_DISK_1: ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/013kvrd7_1_1_1 タグ=TAG20250322T110159
チャネルORA_AUX_DISK_1: バックアップ・ピース1がリストアされました
チャネルORA_AUX_DISK_1: リストアが完了しました。経過時間: 00:00:01
restoreを25-03-22で終了しました
データファイル7はデータファイル・コピーに切り替えられました
入力データファイル・コピー レコードID=8 スタンプ=1196421024 ファイル名=/u01/app/oracle/auxdest/SDXZ_PITR_V19/datafile/o1_mf_users_mxw70hjo_.dbf
メモリー・スクリプトの内容:
{
# set requested point in time
set until scn 2276451;
# online the datafiles restored or switched
sql clone "alter database datafile 7 online";
# recover and open resetlogs
recover clone database tablespace "USERS", "SYSTEM", "UNDOTBS1", "SYSAUX" delete archivelog;
alter clone database open resetlogs;
}
メモリー・スクリプトを実行しています
実行コマンド: SET until clause
SQL文: alter database datafile 7 online
recoverを25-03-22で開始しています
チャネルORA_AUX_DISK_1の使用
メディア・リカバリを開始しています
スレッド1 (順序13)のアーカイブ・ログは、ファイル/u01/app/oracle/product/19.0.0/dbhome_1/dbs/arch1_13_1153872185.dbfとしてディスクにすでに存在します
アーカイブ・ログ・ファイル名=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/arch1_13_1153872185.dbf スレッド=1 順序=13
メディア・リカバリが完了しました。経過時間: 00:00:00
recoverを25-03-22で終了しました
データベースがオープンしました。
メモリー・スクリプトの内容:
{
# create directory for datapump import
sql "create or replace directory TSPITR_DIROBJ_DPDIR as ''
/u01/app/oracle/auxdest''";
# create directory for datapump export
sql clone "create or replace directory TSPITR_DIROBJ_DPDIR as ''
/u01/app/oracle/auxdest''";
}
メモリー・スクリプトを実行しています
SQL文: create or replace directory TSPITR_DIROBJ_DPDIR as ''/u01/app/oracle/auxdest''
SQL文: create or replace directory TSPITR_DIROBJ_DPDIR as ''/u01/app/oracle/auxdest''
表のエクスポートを実行しています...
EXPDP> "SYS"."TSPITR_EXP_sdxz_oFuE"を起動しています:
EXPDP> オブジェクト型TABLE_EXPORT/TABLE/TABLE_DATAの処理中です
EXPDP> オブジェクト型TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
EXPDP> オブジェクト型TABLE_EXPORT/TABLE/STATISTICS/MARKERの処理中です
EXPDP> オブジェクト型TABLE_EXPORT/TABLE/TABLEの処理中です
EXPDP> . . "TEST1"."EMP_RMAN" 8.703 KB 12行がエクスポートされました
EXPDP> マスター表"SYS"."TSPITR_EXP_sdxz_oFuE"は正常にロード/アンロードされました
EXPDP> ******************************************************************************
EXPDP> SYS.TSPITR_EXP_sdxz_oFuEに設定されたダンプ・ファイルは次のとおりです:
EXPDP> /u01/app/oracle/auxdest/tspitr_sdxz_30059.dmp
EXPDP> ジョブ"SYS"."TSPITR_EXP_sdxz_oFuE"が土 3月 22 11:11:19 2025 elapsed 0 00:00:36で正常に完了しました
エクスポートが完了しました
メモリー・スクリプトの内容:
{
# shutdown clone before import
shutdown clone abort
}
メモリー・スクリプトを実行しています
Oracleインスタンスがシャットダウンしました
表のインポートを実行しています...
IMPDP> マスター表"SYS"."TSPITR_IMP_sdxz_xFvp"は正常にロード/アンロードされました
IMPDP> "SYS"."TSPITR_IMP_sdxz_xFvp"を起動しています:
IMPDP> オブジェクト型TABLE_EXPORT/TABLE/TABLEの処理中です
IMPDP> オブジェクト型TABLE_EXPORT/TABLE/TABLE_DATAの処理中です
IMPDP> . . "TEST1"."EMP_RMAN" 8.703 KB 12行がインポートされました
IMPDP> オブジェクト型TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
IMPDP> オブジェクト型TABLE_EXPORT/TABLE/STATISTICS/MARKERの処理中です
IMPDP> ジョブ"SYS"."TSPITR_IMP_sdxz_xFvp"が土 3月 22 11:12:00 2025 elapsed 0 00:00:31で正常に完了しました
インポートが完了しました
自動インスタンスを削除しています
自動インスタンスが削除されました
補助インスタンス・ファイル/u01/app/oracle/auxdest/V19/datafile/o1_mf_temp_mxw6z20s_.tmpを削除しました
補助インスタンス・ファイル/u01/app/oracle/auxdest/SDXZ_PITR_V19/onlinelog/o1_mf_3_mxw70ltw_.logを削除しました
補助インスタンス・ファイル/u01/app/oracle/auxdest/SDXZ_PITR_V19/onlinelog/o1_mf_2_mxw70l3f_.logを削除しました
補助インスタンス・ファイル/u01/app/oracle/auxdest/SDXZ_PITR_V19/onlinelog/o1_mf_1_mxw70kp4_.logを削除しました
補助インスタンス・ファイル/u01/app/oracle/auxdest/SDXZ_PITR_V19/datafile/o1_mf_users_mxw70hjo_.dbfを削除しました
補助インスタンス・ファイル/u01/app/oracle/auxdest/V19/datafile/o1_mf_sysaux_mxw6ykb1_.dbfを削除しました
補助インスタンス・ファイル/u01/app/oracle/auxdest/V19/datafile/o1_mf_undotbs1_mxw6ykb5_.dbfを削除しました
補助インスタンス・ファイル/u01/app/oracle/auxdest/V19/datafile/o1_mf_system_mxw6yk9t_.dbfを削除しました
補助インスタンス・ファイル/u01/app/oracle/auxdest/V19/controlfile/o1_mf_mxw6yc53_.ctlを削除しました
補助インスタンス・ファイルtspitr_sdxz_30059.dmpを削除しました
recoverを25-03-22で終了しました
RMAN> exit
Recovery Managerが完了しました。
[oracle@v19single ~]$ sqlplus test1/test1
SQL*Plus: Release 19.0.0.0.0 - Production on 土 3月 22 11:12:16 2025
Version 19.21.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
最終正常ログイン時間: 土 3月 22 2025 11:08:17 +09:00
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0
に接続されました。
SQL> set linesize 100 pagesize 100
SQL> select empno,ename,job,deptno from emp_rman ★表が復元されている
2 order by deptno;
EMPNO ENAME JOB DEPTNO
---------- ------------------------------ --------------------------- ----------
7839 KING PRESIDENT 10
7782 CLARK MANAGER 10
7934 MILLER CLERK 10
7902 FORD ANALYST 20
7369 SMITH CLERK 20
7566 JONES MANAGER 20
7900 JAMES CLERK 30
7844 TURNER SALESMAN 30
7654 MARTIN SALESMAN 30
7521 WARD SALESMAN 30
7499 ALLEN SALESMAN 30
7698 BLAKE MANAGER 30
12行が選択されました。
6. トラブルシューティング:代表的な ORA エラー
| エラーコード | 原因 | 対処法 |
| ORA-39002 | インポート操作の失敗 | 本番に同名のテーブルが既に存在しないか確認してください。 |
| RMAN-05026 | 補助領域の容量不足 | AUXILIARY DESTINATION に十分な空きがあるか確認してください。 |
| RMAN-06023 | バックアップが見つからない | 指定した SCN より前の有効なバックアップがあるか確認してください。 |
7. 運用・監視・セキュリティ上の注意
- リソース消費: 補助インスタンスが起動するため、一時的にメモリ(SGA)とCPUを消費します。業務高負荷時の実行は避けてください。
- 影響範囲: 既存のテーブルを上書きするため、リカバリ後に最新のデータが失われるリスクがあります。
- 戻し方(推奨): 念のため
REMAP TABLEオプションを使用して別名で復元し、データを確認してから本番テーブルへ差し替える方法が最も安全です。
8. FAQ:よくある質問
Q: Flashback Table とは何が違うのですか?
A: Flashback Table は UNDO データを使用するため高速ですが、PURGE 付きの DROP には対応できません。RMANはバックアップから復元するため、より確実な復旧が可能です。
Q: 補助領域にはどれくらいの空きが必要ですか?
A: SYSTEM, SYSAUX, UNDO および対象テーブルが含まれる表領域の合計サイズ分が必要目安です。
Q: 実行中にデータベースを止める必要はありますか?
A: いいえ。本番データベースは起動(OPEN)したまま実行可能です。
9. まとめ
- Oracle RMAN は
DROP TABLEからの救済における最終手段として有効。 - SCN を指定することで、特定の「瞬間」へピンポイントで戻せる。
- 補助インスタンスの管理は RMAN が自動で行うため、DBAの工数を削減できる。
- 実行前には必ず補助領域のディスク容量を確認すること。
本記事は Oracle Database 19c を対象に解説します(他バージョンは画面や既定値が異なる場合があります)。
[参考]
Oracle Database バックアップおよびリカバリ・ユーザーズ・ガイド 19c


💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


コメント