hi! | 关于
专注于Java技术、开源项目、项目管理
今天 | RSS | RDF | Atom | 其它
 
高级搜索

标签 - 分类 : 全部 | UNIX | 随笔 | 数据库 | Java技术 | 网摘文章

Oracle有一个dblink的东西可以在数据库里远程连接另一个数据库(不仅限于Oracle数据库),通过下列方法创建oracle dblink:

两种方式:
1、已经配置本地服务
       

create public database 
linkname fwq12 connect 
to fzept
identified 
by neu using 'fjept'

CREATE DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’;
2、未配置本地服务

create database link linkname
  connect 
to fzept identified by neu
  using 
'(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.202.12)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = fjept)
    )
  )
';

host=数据库的ip地址,service_name=数据库的ssid

通过下列语句操作dblink的数据库:

SELECT  *  FROM tableName@linkname;

            但是,每次使用dblink查询的时候,均会与远程数据库创建一个连接,dblink应该不会自动释放这个连接。这会引起很多问题,有可能dblink连接断了,继续操作远程数据库就会出错;不释放远程数据库连接,可能会导致远程数据库连接爆满;还可能会导致本地数据库连接泄露等。

在Spring+hibernate架构下,用下列代码关闭dblink数据库连接:

In every method call of the service layer which is calling a dao method which is opening a db link, after the method returns from the dao I close the db link session in the service layer.

public List getBeschaffungen()
{
List beschaffungList = beschaffungDao.getBeschaffungList(suchFilterManage r.getSuchFilter());
beschaffungDao.closeDbLinkSession("dllinkname");
return beschaffungList;
}

public void closeDbLinkSession(final String dbLinkName)
{
getHibernateTemplate().execute(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException
{
Statement statement = session.connection().createStatement();
statement.execute("Alter session close database link "+dbLinkName);
logger.info("closing "+dbLinkName+" dblink session");
statement.close();
return null;
}
});
}

标签 : ,




置评

标题
正文
HTML : b, i, blockquote, br, p, pre, a href="", ul, ol, li
姓名
电邮地址
网站
记住我 是  否 

电邮地址将不会发表在公开网页上,您留下的电邮地址仅用于本文有新评论时通知您(以后可以随时拿掉).

回接到 http://www.searchfull.net:80/blog/addTrackBack.action?entry=1187841621194