COM (正式庫)、COMTEST (測試庫),均有表 TAW_RM_USER (含 PASSWORD、USER_ID)。UPDATE COM.TAW_RM_USER SET PASSWORD='123456'; 全表密碼被覆蓋。CREATE TABLE COMTEST.TAW_RM_USER_BAK AS SELECT * FROM COMTEST.TAW_RM_USER;
DROP TABLE COMTEST.TAW_RM_USER;
IMP COMTEST/COMTEST FILE=backup.dmp TABLES=TAW_RM_USER FROMUSER=COM TOUSER=COMTEST
得到 10 天前正式庫密碼快照 (表名 COMTEST.TAW_RM_USER)。
DECLARE
CURSOR C_SRC IS SELECT USER_ID, PASSWORD FROM COMTEST.TAW_RM_USER;
V_USER_ID COMTEST.TAW_RM_USER.USER_ID%TYPE;
V_PWD COMTEST.TAW_RM_USER.PASSWORD%TYPE;
BEGIN
OPEN C_SRC;
LOOP
FETCH C_SRC INTO V_USER_ID, V_PWD;
EXIT WHEN C_SRC%NOTFOUND;
UPDATE COM.TAW_RM_USER
SET PASSWORD = V_PWD
WHERE USER_ID = V_USER_ID; -- 僅匹配舊用戶,新增用戶不受影響
END LOOP;
CLOSE C_SRC;
COMMIT;
END;
DROP TABLE COMTEST.TAW_RM_USER;
CREATE TABLE COMTEST.TAW_RM_USER AS SELECT * FROM COMTEST.TAW_RM_USER_BAK;
USER_ID 為唯一鍵,避免姓名重複導致錯誤更新。WHERE USER_ID = V_USER_ID 確保僅更新 DMP 存在的用戶,期間新增用戶密碼保持現狀。PASSWORD,郵箱、電話等近期變更完整保留。DDL觸發器 審計所有 UPDATE 操作,關鍵表加 FGA 精細審計。