首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle 手動刪除資料庫完整教程:檔案系統與 ASM 環境

     編輯:Oracle 教學

Oracle 手動刪除資料庫完整教程:檔案系統與 ASM 環境

當 DBCA 無法使用或需徹底清理殘留資料庫時,手動刪除是必要技能。本文分別針對檔案系統與 ASM 儲存環境,提供標準化刪除步驟:停止服務、收集檔案資訊、MOUNT 限制模式、DROP DATABASE、清理作業系統檔案、修改配置檔。ASM 環境額外涵蓋 ASMCMD 與 SQL 方式清理磁碟組殘留檔案。

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

1. 停止監聽與 OEM

lsnrctl stop listener_name
emctl stop dbconsole

2. 收集檔案路徑資訊

sqlplus / as sysdba
SELECT STATUS, NAME FROM V$CONTROLFILE;      -- 控制檔
SELECT * FROM V$DBFILE;                      -- 資料檔
SELECT * FROM V$LOGFILE;                     -- 重做日誌檔
ARCHIVE LOG LIST;                            -- 歸檔位置與序列
SHUTDOWN ABORT;                              -- 資料不需保留,直接中止

3. 啟動至 MOUNT 限制模式

STARTUP MOUNT EXCLUSIVE RESTRICT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;

4. 執行 DROP DATABASE

DROP DATABASE;
EXIT

效果: 自動刪除控制檔、資料檔、線上日誌檔、歸檔日誌、備份片 (若配置)、SPFILE。但不會刪除 $ORACLE_BASE/admin、$ORACLE_HOME/dbs 參數檔、監聽配置等外部檔案。

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 $TNS_ADMIN/*.ora          -- 若設定 TNS_ADMIN
rm $ORACLE_HOME/network/admin/*.ora

7. 修改系統配置檔

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

二、ASM 環境手動刪除 (差異處)

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

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

STARTUP MOUNT EXCLUSIVE RESTRICT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
DROP DATABASE;  -- 自動清理 ASM 中的資料/日誌/暫存檔
EXIT

2. 連接 ASM 實例清理殘留

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;

3. 使用 ASMCMD 清理 (推薦)

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              -- 驗證空間釋放

4. 清理作業系統層檔案 (同檔案系統步驟 5-7)

rm -rf $ORACLE_BASE/admin/$ORACLE_SID
rm -rf $ORACLE_HOME/dbs/*$ORACLE_SID*
# 監聽、oratab、bash_profile 清理同上

關鍵提醒

  • DROP DATABASE 不可逆,執行前務必確認備份狀態
  • ASM 環境雙重清理:資料庫層 DROP DATABASE + ASM 層 ASMCMD rm
  • 追蹤檔、告警日誌位於檔案系統,需手動清理
  • 生產環境建議優先使用 DBCA 刪除,手動僅作緊急/殘留清理
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved