Loading...

We've detected that your browser language is Chinese. Would you like to visit our Chinese website? [ Dismiss ]
By: Emma

データベースがライフサイクルを終了し不要となった場合、DROP DATABASEコマンドを使用してサーバーから削除できます。テーブルやユーザーだけでなく、データベースインスタンス全体をサーバーから完全に削除するため、実行後のロールバックは不可能です。

本ガイドでは事前確認事項、2種類の段階的な削除手順、頻出エラーと解決策、安全な代替手段を解説し、トラブルなく作業を完了させる方法を紹介します。

Oracleデータベースの削除方法

Oracle DROP DATABASEの実行内容

DROP DATABASEを実行すると、OracleはOSレベルで元に戻せない一連の処理を実行します。何が削除され、何が残存するかを正しく把握することで、サーバー環境をクリーンに保てます。

自動削除される物理ファイル

本コマンドはデータベースインスタンスの中核コンポーネントを対象とし、以下のファイルを自動的に消去します。

  • データファイル:SYSTEM、SYSAUX、USERSなど、すべての表領域に紐付く物理ファイル
  • 制御ファイル:データベース構成情報を記録するバイナリファイル
  • オンラインREDOログ:インスタンス障害復旧に使用するログファイル
  • SPFILE/PFILE:標準パスに格納されているサーバーパラメータファイル、初期化パラメータファイル

自動削除されないファイル

DROP実行後に環境が完全にクリーンになると誤認するケースが多発します。Oracleは意図的に複数のファイルを残存させるため、手動で後始末が必要です。

  • アーカイブREDOログ:ディスクまたは高速リカバリ領域(FRA)に残存
  • RMANバックアップファイル:過去のバックアップセットとイメージコピーが保持される
  • oratabのエントリ:Linux/Unix環境では/etc/oratabの記述を手動で削除する必要がある
  • リスナー設定:listener.oratnsnames.oraに削除済みSIDの記述が残る

類似DROPコマンドとの違い

業務に適したコマンドを選択することが重要です。データベース全体の削除は単一オブジェクトの削除より影響範囲が大幅に広大です。

コマンド 削除対象 データベースは残存するか
DROP TABLE 単一テーブルとそのメタデータ はい
DROP USER … CASCADE スキーマ内の全オブジェクトとユーザー はい
DROP TABLESPACE … INCLUDING CONTENTS AND DATAFILES 表領域と紐付く物理ファイル はい
DROP DATABASE インスタンス全体と全物理ファイル いいえ

注記:Oracle Managed Files(OMF)を使用している場合はファイルの自動消去がより徹底的です。ファイルが非標準ディレクトリに配置されている場合、DROP実行後OS側で残存ファイルを確認してください。

Oracle DROP DATABASEコマンド:構文とオプション

DROP DATABASEを実行するには、インスタンスがマウント状態(オープン不可)である必要があります。また排他制限モードに切り替え、作業中に他ユーザーやプロセスが接続できないようにする必要があります。

基本SQL構文

SQL*Plusから手動でOracleデータベースを削除するには、事前にインスタンスを必要な状態に起動します。

-- 手順1:必要なモードでインスタンス起動

STARTUP MOUNT EXCLUSIVE RESTRICT;

-- 手順2:削除コマンド実行

DROP DATABASE;

Oracleデータベース削除 - 基本SQL構文

コマンド完了後、Oracleは制御ファイルに記録されたデータファイル、オンラインREDOログ、制御ファイルをすべて削除します。

RMAN構文

多くのDBAはRMAN(リカバリマネージャー)を推奨します。データベース本体と紐付くバックアップメタデータを一括削除できるため、リカバリカタログ運用環境では最もクリーンな手法となります。

# 対象データベースに接続

rman target /

# データベースとバックアップを一括削除

RMAN> DROP DATABASE INCLUDING BACKUPS NOPROMPT;

Oracleデータベース削除 - RMAN構文

主要句の解説

各オプションを理解することで、孤立ファイルの発生を抑え、自動スクリプト化を容易にします。

  • INCLUDING BACKUPS:RMANに対象データベースの全バックアップセット、イメージコピー、アーカイブログを削除させます。リカバリカタログ使用時はカタログ内のデータベースメタデータも消去されます。
  • NOPROMPT:確認プロンプトをスキップするため、自動実行スクリプトに適します。使用時は十分注意してください。
  • 必要な権限:SYSDBA権限で接続する必要があります。標準のSYSOPERユーザーでは本操作を実行できません。
  • 必要なインスタンス状態:
    • MOUNTED:Oracleが削除対象ファイルを特定するため、制御ファイルを読み込む必要があります。
    • EXCLUSIVE:他インスタンスがデータベースをマウントできない状態にします。RAC環境で特に重要です。
    • RESTRICTED:管理者以外のセッションを無効化します。
ヒント:コマンド実行前に必ずORACLE_SIDを再確認してください。複数データベース運用環境では環境変数の誤りにより、誤ったDBを削除する事故が発生します。

2種類のOracleデータベース削除手順

Oracleデータベースの削除は完全不可逆な操作のため、コマンドライン・GUIツールどちらを使用する場合も事前準備が最も重要です。

事前確認事項:DROP DATABASE実行前に実施すべき作業

以下のチェックリスト項目をすべて完了させるまでDROP DATABASEを実行しないでください。確認作業により、誤削除や業務停止リスクを低減できます。

  • バックアップの作成・検証:最終RMANバックアップを取得し、VALIDATE BACKUPコマンドで破損なし・読み取り可能な状態か確認する
  • 物理ファイルのパス把握:データファイル、制御ファイル、REDOログの配置場所を記録し、削除後に残存ファイルを確認できるようにする
  • 接続セッションの確認:ユーザー、アプリケーション、バッチジョブがデータベースに接続していないか確認
  • データベースリンクの確認:DBA_DB_LINKSを検索し、他DBが本DBに依存していないか調査
  • 正式な承認取得:作業実施前に変更要求書または書面による承認を取得
  • 自動実行タスクの無効化:対象インスタンスに紐付く定期ジョブ、監視アラート、管理ツールを停止

削除手法1:コマンドライン手動実行

SSH接続やターミナル専用環境でデータベースを削除する標準的な手法です。

  1. 環境変数設定: 対象DBのORACLE_SIDORACLE_HOMEを正しく設定
  2. インスタンス停止:

    SHUTDOWN IMMEDIATE;

  3. 必要モードでインスタンス起動:

    STARTUP MOUNT EXCLUSIVE RESTRICT;

  4. データベース状態確認:

    SELECT name, open_mode FROM v$database;

  5. 削除コマンド実行:

    DROP DATABASE;

  6. ファイル削除確認: ストレージ上のDBファイルが消去されたか確認。ASMまたはOMF使用時は専用管理ツールでクリーンアップ状況を検証

削除手法2:DBCA(GUIツール)

DBCA(データベース構成アシスタント)はGUI経由でデータベースを削除するツールで、Oracle 19c以降の環境で広く使用されています。手動コマンドと比較し、DBファイルの自動削除、OMFのクリーンアップ、Oracle関連設定の更新を一括で実施可能です。

DBCA段階的操作手順:

  1. コマンドプロンプトにdbcaと入力しツールを起動
  2. 「データベースの削除」を選択し「次へ」をクリック
  3. 削除対象のデータベースを選択
  4. SYSDBA権限を持つアカウント情報(通常はSYSのパスワード)を入力
  5. 概要情報を慎重に確認
  6. 「完了」をクリックし削除処理を開始

自動実行用DBCAサイレントモード:

スクリプトやデプロイフローでDB削除を自動化する場合は、DBCAサイレントモードを使用します。

dbca -silent -deleteDatabase -sourceDB <対象SID> -sysDBAUserName sys -sysDBAPassword <パスワード>

注記:DBCAはファイルクリーンアップや設定更新を自動処理するため、経験の浅い管理者に適しています。

頻出エラーと解決方法

熟練したDBAでもDB削除時にトラブルに遭遇するケースがあります。大半の問題はDBが適切な状態にない、または削除後に設定残骸が残存することが原因です。

エラー・事象 原因 解決策
ORA-01586: データベースはEXCLUSIVEモードでマウントし、オープンしていない必要があります DBがオープン状態、または排他制限モードでマウントされていない DBをシャットダウン後、STARTUP MOUNT EXCLUSIVE RESTRICTで再起動してからDROP DATABASEを実行
RAC環境でORA-01586が発生 複数のインスタンスがDBに関連付けられたまま 1つを残し全RACインスタンスを停止、cluster_database=FALSEを設定し、残ったインスタンスを排他マウントモードで起動
孤立したDBファイルが残存 DROP実行時に一部ファイルが自動削除されなかった ストレージパスを確認し、不要なファイルは手動で削除
リスナーに削除済みDBサービスが表示される DB削除後もサービス登録情報が残存 リスナーをリロードまたは再起動し、必要に応じ古いエントリを削除

RAC固有のトラブル対応

Oracle RAC環境でDROPを実行する際、複数ノードでDBが起動した状態では実行できません。1インスタンス以外をすべて停止し、初期化パラメータcluster_databaseを一時的にFALSEに設定します。その後残ったインスタンスをMOUNT EXCLUSIVE RESTRICTで起動し、削除コマンドを実行します。

DB削除完了後、srvctlを使用しOracle ClusterwareからDB設定を削除し、不要なリソースが残存しないようにします。

ファイルクリーンアップのトラブル対応

環境によってはDROP完了後もDBファイルが残る場合があります。外部バックアップソフト、スナップショットツール、ストレージ管理ユーティリティ、OSプロセスがファイルを参照し続けることが原因です。関連サービスをすべて停止し、ファイルが不要であることを確認してから手動削除してください。

ASMまたはOMFを使用している場合は、OSのディレクトリ確認だけに頼らず、Oracle専用管理ツールでファイル消去状況を検証します。

DROP DATABASEの代替手段(本コマンドを使用すべきでないケース)

多くの場合、データベース全体を削除する必要はありません。DROP DATABASEはDBとファイルを完全消去する不可逆コマンドのため、実行前に以下の代替手段を検討してください。

  • データのみ消去したい場合:DB構造を維持したままデータを削除するにはTRUNCATE TABLEを使用します。テーブル定義、インデックス、権限を残したまま全行データを削除可能です。
  • 特定オブジェクトのみ削除したい場合:不要なテーブルのみ消去する場合はDB全体を削除せず、DROP TABLEを使用します。
  • アプリケーション用スキーマを削除したい場合:特定ユーザー配下の全オブジェクトを消去する場合はDROP USER ユーザー名 CASCADEを実行します。対象ユーザーと配下のテーブル、インデックス、ビュー、プロシージャ等を削除し、DB本体には影響を与えません。
  • プラガブルデータベース(PDB)の削除:Oracleマルチテナント環境ではCDB全体を削除せず、単一PDBのみ消去できます。基本的にPDBをクローズ後削除します。

ALTER PLUGGABLE DATABASE pdb_name CLOSE IMMEDIATE;

DROP PLUGGABLE DATABASE pdb_name INCLUDING DATAFILES;

プラガブルデータベースの削除方法

  • DBを削除せず廃止したい場合:将来的にDBを復旧する可能性がある場合は、最終RMANバックアップを取得しアーカイブ保管してください。本手法により復旧手段を確保しつつ本番リソースを解放できます。
  • 一時的にリソースを節約したい場合:現在未使用だが今後必要となるDBはシャットダウンし、社内保存ポリシーに基づきDBファイルまたはバックアップを保管します。
注記:スキーマ、テーブル、PDBを削除する前に、ビュー、ストアドプロシージャ、マテリアライズドビュー、シノニム、データベースリンクといった依存関係を確認してください。DB自体が稼働していても、これらオブジェクトの削除が他アプリケーションに影響を及ぼす可能性があります。

DB削除前にi2BackupでOracleデータを保護する方法

DROP DATABASE実行前には、検証済みのバックアップを取得することが最優先事項です。コマンド実行完了後はDBファイル、制御ファイル、オンラインREDOログが消去されるため、有効なバックアップがなければ復旧は困難または不可能となります。

複数のOracle環境を管理する企業では、手動によるバックアップ確認は時間を要し、人為的ミスが発生しやすいです。i2Backupは集中型バックアップ・リカバリプラットフォームを提供し、DB廃止、移行、完全削除といった高リスク作業の前にOracleデータを保護する手段をDBAに提供します。

i2Backupの主な機能

  • 全方位的Oracleバックアップ対応:i2Backupはスタンドアロン、クラスター(RAC、ADG)環境のOracleデータベースに対応し、大規模変更作業前に重要なDBワークロードを保護します。
  • 集中型バックアップ管理:Web管理コンソールから複数DBのバックアップ設定、スケジュール、監視、運用を単一画面で実行でき、運用負荷を低減します。
  • 柔軟な自動スケジューリング:毎時、毎日、毎週、毎月または独自ポリシーに基づいてバックアップジョブを実行可能。不可逆な作業実行前に最新の復旧ポイントを確保できます。
  • 特定時点リカバリ機能:REDOログ・アーカイブログを継続的に取得することで任意時点への復旧を実現し、誤削除や予期せぬ変更後のデータ復元に柔軟に対応します。
  • リアルタイム監視とアラート:標準搭載の監視、レポート、通知機能によりバックアップ状況を可視化し、DBメンテナンス作業前に潜在的な不具合を速やかに検知できます。

バックアップ保護以外に、復旧要件の厳しい企業は補完ソリューションを活用できます。近ゼロRPOの継続データ保護にはi2CDP、リアルタイムレプリケーションと災害復旧計画にはi2Availabilityをご検討ください。

安全なOracle DB削除とは、必要時に復旧可能な状態を保った作業のことです。DROP DATABASE実行前に、最新かつ検証済みのバックアップと実証済みの復旧計画を用意してください。i2Backupといったソリューションが安全網を構築することで、DBAは安心してDB削除作業を実施できます。

60日間無料トライアル

まとめ

OracleのDROP DATABASEコマンドの記述自体は単純ですが、実行による影響は完全に元に戻せません。DBを削除する前に依存関係を確認し、関係者の承認を取得し、何より有効なバックアップと復旧計画を整備する必要があります。

Oracle標準ツール、またはInfo2softのi2Backupといった集中型バックアップソリューションのいずれを使用する場合でも、実証済みの復旧ポイントを確保することが、安全かつ安心してDB廃止作業を実施する鍵となります。

概要は準備中です

関連記事

【3つの方法】Oracleデータベースへ接続する手順
Oracleデータベースへの接続方法は使用するツールや環境によって異なります。本ガイドでは代表的な3種類の接続手法を記載し、Oracleデータベース接続時に発生する一般的なエラーのトラブルシューティング方法を解説します。
記事を読む
Oracle テーブル一覧:USER_TABLES、ALL_TABLES、DBA_TABLES
OracleにはSHOW TABLESという組み込みコマンドが存在しないため、データディクショナリビューに対してクエリを実行してテーブル一覧を取得する必要があります。本ガイドではUSER_TABLES、ALL_TABLES、DBA_TABLESの使用方法に加え、スキーマによる絞り込み、検索クエリ、アクセスに関する一般的なトラブルシューティングを解説します。
記事を読む
VMware PowerCLIガイド:インストール、コマンド、スクリプト
VMware PowerCLIは管理者が簡単なPowerShellコマンドとスクリプトで反復的なvSphere作業を自動化するのを支援します。本ガイドではインストール方法、主要コマンドレット、実務向け自動化サンプル、日常的なVMware管理に役立つトラブルシューティングのコツを解説しています。
記事を読む
2026年VMware監視ガイド:ツール、指標、パフォーマンス
最新のVMware環境はこれまで以上に複雑化し、管理コストも増大しています。本ガイドでは、VMwareのパフォーマンスを効率的に監視する方法、重要な監視指標、インフラストラクチャに適した監視ツールの選定方法について解説します。
記事を読む
目次:
最新情報を購読
最新のインサイト、ニュース、限定コンテンツをお届けします。いつでも配信解除が可能です。
購読する
ビジネスデータのセキュリティ強化を始めませんか?
60日間の無料トライアルまたはデモで、Info2softが企業データをどのように保護するかをご確認ください。
フォームにご記入の上、送信してください。担当者より追ってご連絡いたします。
このフォームを送信することにより、 プライバシー通知を読み、同意したことを確認します。
{{ isSubmitting ? '送信中...' : '送信する' }}