當整列資料 (所有欄位) 完全相同時,去重最簡潔高效:
-- 1. 去重存入暫存表
CREATE TABLE temp_table AS SELECT DISTINCT * FROM target_table;
-- 2. 清空目標表 (TRUNCATE 瞬間完成、不產生 UNDO、釋放 High Water Mark)
TRUNCATE TABLE target_table;
-- 3. 寫回去重資料
INSERT INTO target_table SELECT * FROM temp_table;
-- 4. 清理暫存表
DROP TABLE temp_table;
INSERT INTO t_table_bak SELECT DISTINCT * FROM t_table;
TRUNCATE TABLE t_table;
INSERT INTO t_table SELECT * FROM t_table_bak;
DROP TABLE t_table_bak;
TRUNCATE vs DELETE:不掃描列、不觸發 Trigger、瞬間釋放空間、重設 HWM。DISTINCT 在暫存表建立階段完成,主表僅做全表掃描一次。TRUNCATE PARTITION 平行處理。針對乾淨重裝需求,手動清理三大殘留區:
regedit → HKEY_LOCAL_MACHINE\SOFTWARE\Oracle → 刪除整個 Oracle 節點
D:\oradata)C:\app\oracle\product\19.0.0\dbhome_1)C:\Program Files\Oracle → 刪除 Oracle 資料夾
services.msc 刪除 OracleServicesc delete 指令)Path 移除 Oracle 相關路徑# 停止服務
$ORACLE_HOME/bin/dbshut $ORACLE_HOME
$ORACLE_HOME/bin/lsnrctl stop
# 刪除安裝目錄
rm -rf $ORACLE_BASE
# 刪除清單目錄
rm -rf /etc/oraInst.loc /etc/oratab /opt/ORCLfmap
# 刪除用戶/群組 (謹慎)
# userdel oracle; groupdel oinstall; groupdel dba
圖形介面:runInstaller -deinstall 或 setup.exe -deinstall
無人值守:回應檔 REMOVE_HOMES 參數指定要移除的 Oracle Home。
**優點**:自動清理登錄、服務、檔案、清單,**強烈建議優先使用官方反安裝**,手動清理僅作補充或 OUI 失效時備援。
| 任務 | 推薦方法 | 關鍵點 |
|---|---|---|
| 完全重複列去重 | DISTINCT → TRUNCATE → INSERT | TRUNCATE 瞬間清空、不產生 UNDO |
| Windows 移除安裝殘留 | OUI 反安裝 + 手動補清理 | 登錄、服務、資料目錄、安裝目錄、Path |
| Linux 移除安裝殘留 | OUI 反安裝 + 刪除 $ORACLE_BASE | /etc/oraInst.loc、/etc/oratab 同步清理 |