在一個資料庫中模擬兩個資料庫(每個資料庫中使用者都建立表的同義詞)
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 模式:每個服務一個資料庫模式資料庫
- 建立一個MySQL資料庫中的datetime型別MySql資料庫型別
- 建立一個SQL測試資料庫 - 消費者資料庫SQL資料庫
- 在Linux中,如何備份一個資料庫?Linux資料庫
- 單一資料庫拆分成幾十個資料庫的意義資料庫
- 查詢資料庫每個表佔用的大小資料庫
- MySQL資料庫之mysql5.7基礎 檢視一個資料庫中的所有表MySql資料庫
- 【SQLServer】如何檢視某個資料庫中,每個table的資料量大小SQLServer資料庫
- java比較mysql兩個資料庫中差異JavaMySql資料庫
- 使用SQL語句將資料庫中的兩個表合併成一張表SQL資料庫
- 建立資料庫表資料庫
- EF 中多個資料庫遷移資料庫
- 在ABAP裡取得一個資料庫表記錄數的兩種方法資料庫
- 如何比較兩個資料庫表結構的不同資料庫
- efcore 跨表查詢,實現一個介面內查詢兩個不同資料庫裡各自的表資料資料庫
- django哪個模組配置資料庫Django資料庫
- 如何建立最簡單的 ABAP 資料庫表,以及編碼從資料庫表中讀取資料 (上)資料庫
- 資料庫 建立 3表資料庫
- 一百個人心中有100個哈姆雷特,一百個國產資料庫廠家眼裡只有兩個優秀的資料庫資料庫
- 資料庫中AS的使用意義資料庫
- 資料庫連線 系列一:laravel框架如何連線兩個資料庫(不同伺服器)資料庫Laravel框架伺服器
- SQL Server資料庫檢視一個資料表各列的註釋SQLServer資料庫
- 生產資料庫、開發資料庫、測試資料庫中的資料的區分資料庫
- SAP中的資料庫表索引資料庫索引
- 國產資料庫:達夢資料庫的幾個版本介紹資料庫
- Redis多個資料庫的概念Redis資料庫
- oracle 觸發器,當一個表更新或插入時將資料同步至另個庫中的某個表中Oracle觸發器
- 在MongoDB資料庫中查詢資料(上)MongoDB資料庫
- 資料庫在資料分析中如何應用資料庫
- LSM設計一個資料庫引擎資料庫
- 多例項資料庫一個用PSU資料庫
- DBeaver如何連線一個資料庫資料庫
- SQL建立資料庫和表SQL資料庫
- 建立資料庫資料庫
- Oracle 如何快速的 duplicate 一個資料庫Oracle資料庫
- 從資料庫中拿資料庫總是拿到上一條資料,還能拿到刪除的表的資料資料庫
- 在Django中,多資料操作,你可以編寫測試來查詢另一個資料庫伺服器中的資料,並將結果匯入當前Django專案的資料庫表中Django資料庫伺服器
- 通過命令在navicat中建立資料庫及表結構資料庫
- Oracle同一臺伺服器建立多個資料庫Oracle伺服器資料庫