0. 前言
由於目前的專案採用 Oracle, 且整個資料庫是由客戶的 DBA 在管理, 為了安全上的考量, 在存取客戶現行使用者的資料表時, 只會提供廠商新的使用者帳號及密碼, 而不會提供現行使用者的帳號及密碼.
舉例而言, 假設 table: T2 由客戶的 USER2 所建立, 而客戶提供給廠商的使用者為 USER1; 雖然客戶已將 USER2.T2 這個 table 的權限開放給 USER1, 當然可以採用 USER2.T2 去存取.
但這樣會造成 參考文件1 提到的狀況:
- 每次使用用 Table 時都要加上 "USER2.".
- 程式碼寫死了 Schema 名稱, 一旦Schema名稱調整, 將有改不完的程式.
在網路上查了一下, 看來應該可以透過 Synonym (別名) 的方式來處理. Synonym 的用途如下:
- 主要用在縮短資料庫物件 (table, view, sequence or program unit) 的名稱, 不需實際指定 schema.
- 亦可用在如上述的資安議題.
以下茲分幾個步驟, 進行狀況模擬實測: