特殊的物化檢視重新整理 (r4筆記第77天)
現在有一個需求,某個環境中存在兩個使用者,一個使用者中存在物化檢視,另一個使用者中存在源表,根據業務的需要,需要做一種特別的物化檢視重新整理。
物化檢視使用者中的物化檢視為CORP_NAME
源資料使用者中的表為ADD_CORP_NAME
可能資料重新整理是沒有問題,關鍵就是在於CORP_NAME中的欄位要比ADD_CORP_NAME多一些。
CORP_NAME
ADD_CORP_NAME
CORP_ID | CORP_ID
SYS_CREATION_DATE | SYS_CREATION_DATE
SYS_UPDATE_DATE | SYS_UPDATE_DATE
OPERATOR_ID | OPERATOR_ID
APPLICATION_ID | APPLICATION_ID
DL_SERVICE_CODE | DL_SERVICE_CODE
DL_UPDATE_STAMP | DL_UPDATE_STAMP
CORP_NAME | CORP_NAME
FUTURE1 |
FUTURE2 |
FUTURE3 |
根據開發的反饋,FUTURE1,FUTURE2,FUTURE3這三個欄位的值是dummy欄位,只是純粹業務需要,但是沒有實際的值。根據業務的需求,這三個欄位的資料型別需要為VARCHAR2(10),VARCHAR2(20),VARCHAR2(30)
明白了大體的需求,因為表資料量很小,所以沒有做特別的處理,採用全表重新整理。
CREATE MATERIALIZED VIEW CORP_NAME AS SELECT
CORP_ID ,
SYS_CREATION_DATE ,
SYS_UPDATE_DATE ,
OPERATOR_ID ,
APPLICATION_ID ,
DL_SERVICE_CODE ,
DL_UPDATE_STAMP ,
CORP_NAME ,
' ' FUTURE1 ,
' ' FUTURE2 ,
' ' FUTURE3
FROM XXXX.ADD_CORP_NAME;
和開發做了確認,雖然這幾個欄位是dummy欄位,但是可能會從客戶端做校驗,如果是char(1)很可能會有錯誤。
最後在查看了一些資料後,發現可以更改物化檢視的資料型別。
ALTER MATERIALIZED VIEW CORP_NAME MODIFY(FUTURE1 VARCHAR2(10));
ALTER MATERIALIZED VIEW CORP_NAME MODIFY(FUTURE2 VARCHAR2(20));
ALTER MATERIALIZED VIEW CORP_NAME MODIFY(FUTURE3 VARCHAR2(30));