2013-02-21 64 views
1

我有一個包含大量數據的表(TMain),它歸檔到一個歸檔表(TArchive) - 記錄超過3個月。由於TMain是一個易失性表,並且它的列在一段時間內被更改/刪除,所以我想要進行某種控制,以便在TMain更改時TArchive始終保持同步。保存存檔表結構(列等)與實時表同步

在Oracle中實現此目的的最佳方式是什麼?

任何建議和解決方案,讚賞。

+3

建立一個組織過程,以便表上的DDL遵循一組規則? – 2013-02-21 12:09:06

+1

@你試過了什麼?你的研究成果是什麼?請詳細說明。 – Jesse 2013-02-21 12:12:06

回答

1

Oracle中的DDL不是事務性的。這意味着在兩個對象中跨DDL複製DDL的自動化過程將會有些缺陷。如果第二個DDL語句失敗怎麼辦?你不能回滾第一個,你卡住了。

此外,您應該已經有一個外部組織過程來驗證DDL。例如,在許多組織中,開發人員只能對開發數據庫進行更改。這些更改會傳播到臨時數據庫以用於測試目的。只有數據庫管理員可以將這些更改一經驗證即可推向生產。即使開發人員和DBA是同一個人,您也應該遵循以下準則:驗證每個DDL。

由於這些原因,我建議不要自動化DDL複製。這看起來太麻煩了。相反:

  • 如果不更改表結構時候,只是在DBA清單添加規則。
  • 如果您經常更改表格,也許您可​​以查看不需要DDL的備用體系結構。例如,將易失性信息存儲爲結構化程度較低的格式(如XML)時,還可以添加可能擁有不同類型信息(取決於行)的通用列。即使是本地化的鍵值表也可以緩解改變表結構的需要。
1

保存歷史數據的最佳解決方案與存儲當前數據的方式相同,即分區。
你也可以在11G中設置間隔,oracle會自動創建新的分區。儘管如此,如果您想要使用壓縮功能,請考慮在存在壓縮分區時無法進行DDL更改。