作者:
黄福强
创建时间:2012-12-03最后更新:控制码:版本:
1.1
DBLINKDatabaseLink概述
databaselink是定义一个数据库到另一个数据库的路径的对象,databaselink允许你查询远程表及执行远程程序。在任何分布式环境里,database都是必要的。另外要注意的是databaselink是单向的连接。在创建databaselink的时候,Oracle再数据字典中保存相关的databaselink的信息,在使用databaselink的时候,Oracle通过OracleNet用用户预先定义好的连接信息访问相应的远程数据库以完成相应的工作。建立databaselink之前需要确认的事项:1、确认从localdatabase到remotedatabase的网络连接是正常的,tnsping要能成功。2、确认在remotedatabase上面有相应的访问权限。DBLINKOracle利用DBLink连接Mysql
1.简单介绍下环境
Mysql服务器地址:192.168.1.156Mysql版本:5.2.6端口:3306数据库名称:mysql用户名:hfq密码:hfq
需要确定该账号可以连接服务器的mysql数据库,需要给该账号全局权限。WAMP
Oracle服务器地址:192.168.138.145服务器系统:win2003Oracle版本:10.2.0数据库服务名:siebeldb端口:1521用户名:SIEBEL密码:SIEBEL
在oracle服务器上建立DBLink,开发机子可以通过plsql连接服务器上的tns,访问Mysql服务上的数据。
2.下载mysql的odbc驱动,我用的是myodbc3.5.1并安装
下载路径:http://dev.mysql.com/downloads/connector/odbc/3.51.htmlDBLINK3.配置odbc数据源,使用系统DSN,取名为mysqltest
点击Test进行测试
DBLINK4.在C:\\oracle\\product\\10.2.0\\db_1\\hs\\admin(C:\\oracle\\product\\10.2.0\\db_1为ORACLE_HOME的安装目录)建立initmysqltest.ora文件HS_FDS_CONNECT_INFO=mysqltest
HS_FDS_TRACE_LEVEL=debug(修改为OFF不进行debug)注意:文件名init+ODBC配置的数据源名称
HS_FDS_CONNECT_INFO也是ODBC配置的数据源名称
5.在Oracle的监听文件下进行修改:
添加红框内的文字,SID_NAME为ODBC的数据源名称
注意:如果监听名称不为LISTENER貌似会有很蛋疼的问题,最好用这个可能导致问题如下:报错:
ORA-285:连接代理时Net8诊断到错误
UnabletoretrievetextofNETWORK/NCRmessage65535
DBLINKORA-02063:紧接着2lines(起自MSSQL)6.修改Oracle下面的tns文件
注意点:
HOST:指Gateway所在的机器。
PORT:在GATEWAY机器中listener.ora文件里指定的监听gateway的端口SID:必须和GATEWAY机器中listener.ora文件里指定的SID_NAME相同HS=OK:指定该连接将使用Oracle的异构服务7.以上准备就绪,就可以创建DBLink咯。
创建语句:createpublicdatabaselinkmysqllinkconnectto\"hfq\"identifiedby\"hfq\"using'mysqltest';注意:要注意用户名和密码处需要用双引号,否则Oracle所传输的都是大写字母,可能无法登录进入MySQL。
登陆plsql的账号需要dba的账号,或者有创建dblink权限的账号
8.本机访问Mysql中的数据库表:配置本机tns
DBLINK注意:
HOST:Oracle服务器地址
SERVICE_NAME:Oracle数据库服务名登陆PLSQL:
输入:select*from\"help_keyword\"@mysqllink;执行;DBLINKOracle利用DBLink连接MSSQL
1.简单介绍下环境MSSQL服务器地址:192.168.43.146端口:1433所用数据库:hfq用户名:sa密码:123Oracle服务器同上确定Mssql服务器必须可以远程连接:2.需要启动TCP/IP协议,修改之后需要重新启动服务3.配置odbc数据源,取名为mssqlodbc,配置方法如下:DBLINKDBLINKDBLINKDBLINK4.5.配置initmssqlodbc.ora文件,与mysql配置方式一致配置network下的listener.ora和tnsnames.ora,与mysql配置一致,修改为如下:Listener.oraDBLINKTnsnames.ora6.创建dblinkcreatepublicdatabaselinkmssqllinkconnectto\"sa\"identifiedby\"123\"using'mssqlodbc';7.本地访问mysql库中的表user配置tnsnames.ora查询语句:select*from\"user\"@mssqllink;DBLINK附录:
1.两种创建dblink的语法:A、创建connecteduser的dblink语法:createdatabaselinkmysqllinkconnecttojohnnyidentifiedbyjohnnyusing'mysqltest';B、创建fixeduser的dblink语法:createdatabaselinkmysqllinkusing'mysqltest';如果提示global_names没有设置为False:SQL>altersystemsetglobal_names=false;查询global_names的值:Commandwindow:setserveroutputon;showparameterglobal_names设置global_names=false不要求建立的数据库链接和目的数据库的全局名称一致。global_names=true则要求建立的数据库链接和目的数据库的全局名称一致。3.查询已经建立的远程连接名:SQL1:selectowner,object_namefromdba_objectswhereobject_type='DATABASELINK';SQL2:select*fromall_db_links;4.删除DB_LinkdropdatabaselinkMYSQLLINK.REGRESS.RDBMS.DEV.US.ORACLE.COM其中database不能更改,MYSQLLINK.REGRESS.RDBMS.DEV.US.ORACLE.COM为你创建的DB_Link值(采用SQL2),当然需要用创建该DB_Link的用户登录才能成功删除databaselink的使用--最简单的用法SELECT*FROMtable_name@databaselink;--不想让使用的人知道databaselink的名字的时候--建一个别名包装一下CREATESYNONYMtable_nameFORtable_name@databaselink;SELECT*FROMtable_name;--或者,也可以建立一个视图来封装CREATEVIEWtable_nameASSELECT*FROMtable_name@databaselink;databaselink删除--删除public类型的databaselinkDROPPUBLICdatabaselinklink_name;2.5.DBLINK--删除非public类型的databaselink--注意:只有owner自己能删除自己的非public类型databaselinkDROPdatabaselinklink_name;6.不使用TNSName一例:CREATEdatabaselinklink_nameCONNECTTOuserIDENTIFIEDBYscrectUSING'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=sales.company.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=sales)))';DBLINK出现的问题Mysql日志在Mysql的my.ini下面log-error=c:/wamp/logs/mysql.log错误日志添加log=c:/wamp/logs/mysql1.log查询日志mysql有以下几种日志:错误日志:-log-err查询日志:-log慢查询日志:-log-slow-queries更新日志:-log-update二进制日志:-log-bin难道是MySQL中执行的SQL文是已经修改过的SQL,有了这个想法以后,一切都好办了,TimeIdCommandArgument12120517:28:141Connecthfq@hfqonmysql1QuerySETSQL_AUTO_IS_NULL=01QuerySETSESSIONTRANSACTIONISOLATIONLEVELREADCOMMITTED1QuerySETAUTOCOMMIT=01Queryset@@sql_select_limit=11Queryselect*from`HELP_RELATION`1QuerySHOWKEYSFROM`HELP_RELATION`1QuerySELECT`A1`.`help_topic_id`ASc000,`A1`.`help_keyword_id`ASc001FROM`HELP_RELATION``A1`1QuerySELECT`A1`.`help_topic_id`ASc000,`A1`.`help_keyword_id`ASc001FROM`HELP_RELATION``A1`1QuerySELECT`A1`.`help_topic_id`ASc000,`A1`.`help_keyword_id`ASc001FROM`HELP_RELATION``A1`12120517:28:151QueryROLLBACK1QuerySETAUTOCOMMIT=1最后找出是由于使用的mysql服务器的问题,困扰了我一天,使用mysql-installer-5.5.25.0就可以。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务