當 DBCA 無法使用或需徹底清理殘留資料庫時,手動刪除是必要技能。本文分別針對檔案系統與 ASM 儲存環境,提供標準化刪除步驟:停止服務、收集檔案資訊、MOUNT 限制模式、DROP DATABASE、清理作業系統檔案、修改配置檔。ASM 環境額外涵蓋 ASMCMD 與 SQL 方式清理磁碟組殘留檔案。
lsnrctl stop listener_name emctl stop dbconsole
sqlplus / as sysdba SELECT STATUS, NAME FROM V$CONTROLFILE; -- 控制檔 SELECT * FROM V$DBFILE; -- 資料檔 SELECT * FROM V$LOGFILE; -- 重做日誌檔 ARCHIVE LOG LIST; -- 歸檔位置與序列 SHUTDOWN ABORT; -- 資料不需保留,直接中止
STARTUP MOUNT EXCLUSIVE RESTRICT; ALTER SYSTEM ENABLE RESTRICTED SESSION;
DROP DATABASE; EXIT
效果: 自動刪除控制檔、資料檔、線上日誌檔、歸檔日誌、備份片 (若配置)、SPFILE。但不會刪除 $ORACLE_BASE/admin、$ORACLE_HOME/dbs 參數檔、監聽配置等外部檔案。
echo $ORACLE_SID rm -rf $ORACLE_BASE/admin/$ORACLE_SID rm -rf $ORACLE_BASE/oradata/$ORACLE_SID -- 依第2步查詢路徑,可能多路徑 rm -rf $ORACLE_BASE/arch/$ORACLE_SID rm -rf $ORACLE_BASE/flash_recovery_area/$ORACLE_SID rm -rf $ORACLE_HOME/dbs/*$ORACLE_SID*
rm $TNS_ADMIN/*.ora -- 若設定 TNS_ADMIN rm $ORACLE_HOME/network/admin/*.ora
vi /etc/oratab -- 移除實例條目 vi ~/.bash_profile -- 移除環境變數設定
ASM 環境下資料檔、控制檔、日誌檔、參數檔均儲存於 ASM 磁碟組,需在 ASM 實例中清理。
STARTUP MOUNT EXCLUSIVE RESTRICT; ALTER SYSTEM ENABLE RESTRICTED SESSION; DROP DATABASE; -- 自動清理 ASM 中的資料/日誌/暫存檔 EXIT
export ORACLE_SID=+ASM sqlplus / as sysdba -- 查看別名檔案 SELECT NAME, FILE_NUMBER, GROUP_NUMBER, FILE_INCARNATION FROM V$ASM_ALIAS; -- 方式一:SQL 刪除目錄/檔案 ALTER DISKGROUP DG1 DROP DIRECTORY '+DG1/asmdb/file_name'; ALTER DISKGROUP REV DROP DIRECTORY '+REV/asmdb/file_name'; -- 驗證 SELECT NAME, FILE_NUMBER, GROUP_NUMBER, FILE_INCARNATION FROM V$ASM_ALIAS;
export ORACLE_SID=+ASM asmcmd ASMCMD> ls -l ASMCMD> ls -s ASMCMD> cd +DG1 ASMCMD> ls ASMCMD> rm -rf ASMDB -- 遞迴刪除資料庫目錄 ASMCMD> cd +REV ASMCMD> rm -rf ASMDB ASMCMD> ls -s -- 驗證空間釋放
rm -rf $ORACLE_BASE/admin/$ORACLE_SID rm -rf $ORACLE_HOME/dbs/*$ORACLE_SID* # 監聽、oratab、bash_profile 清理同上
DROP DATABASE 不可逆,執行前務必確認備份狀態DROP DATABASE + ASM 層 ASMCMD rm