🗑️

【Oracle】SQL*Plusでデータベースを削除してみた

2023/12/05に公開

GUIではなくSQLを使ってOracleデータベースを削除します。

スクリプトを手動で実行する方法でデータベースを作成すると、DBCAの画面からはデータベースを削除できなかったため(間違っていたらごめんなさい)、SQLを使ってデータベースを削除する方法を調べました。

検証環境

  • Oracle Database 19c
  • Red Hat Enterprise Linux 8.7

1. SYSDBAシステム権限でSQL*Plusにログイン

[oracle@ora19 ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Jun 9 00:48:35 2024
Version 19.3.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL>

2. シャットダウン

SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.

3. 制限モードでマウント

制限モードになると、RESTRICTED SESSION 権限の無い一般ユーザーはログインが出来なくなります。drop database;するためには、この状態にする必要があります。

SQL> startup restrict mount
ORACLE instance started.

Total System Global Area 1191181696 bytes
Fixed Size                  8895872 bytes
Variable Size             318767104 bytes
Database Buffers          855638016 bytes
Redo Buffers                7880704 bytes
Database mounted.

4. データベースを削除

SQL> drop database;

Database dropped.

Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

データベースの削除が完了しました。

ちなみに、改めてSQL*Plusにログインしてstartupしようとしたら、当然ですが失敗しました。

[oracle@ora19 ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Jun 9 00:50:25 2024
Version 19.3.0.0.0

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

Connected to an idle instance.

SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/19.0.0/dbhome_1/dbs/initorcl.ora'
SQL>

おまけ

「2. シャットダウン」⇒「3. 制限モードでマウント」の手順を踏まなくても、startup restrict force mount;を実行すれば、シャットダウンと制限モードでのマウントを同時にやってくれます。

公式ドキュメントにはstartup restrict force mount;が記載されています。本記事では、流れを分かりやすくするために、あえて2回に分けて実行していました。

SQL> startup restrict force mount;
ORACLE instance started.

Total System Global Area 1962931744 bytes
Fixed Size                  8898080 bytes
Variable Size            1191182336 bytes
Database Buffers          754974720 bytes
Redo Buffers                7876608 bytes
Database mounted.
SQL>

参考にした公式ドキュメント

https://docs.oracle.com/cd/F19136_01/sqlrf/DROP-DATABASE.html
https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/user-managed-recovery-advanced.html#GUID-834054AF-7189-4CD6-93D4-1CD4EB6BF1F1
⇒31.9 Dropping a Database with SQL*Plus

Discussion