close

  使用過Oracle Database的人都知道,在Oracle資料庫中,owner=schema,
所以, 一個物件,尤其是table,要更換owner,那得要匯出( SQL檔或dump檔 ),然後匯入新owner中,
如果遇到有很多table時,或甚至資料量很大時,就要花很長的時間處理,
非到萬不得已,資料庫管理人員不會想做這樣的動作。

在EnterpriseDB中,因為物件owner和schema是分開的,所以owner只是一個連結,要改變很容易!
底下是一個簡單的範例:

首先,以test這個Role建立一個名叫test1的table,所以test1的owner是test,
edb_chgOwner01.png  

假如,我們要將test這個帳號刪除,會出錯,因為該帳號底下有物件。
所以,我們要先將該帳號所擁有的物件轉移給其他帳號。

 

首先,點選該帳號,選右鍵,
edb_chgOwner02.png 

 

選擇“重分配/移除已擁有...“,
edb_chgOwner03.png  

 

選擇“重新分配物件到”,將物件要改分配給哪一個帳號所擁有,
edb_chgOwner04.png 

在“資料庫來自”,選擇在哪一個資料庫底下,

確認,

edb_chgOwner05.png 
 
更新完之後,要作refresh的動作,pgAdmin顯示內容才會更新,

edb_chgOwner06.png 

 

更新後,就能看到擁有者己經由test改成enterprisedb了,
edb_chgOwner07.png  

這個動作,最好是由superuser來執行,才不會有權限不足的限制。

 

如果table很多或資料量很大時,時間上就可以省去許多。

 


補充:
若只是要異動單一table的owner,則執行
 alter table public.test1 owner to test;

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 來自大海的心 的頭像
    來自大海的心

    康爸的花圃

    來自大海的心 發表在 痞客邦 留言(0) 人氣()