一. 環境說明:
1. 本機安裝10.2
2. 本地建了一個數據庫實例叫ywl
3. 在這個數據庫實例下面有一個用戶叫user1,它下面有很多表。
二. 問題描述:
1. 現在我要在ywl下面新加一個用戶叫user2,然後我會在這個用戶下,建自己的一些表,寫一些自己的存儲過程,存儲過程中需要訪問user1裏面一些表的數據。
2. 我的做法如下:
a) 創建一個新的表空間 newTableSpace,創建表空間的時候爲表空間設定大小,其他默認。
b) 創建一個新用戶 user2,創建的時候通過Enterprise Manage Concole來創建,直接在Security->users下創建一個用戶,
在創建窗口的General tab頁下面的tablespace中default中選擇新建的表空間newTableSpace,temporary默認。在role的tab頁中爲用戶選擇DBA role。
最後完成創建新用戶,user2.
c) 用user1連接LYPRD,連接成功後執行
select 'grant select on '||table_name||' to user2;' from user_tables;
grant select on XJ_VDSP_core.service to XJ_VDSP_up
grant select on XJ_VDSP_core.sp to XJ_VDSP_up
執行結果爲一組sql語句,將user1下的所有表的select權限都授權給了user2.
將執行結果中的需要授權的表的grant語句拷貝出來,然後在user1下將這些grant語句全部執行,即完成了將user1的特定表的查詢權限授予給了user2.
用user2連接ywl,在user2下寫存儲過程,裏面用到user1中表的時候,
直接用user1.tablename即可。