跨表空間訪問數據

創建自己的用戶名,在自己的用戶名下建表,寫存儲過程,爲了方便管理,不與其他用戶公用表空間所引起一些不必要的麻煩。

一. 環境說明:
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即可。
發佈了90 篇原創文章 · 獲贊 0 · 訪問量 2335
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章