首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 資料庫手動刪除完整操作指南 (檔案系統與 ASM 環境)

     編輯:Oracle 資料庫相關知識

當 DBCA 無法使用、或需徹底清除殘留實例時,手動刪除資料庫是 DBA 必備技能。本文提供標準化、可驗證的操作流程,分為「檔案系統」與「ASM 儲存」兩大場景,涵蓋停止服務、清理檔案、修改配置的完整步驟。

一、檔案系統環境手動刪除

1. 停止監聽與 EM

$ lsnrctl stop LISTENER_NAME
$ emctl stop dbconsole

2. 記錄關鍵檔案路徑 (以 SYSDBA 登入)

SQL> SELECT status, name FROM v$controlfile;   -- 控制檔
SQL> SELECT * FROM v$dbfile;                  -- 資料檔
SQL> SELECT * FROM v$logfile;                 -- 重做日誌檔
SQL> ARCHIVE LOG LIST;                        -- 歸檔資訊

3. 強制關閉並啟動到 MOUNT 狀態

SQL> SHUTDOWN ABORT;
SQL> STARTUP MOUNT EXCLUSIVE RESTRICT;

4. 啟用受限會話並執行 DROP DATABASE

SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> DROP DATABASE;
SQL> EXIT

DROP DATABASE 會刪除控制檔、資料檔、重做日誌檔、線上日誌、臨時檔,並更新控制檔記錄。若啟用 OMF,相關檔案亦會自動清除。

5. 手動清除殘留目錄與檔案

$ 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*        # 參數檔、密碼檔等

6. 清理監聽配置 (建議)

$ rm -f $TNS_ADMIN/*.ora          # 若設定 TNS_ADMIN
$ rm -f $ORACLE_HOME/network/admin/*.ora

7. 修改系統配置檔

$ vi /etc/oratab        # 移除實例條目
$ vi ~/.bash_profile    # 移除環境變數設定

二、ASM 環境手動刪除 (差異點聚焦)

ASM 環境下,資料檔、控制檔、日誌檔、參數檔均儲於 ASM 磁碟組,需在 ASM 實例額外清理。

1. 執行檔案系統流程的步驟 3-4 (先 SHUTDOWN ABORT)

2. 執行 DROP DATABASE (清除 ASM 內資料/日誌/臨時檔)

SQL> DROP DATABASE; EXIT

3. 連接 ASM 實例

$ export ORACLE_SID=+ASM
$ sqlplus / as sysdba

4. 清除 ASM 殘留檔案 (兩種方式擇一)

方式 A:SQL 指令

SQL> SELECT name, file_number, group_number, file_incarnation FROM v$asm_alias;
SQL> ALTER DISKGROUP DG1 DROP DIRECTORY '+DG1/asmdb/file_name';
SQL> ALTER DISKGROUP REV DROP DIRECTORY '+REV/asmdb/file_name';
SQL> SELECT name, file_number, group_number, file_incarnation FROM v$asm_alias; -- 驗證

方式 B:ASMCMD 命令列 (推薦,直觀)

$ asmcmd
ASMCMD> ls -l
ASMCMD> cd +DG1
ASMCMD> ls
ASMCMD> rm -rf ASMDB
ASMCMD> cd +REV
ASMCMD> rm -rf ASMDB
ASMCMD> ls -s  # 確認空間釋放

5. 清除 OS 層殘留 (同檔案系統步驟 5-7)

  • 刪除 $ORACLE_BASE/admin/$ORACLE_SID、$ORACLE_HOME/dbs/*$ORACLE_SID*
  • 清理監聽配置、修改 /etc/oratab、~/.bash_profile

三、驗證清單

  • [ ] 實例無法啟動 (ORA-01034)
  • [ ] /etc/oratab 無殘留條目
  • [ ] OS 層資料/日誌/歸檔/快照目錄已清空
  • [ ] ASM 磁碟組空間已釋放 (ASMCMD ls -s 確認)
  • [ ] 監聽器無該實例服務註冊

四、避坑提醒

  • 切勿先刪 OS 檔案再 DROP DATABASE,會導致資料庫無法正常關閉/啟動。若已誤刪,需以 ALTER DATABASE DATAFILE ... OFFLINE DROP 方式修復後再 DROP TABLESPACE。
  • ASM 環境務必在 ASM 實例層面清理,單純 OS 刪除無效且危險。
  • 生產環境操作前,務必確認備份可用、變更流程走完、雙人核對。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved