数据库:安装oracle11g 64位,安装mysql 5.6 64位
安装数据源驱动(ODBC) 64位:mysql-connector-odbc 5.3.4
接下来需要检查的是否安装了oracle透明网关,如下图所示:检查Oracle透明网关
打开控制面板——>管理工具——>添加数据源添加数据源配置数据源链接
配置完成后点击完成就可以了,这样Mysql的ODBC就已经有了
(2)接下来进行oracle透明网关配置:
找到你的oracle的安装目录的initdg4odbc.ora文件(我安装在C盘):
C:\Oracle\product\11.2.0\dbhome_1\hs\admin(这是我
安装在C盘下面),然后复制一份,命名规则是:init+sid.ora,所以就是initmysqlodbc.ora;
然后打开initmysqlodbc.ora文件,添加如下内容:
HS_FDS_CONNECT_INFO = mysqlodbc 说明:和mysql的odbc保持一致
HS_FDS_TRACE_LEVEL = off 说明:需要调试时可以改为debug,调试完成改为off;
然后打开C:\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN 的listener.ora文件:
# listener.ora Network Configuration File: C:\Orcale\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\Orcale\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\Orcale\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(SID_NAME = MYSQLODBC)
(ORACLE_HOME = C:\Orcale\product\11.2.0\dbhome_1)
(PROGRAM = dg4odbc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = iZyjox7h8dxma0Z)(PORT = 1521))
)
)
ADR_BASE_LISTENER = C:\Orcale
接下来打开tnsnames.ora(跟监听配置文件在同一个目录下)
LISTENER_ORACLE =
(ADDRESS = (PROTOCOL = TCP)(HOST = iZyjox7h8dxma0Z)(PORT = 1521))
ORACLE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = iZyjox7h8dxma0Z)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = oracle)
)
)
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
MYSQLODBC =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = iZyjox7h8dxma0Z)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = mysqlodbc)
)
(HS = OK)
)
MYSQLODBC是自己新添加的此处要注意下格式
然后重启监服务,可以在service.msc里重启,也可以使用命令lsnrctl stop ,lsnrctl start;
最后用oracle连接工具创建dblink:
create database link mysqlodbc connectto"root" identified by"123456"using'mysqlodbc';--注意使用单引号
走坑过程:
出现如下:
ORA-28546:连接初始化失败, 可能是 Net8 管理错误
ORA-02063:紧接着 line (起自 MYSQLTWO)
ORA-12154:无法解析指定的连接标识符
ORA-03113:通信通道的文件结尾
出现如上错误检查ORACLE配置
ORA-12518:监听程序无法分发客户机连接
1、首先修改ORACLE的PROCESS、SESSION数量
查看当前ORALCE PROCESS数量
SQL> show parameter process
查看当前ORALCE SESSION数量
SQL> show parameter session
修改PROCESS数量:
SQL>alter system set processes=1000 scope = spfile;
修改SESSION数量:
SQL> alter system set sessions=1105 scope = spfile;
注:sessions是个派生值,由processes的值决定,公式sessions=1.1*process + 5
2、降低系统的SGA大小
查看SGA的大小:
SQL> show parameter sga
同时修改sga_max_size和sga_target
SQL> alter system set sga_max_size=1000M scope = spfile;
SQL> alter system set sga_target=1000M scope = spfile;
重启ORACLE服务,问题基本解决。
经验总结:
改哪么多东西dblink还是不通归根结底还是配置的不对>_<