在一個資料庫中模擬兩個資料庫(每個資料庫中使用者都建立表的同義詞)
OS:AIX5.3
Oracle:Oracle10.2.0.1.0
標題:在一個資料庫中模擬兩個資料庫(每個資料庫中都表的同義詞)
需求描述:目前需要在一個資料庫中模擬兩個資料庫(每個資料庫中都需要有2個使用者訪問相同的物件,這就需要建立私有同義詞)。原來的資料庫中存在一個lhomswas使用者,該使用者所擁有的物件增刪改查許可權都賦予給lhdt使用者,該使用者還建立了與表名一樣的公共同義詞(public synonym),現在需要新建一個jtomswas使用者,這個使用者匯入其他的資料庫,jtomswas使用者所擁有的物件都授權給jtdt使用者。(這同時需要新建jtdt使用者,並在jtomswas使用者的表中建立私有的同義詞,這樣方便jtdt使用)。
因為資料庫已經存在了lhomswas使用者,並且存在了lhdt使用者。
1、用lhomswas使用者檢視自己擁有的同義詞
SQL>select * from all_synonyms where table_owner='LHOMSWAS'; |
如果表中沒有公共的同義詞,可以建立;把所有的表建立相應的公共同義詞sql語句,如:
SQL>select 'create or replace public synonym '|| table_name || ' for lhomswas.'||table_name||';' from user_tables; |
把產生的sql語句匯出來,然後在lhomswas使用者下執行即可。這樣可以把lhomswas使用者的所有表建立相應的同義詞了。
2、用lhomswas檢視自己所擁有的表是否已經授權給了lhdt使用者
SQL>select * from user_tab_privs; |
如果沒有授權,把所有表的增刪改查許可權授權給lhdt使用者sql語句,如:
SQL>select 'grant select,update,insert,delete on '||table_name||' to lhdt;' from user_tables; |
把產生的sql語句匯出來,然後在lhomswas使用者下執行即可。這樣可以把lhomswas使用者的所有表授權給lhdt使用者了。
3、在資料庫中建立表空間,用來供新建立jtomswas使用
SQL> create tablespace jtomswas 2 datafile '/home/oraoms/oradata/omsdata/jtomswas.dbf' 3 size 512M autoextend on maxsize 10G; Tablespace created. |
4、建立jtomswas使用者
SQL> create user jtomswas 2 identified by jtomswas 3 default tablespace jtomswas ; User created. |
5、授權許可權:
SQL> grant connect,resource,dba to jtomswas; Grant succeeded. |
(暫時賦予DBA角色的許可權,以便匯入資料,不然許可權不夠)
6、現在先匯出其他資料庫中的資料,以便匯入進來(資料庫比較大的話,有可能需要好幾個小時)
在Windows的CMD視窗,或者是Linux、UNIX的命令視窗(前提是能夠使用Oracle exp、imp的命令):
exp jtomswas/password@ORCL file=E:\BeiJingDatabaseBackup20081215\beijing20081215.dump log=E:\BeiJingDatabaseBackup20081215\beijing20081215.log |
7、匯入到目前的資料庫中來(資料庫比較大的話,有可能需要好幾個小時)
在Windows的CMD視窗,或者是Linux、UNIX的命令視窗(前提是能夠使用Oracle exp、imp的命令):
imp fromuser=jtomswas touser=jtomswas rows=y ignore=yes grants=no file=E:\BeiJingDatabaseBackup20081215\beijing20081215.dump log=E:\BeiJingDatabaseBackup20081215\Impbeijing20081216.log |
8、新建jtdt使用者
SQL> create user jtdt 2 identified by jtdt; User created. |
9、給jtdt使用者授與許可權:
SQL>grant connect,resource to jtomswas; |
暫時賦予connect,resource的角色。
10、需要把jtomswas使用者的表許可權僅供jtdt使用者使用,所有建立私有的同義詞,以便與jtdt通訊,用jtomswas使用者查詢
SQL>select 'create synonym jtdt.'|| table_name || ' for jtomswas.'||table_name||';' from user_tables; |
把產生的sql語句匯出來,然後在jtomswas使用者下執行即可。這樣可以把jtomswas使用者的所有表建立相應的私有同義詞了。
11、把jtomswas使用者的表許可權授予給jtdt使用者
SQL>select 'grant select,update,insert,delete on '|| table_name ||' to jtdt;' from user_tables; |
把產生的sql語句匯出來,然後在jtomswas使用者下執行即可。這樣可以把jtomswas使用者的所有表授權給jtdt使用者了。
到此結束!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12778571/viewspace-512092/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在另一個資料庫中建立一個與原來資料庫中許可權一樣的使用者資料庫
- rac 建立兩個資料庫資料庫
- 批量的遷移一個資料庫上某使用者所有表的同義詞資料庫
- SqlServer將資料庫中的表複製到另一個資料庫SQLServer資料庫
- 定時從一個資料庫表中的資料儲存到另外一個資料庫中的表,而且怎麼處理重複的資料?...資料庫
- Sql Server 匯入另一個資料庫中的表資料SQLServer資料庫
- 【手工建庫】(二)在原有資料庫的基礎上再建立一個資料庫資料庫
- 資料庫鏈與同義詞資料庫
- 兩個資料庫結構相同,但使用者、表空間名稱都不同,如何把一個資料庫中的使用者導到另一個使用者中(zt)資料庫
- 兩個資料庫結構相同,但使用者、表空間名稱都不同,如何把一個資料庫中的使用者導到另一個資料庫
- 臨時表在Oracle資料庫與SQL Server資料庫中的異同Oracle資料庫SQLServer
- 建立一個MySQL資料庫中的datetime型別MySql資料庫型別
- 建立一個SQL測試資料庫 - 消費者資料庫SQL資料庫
- 在兩個資料庫之間進行資料同步資料庫
- 單一資料庫拆分成幾十個資料庫的意義資料庫
- 同步寫兩個資料庫資料庫
- 檢視某個資料庫在快取中的髒資料資料庫快取
- Oracle資料庫開發——同義詞Oracle資料庫
- 在Linux中,如何備份一個資料庫?Linux資料庫
- MySQL資料庫之mysql5.7基礎 檢視一個資料庫中的所有表MySql資料庫
- ECshop 每個資料庫表結構說明資料庫
- 【SQLServer】如何檢視某個資料庫中,每個table的資料量大小SQLServer資料庫
- 查詢資料庫每個表佔用的大小資料庫
- 從資料庫建立一個execl表格資料庫
- 向資料庫中全部表中增加一個欄位的SQL資料庫SQL
- 使用RMAN恢復一個資料庫到另一個目錄結構不同的資料庫中資料庫
- rman 可否克隆rac資料庫到另外一個rac環境的資料庫中?資料庫
- 怎樣在oracle資料庫中建一個只讀使用者Oracle資料庫
- 管理叢集資料庫的兩個使用者與兩個命令資料庫
- Oracle資料鏈+同義詞+訪問遠端資料庫Oracle資料庫
- 使用SQL語句將資料庫中的兩個表合併成一張表SQL資料庫
- 使用SQL語句從資料庫一個表中隨機獲取資料SQL資料庫隨機
- EF 中多個資料庫遷移資料庫
- 在VC++中建立自定義資料庫類 (轉)C++資料庫
- SQLServer資料庫中建立臨時表SQLServer資料庫
- 安裝jive中的一個資料庫問題?資料庫
- 建立資料庫表資料庫
- 【LISTENER】一個資料庫配置兩個監聽埠號資料庫