一、建立表空間html
使用system登陸,system/manager sysdba數據庫
執行oracle
CREATE TABLESPACE ts1 DATAFILE 'F:\tablespace\ts1' size 100M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; CREATE TABLESPACE ts2 DATAFILE 'F:\tablespace\ts2' size 100M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
會發現F:\tablespace文件夾下生成兩個新文件TS1和TS2ide
若要刪除表空間編碼
執行spa
DROP TABLESPACE ts1 INCLUDING CONTENTS AND DATAFILES; DROP TABLESPACE ts2 INCLUDING CONTENTS AND DATAFILES;
二、建立用戶code
create user user1 identified by user1 default tablespace ts1; create user user2 identified by user2 default tablespace ts2;
建立兩個新用戶,用戶user1使用表空間tablespace1,用戶user2使用表空間tablespace2htm
三、賦權it
grant connect,resource to user1; grant create any sequence to user1; grant create any table to user1; grant delete any table to user1; grant insert any table to user1; grant select any table to user1; grant unlimited tablespace to user1; grant execute any procedure to user1; grant update any table to user1; grant create any view to user1;
對用戶user2的賦權同理
四、建表table
connect user1/user1,切換成user1用戶
執行
create table table1 ( id VARCHAR2(32) not null, code NUMBER, name VARCHAR2(500) ) comment on column table1.id is '主鍵ID'; comment on column table1.code is '編碼'; comment on column table1.name is '名稱';
connect user2/user12,切換成user2用戶
執行
create table table2 ( id VARCHAR2(32) not null, code NUMBER, name VARCHAR2(500) ) comment on column table2.id is '主鍵ID'; comment on column table2.code is '編碼'; comment on column table2.name is '名稱';
至此,在oracle數據庫裏,就建立了兩個用戶,對應兩個表空間。若要實現兩個用戶管理下的表之間的透明性,便可以數據互查。能夠經過視圖或同義詞。
五、建立視圖
create view V_USER1_TABLE1 as select * from USER1.TABLE1
則user2用戶能夠使用select * from V_USER1_TABLE1來查詢到user1用戶管理下的table1表
六、建立同義詞
建立同義詞以前,要先建立數據源鏈接database link
connect system/manager,切換成system用戶
執行
create public database link conn_to_user1 connect to user1 identified by user1 using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) )';
public表示該數據庫源鏈接的全部者爲共有的
建立完數據源鏈接後,就能夠建立同義詞了
create or replace public synonym USER2_TABLE1 for USER1.TABLE1@CONN_TO_USER1;
表示同義詞USER2_TABLE1指向USER1下的TABLE1表,能夠使用USER2_TABLE1來查詢USER1下的TABLE1表
同建立數據庫源鏈接一下,有一個public關鍵字,表示該同義詞是公有的,即全部用戶均可以使用。若要對此權限進行限制能夠使用下面的方式。
connect system/manager,切換成system用戶
執行
grant create synonym to user2
給USER2用戶賦予建立同義詞的權限
connect user2/user2,切換成user2用戶
執行
create or replace synonym USER2_TABLE1 for USER1.TABLE1@CONN_TO_USER1;
則該同義詞的全部者爲當前用戶user2(數據庫源鏈接同理),則user2用戶能夠使用select * from USER2_TABLE1來查詢到user1用戶管理下的table1表