寫在最前面
oracle的多庫運(yùn)行與sqlserver有所不同犀填,oracle會(huì)為創(chuàng)建的每個(gè)庫生成一個(gè)服務(wù)辛慰,如果查看“任務(wù)管理器”,我們就會(huì)發(fā)現(xiàn)這個(gè)問題:
负蠕。
所以蛙埂,如果庫很多,千萬別忘了去“服務(wù)”里遮糖,把主要的oracle服務(wù)切換為手動(dòng)啟動(dòng)绣的。介于oracle服務(wù)對(duì)內(nèi)存的占用,最好別建太多庫。
考慮到以上問題,我們并沒有將原來的多庫結(jié)構(gòu)同步到oracle中使用巢钓,而是用了兩個(gè)主庫,其他的采用表空間的形式進(jìn)行惩嘉。
基本配置及上文
1.sqlserver轉(zhuǎn)oracle(一) oracle創(chuàng)建用戶
2.sqlserver轉(zhuǎn)oracle(二) Navicate連接oracle
3.sqlserver轉(zhuǎn)oracle(三) 數(shù)據(jù)遷移及數(shù)據(jù)結(jié)構(gòu)處理
oracle新建數(shù)據(jù)庫
1.在oracle安裝目錄下,找到Database Configuration Assistant.
2."下一步">"創(chuàng)建數(shù)據(jù)庫">“下一步”>"一般用途或事務(wù)處理">"下一步">"輸入數(shù)據(jù)庫名及sid"踢故,除了配置密碼的那一項(xiàng)文黎,其他的都下一步。
新建庫基本就是順著流程指引去做殿较,不在多言耸峭。但如果在oracle中進(jìn)行夸庫連接,就不能再像sqlserver中一樣直接"database.dbo.table"了淋纲。而是需要預(yù)先建好一個(gè)連接劳闹,它是一個(gè)公用的,像數(shù)據(jù)表一樣的東西帚戳。實(shí)際上一旦連接建立成功玷或,在夸庫甚至跨服務(wù)器的連接上,oracle更加方便片任。下面,就來建這個(gè)連接蔬胯。
database link建立夸庫連接
前提:你所使用的用戶名需要具有建立夸庫連接的權(quán)限对供。如果你的用戶名沒有這個(gè)權(quán)限,那么下面的幾步就會(huì)幫助你建立這種權(quán)限。
一产场、為用戶分配建立database link的權(quán)限
1.在命令提示符運(yùn)行如下命令鹅髓,使用sys賬號(hào)登錄sqlplus。
sqlplus sys/密碼@SID as sysdba
把以上命令中的密碼和sid換成自己數(shù)據(jù)庫的信息京景,比如我的密碼是123窿冯,數(shù)據(jù)庫的sid是orcl,那么我要運(yùn)行的是:sqlplus sys/123@orcl as sysdba
确徙。
2.連接成功后醒串,依次運(yùn)行如下命令:
grant create database link to username ; --為username賦予創(chuàng)建私有database link的權(quán)限
grant create public database link to username ;--為username賦予創(chuàng)建所有用戶可用的database link的權(quán)限
grant drop public database link to username; --為username賦予刪除database link的權(quán)限
上述命令中,username為你正常使用時(shí)的用戶名鄙皇。
二芜赌、創(chuàng)建database link
用已經(jīng)有權(quán)限的用戶登錄plsql或者Navicate,如前文中提到的那樣伴逸。并運(yùn)行如下命令:
create public database link linkName connect to Tusername IDENTIFIED BY Tpassword using 'connecstr'
缠沈。
解釋:
linkName--隨意取名,是這個(gè)連接的名字错蝴,夸庫的時(shí)候調(diào)用就用linkName洲愤。為了便于區(qū)分,我一般以_link結(jié)尾顷锰。
Tusername--要連接的數(shù)據(jù)庫的用戶名柬赐。
Tpassword--要連接的數(shù)據(jù)庫的密碼。
connecstr--.ora文件中的連接字符串馍惹,.ora文件一般位于“\product\11.2.0\dbhome_1\NETWORK\ADMIN”目錄下躺率。
實(shí)例
例如我.ora文件中,要連接的目標(biāo)庫的字符串如下:
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
目標(biāo)庫的名字為:orcl万矾;
可登錄目標(biāo)庫的用戶名密碼分別為: user1和123悼吱;
那么,我要建立的夸庫連接應(yīng)運(yùn)行如下命令:
create public database link orcl_link connect to user1 IDENTIFIED BY 123 using '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)'
這其中良狈,username 和 密碼是無需用單引號(hào)包裹的后添。
三、在查詢語句中調(diào)用
一旦連接建立薪丁,在查詢語句中的調(diào)用將變得非常簡(jiǎn)單遇西,直接在表后面@linkName就可以。
實(shí)例
如果上述的庫中有表test1严嗜,要通過上述建立的orcl_link去建立連接粱檀,我們可以使用如下命令:
select * from test1@orcl_link
.
然而在實(shí)際使用中,有時(shí)這樣是會(huì)報(bào)錯(cuò)的漫玄,比如錯(cuò)誤信息:
ORA-22992: 無法使用從遠(yuǎn)程表選擇的 LOB 定位器茄蚯。愿意及解決方案會(huì)在另一篇文章中闡述压彭。