一、流程
- 公司A利用自己業務系統A將指定資源數據以csv文件上傳到ftp服務器;
- 公司B會通過已寫好的定時任務腳本讀取該ftp服務器目錄下文件,
(1)先進行檢查數據操作:包括本地數據最新日期以及ftp數據最新日期比對;當兩個數據日期無問題,就將資源數據文件下載到指定的目錄下,若下載成功,退出服務器。
(2)將下載好的資源文件數據導入中間表a,若完成,會報中間表導入成功;
(3)利用Oracle圖形化管理工具將中間錶轉成圖形表,直到圖形錶轉換成功爲止;
二、爲何引用中間表
- 我認爲中間表的引用主要是出於中轉的作用。當本公司業務系統需要利用到公司A提供的基礎數據並完成寫入數據庫,進而支撐業務系統滿足客戶的需求。我們首先應該保障自身數據庫數據的安全的前提下,來進行其他的操作;否則會因爲進行其他的操作的過程中,因爲某個BUG導致自身數據庫表受到破壞,從而事倍功半、得不償失。
- 我們也可以將中間表理解成爲一個接口表,用於連通我方與其他方,將其他方數據讀取到我方數據庫表中(處理某項數據時,作爲處理後的半成品數據存放的地方)
三、清理中間表
--檢查各個表空間佔用情況
SELECT DBF.TABLESPACE_NAME "表空間",
DBF.TOTALSPACE "總量(M)",
DBF.TOTALBLOCKS "總塊數",
DFS.FREESPACE "剩餘總量(M)",
DFS.FREEBLOCKS "剩餘塊數",
(DFS.FREESPACE / DBF.TOTALSPACE) * 100 "空閒比例"
FROM (SELECT T.TABLESPACE_NAME,
SUM(T.BYTES) / 1024 / 1024 TOTALSPACE,
SUM(T.BLOCKS) TOTALBLOCKS
FROM DBA_DATA_FILES T
GROUP BY T.TABLESPACE_NAME) DBF,
(SELECT TT.TABLESPACE_NAME,
SUM(TT.BYTES) / 1024 / 1024 FREESPACE,
SUM(TT.BLOCKS) FREEBLOCKS
FROM DBA_FREE_SPACE TT
GROUP BY TT.TABLESPACE_NAME) DFS
--檢查表佔用空間
SELECT SEGMENT_NAME "表名",
BYTES / (1024 * 1024) "表大小(M)",
OWNER "用戶"
FROM DBA_SEGMENTS
WHERE SEGMENT_TYPE = 'TABLE'
AND OWNER = 'ml'
ORDER BY BYTES DESC;
CREATE TABLE MID_CM_ML_1 AS SELECT * FROM MID_CM_ML WHERE DAY_ID > TO_CHAR(SYSDATE - 30, 'YYYYMMDD');
SELECT DISTINCT DAY_ID FROM MID_CM_ML_;
DROP TABLE MID_CM_ML;
PURGE TABLE "BIN$n9mmQcMQowbgU4oaEaxQ0w==$0";
ALTER TABLE MID_CM_ML_1 RENAME TO MID_CM_ML;
ALTER TABLE MID_CM_ML MODIFY(DAY_ID NUMBER(20) DEFAULT 1);
create index idx_ml_day_id on MID_CM_ML(DAY_ID);
create index idx_ml_province_id on MID_CM_ML(PROVINCE_ID);
create index idx_ml_int_id on MID_CM_ML(INT_ID);
注意:
- 如果在此過程中利用drop語句刪除掉本不該刪除的表,恢復辦法:
首先必須保證是9i或10g以上版本,否則flashback將無法恢復表
flashback table "BIN$b+XkkO1RS5K10uKo9BfmuA==$0" to before drop;