DBLINK的创建以及注意事项Word文档格式.docx
《DBLINK的创建以及注意事项Word文档格式.docx》由会员分享,可在线阅读,更多相关《DBLINK的创建以及注意事项Word文档格式.docx(5页珍藏版)》请在冰豆网上搜索。
两台不同的数据库服务器,从一台数据库服务器的一个用户读取另一台数据库服务器下的某个用户的数据,这个时候可以使用dblink。
有时候,需要在两个Oracle数据库之间手工同步数据时,DBLink是最方便快捷的手段之一,创建DBLink的方式一般是这样:
例如:
数据库服务器A,数据库服务器B,数据库客户端C;
通过客户端C连到A,在A上操作访问B。
1、在数据库客户端C的tnsnames中配置数据库服务器A的服务
LMISDX_LOCAL=
(DEscrīptION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.11)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=LMISdx)
)
)
2、这样就可以通过客户端访问到数据库A的用户
3、在数据库服务器A的tnsnames中配置数据库服务器B的服务
LMISSD=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.123)(PORT=1521))
(SERVICE_NAME=LMIS)
4.通过客户端C访问到数据库A的用户,在A上创建数据库
--Createdatabaselink
createpublicdatabaselinkLMIS_SDTEST
connecttoLMIS_SDTESTidentifiedby***
using'
LMISSD'
;
CreateDATABASELINK数据库名CONNECTTO用户名IDENTIFIEDBY密码USING‘本地配置的数据的实例名’;
5、查询远端数据库里的表(通过客户端C登陆到数据库服务器A访问数据库B)
Select……FROM表名数据库名;
SELECT*FROMSPKFKLMIS_SDTEST
注意:
创建是很简单,但是在使用中后台却出现锁,查看这个锁的方法可以去console中看到或者查询数据库。
每次使用dblink查询的时候,均会与远程数据库创建一个连接,dblink应该不会自动释放这个连接,如果是大量使用dblink查询,会造成web项目的连接数不够,导致系统无常运行,导致系统无正常运行。
==========================================================
3.如何创建oracledblink
要创建一个DBLINK,必须先
在每个数据库服务器上设置字符串。
1、
字符串即服务名,首先在本地配置一个服务名,地址指向远程的数据库地址,服务名取为将来你要使用的数据库链名:
2、创建数据库,
进入系统管理员SQL>
操作符下,运行命令:
SQL>
createpublicdatabaselinkbeijingconnecttoscottidentifiedbytigerusing'
tobeijing'
命令说明:
CREATEPUBLICDATABASELINK数据库名CONNECTTO用户名IDENTIFIEDBY密码USING‘本地配置的数据的实例名’;
如果建立成功,会提示:
Databaselinkcreated.
则创建了一个以scott用户和数据库的beijing,我们查询的scott数据:
select*fromempbeijing;
这样就可以把和scott用户的数据做成一个整体来处理。
、、、、、、、、、、、、、、、、、、、、、、、、
1. 创建DBLINK.
A 动态DB LINK (未配置本地服务)
-- Create database link
create public database link link_name
connect to zxdbm_ismp
identified by zxin_smap
using '
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = *.*.*.*)(PORT = 1521))
)(CONNECT_DATA =(SERVICE_NAME = zxin))
)'
B.SERVER TO SERVER DB-LINK(已经配置本地服务)
DB.TNSNAME'
注:
第二种方法需要在当前的SERVER上建立名为'
的TNS.注意是在SERVER上建TNS,不是CLIENT.很多人建了DB-LINK就会报错ORA-12154,就是这个原因.
C.如果创建全局dblink,必须使用system或sys用户,在database前加public。
D.查询现在服务器中存在的DBLINK
select*fromdba_db_links;
E.通过DBLINK访问数据库中的表.
select*fromsusr_basiclink_name;
3、建立同义词,为了使有关分布式操作更透明,ORACLE数据库里有同义词的对象synonym
createsynonymbjscottempforempbeijing;
于是就可以用bjscottemp来替代带符号的分布式操作empbeijing。
4、查看所有的数据库,进入系统管理员SQL>
selectowner,object_namefromdba_objectswhereobject_type='
DATABASELINK'
5、查看数据库连接
sql>
selectowner,db_linkfromdba_db_links;
ower
db_link
public
TEST.US.ORACLE.COM
6、删除数据库连接
先从第5步中查看数据库连接,取得其db_link的名称
droppublicdatabaselinkTEST.US.ORACLE.COM
数据库连接巳丢弃
7. global_names的设置
数据库参数global_name=true时要求数据库名称跟远端数据库名称一样,数据库默认为false.
建议设置为false,这样DBLINK的取名灵活性会比较大.
--查询global_names表的值,默认为false;
SQL>
showparameterglobal_names
NAME TYPE VALUE
-----------------------------------------------------------------------------
global_names boolean FALSE
可以通过下面命令修改global_names取值
altersystemsetglobal_names=false;
8.数据库的引用
一般情况下引用数据库,可以直接将其放到调用的表名或视图名称后面,中间使用一个作为分割符:
SELECT*FROMworkerzrhs_link;
对于经常使用的数据库,可以建立一个本地的同义词,方便使用:
CREATESYNONYMworker_synFORworkerzrhs_link;
还可以建立一个本地的远程视图,方便使用:
CREATEVIEWworkerASSELECT*FROMworkerzrhs_linkwhere…;
现在本视图可与本地数据库中的任何其它视图一样对待,也可以授权给其它用户,访问此视图,但该用户必须有访问数据库的权限。
对于另外一种情况,所要访问的表不在数据库中指定的远程下,但该有访问该表的权限,那么我们在表名前要加上该表的用户名:
SELECT*FROMcamel.workerzrhs_link;
9.注意事项
1)dblink名必须与远程数据库的全局数据库名(global_name)相同;
2)用户名,口令为远程数据库用户名,口令;
3)主机字符串为本机tnsnames.ora中定义的串;
4)两个同名的数据库间不得建立dblink;