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

Oracle 徹底刪除完全重複記錄與快速移除資料庫安裝殘留

     編輯:Oracle 資料庫基礎

完全重複記錄刪除:DISTINCT + TRUNCATE 模式

當整列資料 (所有欄位) 完全相同時,去重最簡潔高效:

標準四步驟

-- 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 平行處理。

快速移除 Oracle 資料庫安裝殘留 (Windows)

針對乾淨重裝需求,手動清理三大殘留區:

1. 登錄表

regedit → HKEY_LOCAL_MACHINE\SOFTWARE\Oracle → 刪除整個 Oracle 節點

2. 資料檔與安裝目錄

  • 安裝時指定的資料檔目錄 (如 D:\oradata)
  • 軟體安裝目錄 (如 C:\app\oracle\product\19.0.0\dbhome_1)

3. 程式檔案目錄

C:\Program Files\Oracle → 刪除 Oracle 資料夾

4. 服務與環境變數 (補充)

  • services.msc 刪除 OracleService、OracleTNSListener 等服務 (sc delete 指令)
  • 環境變數 Path 移除 Oracle 相關路徑
  • 開始功能表捷徑清理

Linux/Unix 環境快速清理

# 停止服務
$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

官方工具:Oracle Universal Installer (OUI) 反安裝

圖形介面:runInstaller -deinstall 或 setup.exe -deinstall
無人值守:回應檔 REMOVE_HOMES 參數指定要移除的 Oracle Home。

**優點**:自動清理登錄、服務、檔案、清單,**強烈建議優先使用官方反安裝**,手動清理僅作補充或 OUI 失效時備援。

總結

任務推薦方法關鍵點
完全重複列去重DISTINCT → TRUNCATE → INSERTTRUNCATE 瞬間清空、不產生 UNDO
Windows 移除安裝殘留OUI 反安裝 + 手動補清理登錄、服務、資料目錄、安裝目錄、Path
Linux 移除安裝殘留OUI 反安裝 + 刪除 $ORACLE_BASE/etc/oraInst.loc、/etc/oratab 同步清理
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved