故事背景是這樣的:一個項目大概涉及到4個工程同時開發,在我自己的工程中需要做一個報表,但是要訪問另一個工程所連接的DB,當然兩個工程的DB Server是在同一個IP上,也就是說我們之間只是schema不一樣,那我怎樣完成下面的報表的開發呢?
一開始我直接創建了一個DBLink,但是回頭和同時溝通,他認為DBLink的影響過大,當兩個數據庫不在同一個服務器上的時候才會用到這個,當前的情況最好用schema,但是此處還是把創建DBLink的方法寫出來方便記憶:
create database link link名稱 connect to 對方數據庫用戶名 identifiedby 對方數據庫用戶密碼using '對方數據庫ip:端口/實例名';
Eg:create database linkdbLinkToAA connect to Jason identified by abc123 using 'serviceA',創建一個連接就行了
接下來就是用schema了,下面的語句就是用schema做關聯
Eg:grant select on Jason.emp to Lucy; 授權查詢
關於schema我個人的理解是:A要見B,當A和B在河岸的同一側(同一個Server),B只要允許A見他就可以了,當A和B不在河岸的同一側(不同Server),那A要搭一座橋,並且還得獲得B的同意,也就是知道B的用戶名和密碼。
以上是個人理解,如果那裡不合適,還請各位指正,共同學習。
別忘了被訪問的用戶中的表被授權其他用戶可以訪問。