这里有新鲜出炉的精品教程,程序狗速度看过来!
Oracle Database,又名 Oracle RDBMS,或简称 Oracle。是甲骨文公司的一款关系数据库管理系统。到目前仍在数据库市场上占有主要份额。
本文给大家带来了 oracle 中 dblink 应用小结,非常不错,具有参考借鉴价值,需要的朋友参考下吧
Oracle 应用服务器 OS
1. 查看数据库的 global_name
- SELECT * FROM GLOBAL_NAME;
2. 查看 global_name 参数是 true 还是 false
- show parameter global_name
如果为 true,本地建立的 dblink 名称必须与远程的 global_name 一致才行。
3. 创建 dblink
- CREATE DATABASE LINK数据库链接名
- CONNECT TO 用户名
- IDENTIFIED BY 密码
- USING '数据库连接字符串';
例 1:
- CREATE PUBLIC DATABASE LINK CONN_MY_LINK
- CONNECT TO MYUSER IDENTIFIED BY MYPASSWORD
- USING 'MYORAL';
其中 MYORAL 为客户端服务器建立的访问服务端服务器的本地命名,
LINK CONN_MY_LINK 为本地建立的 dblink 名称
例 2:
- CREATE PUBLIC DATABASE LINK LINK_HSMIS
- CONNECT TO BI
- IDENTIFIED BY BI
- USING '(DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = 10.188.245.201)(PORT = 1521))
- )
- (CONNECT_DATA =
- (SERVICE_NAME = hsmis)
- )
- )';
直接用本地命名连接字符串替代本地命名。
- // 赋予创建权限
- grant CREATE DATABASE LINK to smis;
- grant CREATE SYNONYM to smis;
4. 查询 dblink 是否创建成功
- SELECT * FROM DUAL@数据库链接名
- 或SELECT * FROM表名@数据库链接名
5. 删除 dblink
- drop public database link CONN_MY_LINK
6. 使用同义词简化:
- CREATE SYNONYM S_MY_TABLE FOR TABLENAME@数据库链接名;
7.db_link 查询时出现锁的解决方案
每次使用 db_link 查询时释放连接,调用 dbms_session 包中的关闭函数即可
例:dbms_session.close_database_link(CONN_MY_LINK);
或使用 dblink 的时候,即使是 select 文也要进行 commit, 或者是 rollback,否则时间长了会阻碍其他进程。
8. 查询 dblink 时出现无法处理服务器名的解决方案
要在相应的数据库在服务器上建立相应的连接, 如 A 数据库在 A1 服务器上, B 数据库在 b1 服务器上,如果要在 A 数据库中连接 B 数据库,则要在服务器 A1 上建立相应的 tnsnames 配置项如下:
(在 Win 环境下的 Oracle 中, Oracle\Network\ADMIN\tnsnames.ora 文件中进行配置)
- A_TO_B =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST =A2服务器的IP)(PORT = 1521)) )
- (CONNECT_DATA =
- (SERVICE_NAME = B数据库的服务名)))
然后建立相应 dblink,容易犯的错误是:
在自已的客户端的 tnsname.ora 中建立连接,而没有在 A 数据库所有的
服务器 A1 的 tnsname.ora 中建立连接。
9. 查看锁表进程和解锁
(1) 方式一:
- select sess.sid,
- sess.serial#,
- lo.oracle_username,
- lo.os_user_name,
- ao.object_name,
- lo.locked_mode
- from v$locked_object lo,
- dba_objects ao,
- v$session sess
- where ao.object_id = lo.object_id and lo.session_id = sess.sid;
(2) 方式二:
- select * from v$session t1,
- v$locked_object t2 where t1.sid = t2.SESSION_ID;
(3) 进程解锁
如有记录则表示有锁,记录下 SID 和 serial# ,将记录的 ID 替換下面的 SID, serial,即可解除 LOCK
- alter system kill session 'SID,serial';
以上所述是小编给大家介绍的 oracle 中 dblink 应用小结,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对 PHPERZ 网站的支持!
来源: http://www.phperz.com/article/17/0820/344336.html