Oracle創(chuàng)建同義詞基本方法及其可能遇到的問題
很多客戶有屬于自己的數(shù)據(jù)庫(kù)服務(wù)器,來(lái)管理自己的一些重要數(shù)據(jù)。那如果我們的項(xiàng)目中需要用到這些數(shù)據(jù),而客戶又不允許把這些數(shù)據(jù)插入到我們的項(xiàng)目數(shù)據(jù)庫(kù)服務(wù)器時(shí)怎么辦?其中的一個(gè)解決辦法就是在項(xiàng)目數(shù)據(jù)庫(kù)服務(wù)器上創(chuàng)建基于客戶關(guān)鍵數(shù)據(jù)服務(wù)器的某些表或是視圖的同義詞。這里來(lái)介紹一下本人在項(xiàng)目中做的基于遠(yuǎn)程服務(wù)器視圖如何對(duì)Oracle創(chuàng)建同義詞的過程。
一、創(chuàng)建database link。兩臺(tái)不同的數(shù)據(jù)庫(kù)服務(wù)器,從項(xiàng)目數(shù)據(jù)庫(kù)服務(wù)器的一個(gè)用戶讀取客戶關(guān)鍵數(shù)據(jù)的數(shù)據(jù)庫(kù)服務(wù)器下的某個(gè)用戶的數(shù)據(jù),這個(gè)時(shí)候可以使用dblink。假設(shè)客戶提供的數(shù)據(jù)庫(kù)服務(wù)器信息如下:
而創(chuàng)建database link的語(yǔ)法為:
這時(shí),先要配置本地服務(wù)。打開TNSNAMES.ORA Network Configuration File: D:\ORA\NETWORK\ADMIN\tnsnames.ora文件(根據(jù)自己的機(jī)器的情況而定),將
LIMSTQ =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.107.6.15)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = VGSM)
)
)
添加到此文件的后面(注意LIMSTQ前面不要留空格)。
然后,再創(chuàng)建dblink。而數(shù)據(jù)庫(kù)參數(shù)global_name=true時(shí),就要要求數(shù)據(jù)庫(kù)鏈接名稱跟遠(yuǎn)端客戶數(shù)據(jù)庫(kù)名稱一樣。我們必須先要確定一下。查看此參數(shù)的語(yǔ)句如下:如果是ture,記得創(chuàng)建的dblink名和遠(yuǎn)程端的數(shù)據(jù)庫(kù)一樣,很幸運(yùn),我用的數(shù)據(jù)庫(kù)參數(shù)global_name的value值是false。
數(shù)據(jù)庫(kù)全局名稱可以通過以下命令查出:查詢遠(yuǎn)端數(shù)據(jù)庫(kù)里的表:這時(shí),我就創(chuàng)建了自己的databae link:create database link limstq.us.oracle.com connect to jlgl identified by jlgl using 'limstq';
二、Oracle創(chuàng)建同義詞,很簡(jiǎn)單。Oracle建立同義詞的語(yǔ)法如下:
所建立的同義詞語(yǔ)法是:create synonym jl_gljs_tb_lims for JLGL_LIMS@limstq.us.oracle.com;
三、Oracle創(chuàng)建同義詞成功后,就可以在項(xiàng)目數(shù)據(jù)庫(kù)服務(wù)器上通過select jl_gljs_tb_lims來(lái)進(jìn)行客戶的關(guān)鍵數(shù)據(jù)的查找操作了。但如果可能的話,***再建立一個(gè)視圖,形式如下:create or replace view jl_gljs_limstq_vw as select * from jl_gljs_tb_lims;這樣,基于遠(yuǎn)程服務(wù)器視圖的Oracle創(chuàng)建同義詞過程就完成了。
可能遇到的問題:如果你在Oracle創(chuàng)建同義詞過程中發(fā)現(xiàn)了像如下的不能連接的錯(cuò)誤的話,一定會(huì)很郁悶吧。ORA-12154: TNS: 無(wú)法解析指定的連接標(biāo)識(shí)符。而你通過查看ora文件,發(fā)現(xiàn)自己已經(jīng)配了TNS的。這也是令我頭疼的問題。你一定要看清楚了,一定要把本地服務(wù)創(chuàng)建到項(xiàng)目數(shù)據(jù)庫(kù)服務(wù)器的主服務(wù)器的ora文件中,而不是自己的客戶端的ora文件中。你可能正在使用pl/sql或是sql plus等工具,但是你所用的機(jī)器是客戶端,而不是真正的項(xiàng)目主服務(wù)器(除非在自己的機(jī)器上創(chuàng)建的是oracle)。只有找到主服務(wù)器ora文件,將本地服務(wù)配置到里面,才算ok了。此時(shí),你就可以通過在自己的項(xiàng)目中輕松的通過查找同義詞或新建的視圖來(lái)訪問客戶的數(shù)據(jù)庫(kù)服務(wù)器中的一些關(guān)鍵數(shù)據(jù)了。
【編輯推薦】
- Oracle創(chuàng)建存儲(chǔ)過程不得不看的方案
- Oracle創(chuàng)建相關(guān)的存儲(chǔ)過程最有效的方法
- Oracle創(chuàng)建表空間的代碼示例
- Oracle創(chuàng)建刪除用戶的實(shí)際操作步驟
- Oracle創(chuàng)建表空間的實(shí)操