2024年2月3日发(作者:)
plsql连接多个数据库设置
前一段时间在网上看到OracleClientDriver是微软出的连接Nhibernate和Oracle的字符串。而OracleDataClientDriver是Oracle自己出的。有很多的地方OracleDataClientDriver比OracleClientDriver要优秀。而且微软规定以后可能要废弃OracleClientDriver。所以要将项目中用到的OracleClientDriver改为OracleDataClientDriver。当然这时会报错的然后将Oracccess.dll”拷贝到网站的bin目录下。
再次运行程序,会抛出“无法将类型为“Oraclccess.ClieneConnection”的对象强制转换为类型“Systenection”。”异常。引发这个异常的是“NHibernateToolhbm2ddlSuppliedConnectionProviderConnectionHelp”。第25行:“connection = (DbConnection)provinnection();”。有一个方法可以绕过这行代码的执行,就是在hiberna里增加一行“
在此运行提示缺少OraOps1---这个问题一直困扰小弟。最后在师兄的提醒下。在自己的机器上安装了Oracle的精简版。是10.2.0的版本然后缺少OraOps1的问题解决了(原因是自己的机器上没有安装Oracle的部分dll造成的)。
正当小弟欣喜之时。问题在此降临。我发现自己原先的NHibernate连接Oracle的字符串有问题。运行Test后发现竟然连不上了。暴怒之下上网搜资料。发现是原先自己制作的客户端跟现在安装的Oracle的精简版在端口上冲突了。考虑再三。将原先配置的Oracle客户端和环境变量。以及现在安装的Oracle精简版全部删掉。没想到。用360和微软自带的添加删除程序竟然找不到Oracle的程序。幸好oracle碰上克星了---删除Oracle的方法:先在服务里面将Oracle的4个服务停掉。然后将Orace的安装文件删掉。然后去注册表里将带Oracle的文件删掉,当然。这时候要小心了vs2008自带的Oracle连接字符串不要删。可能有几个Oracle删不掉。没有关系我们下一个优化大师。点击清理注册表。清理完后。在注册表里点击搜索Oracle已经没有东西了。---
删完之后重启电脑。然后重新安装Oracle。----这是在运行Test。哈哈---可以将VS2008跟Oracle连上了。然后在路径F:SimpleCOracleXEapporacleproduct10.2.0serverNETWORKADMIN下面找到sqlnet.ora文件在字段--
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = yinfuqing)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
的后面加上
YANKUANG=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 202.194.254.198)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = yanku)
)
)
保存后运行Test。晕了。不但连不上了。连连接OracleXE版本的也不行了。提示无法解析指定的连接标识符
没办法在上网查资料发现原来我加的字符串前面有空格。可能这个问题大家不是很明白。我放大一下
空格+YANKUANG=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 202.194.254.198)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = yanku)
)
)
然后我将空格去掉我们可以用Editplus来打开。可以清楚的看到前面有空格。去掉之后问题解决了。现在不但自己机器上的精简版可用。远程的Oracle也可以连上了
问题终于完成了。现在的连接代码小弟将他们贴出来供大家参考:
这是tnsnames.ora的代码:
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = yinfuqing)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
YANKUANG=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 202.194.254.198)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = yanku)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
这是hibernat的代码:
<?xml version="1.0" encoding="utf-8" ?>
type="NHibernate.gurationSectionHandler, NHibernate" /> name="connection.driver_class">NHibernate.DriveeDataClientDriver Data Source=XE;User ID=system;Password=sdie?!3406 NHibernate.ByteCe
本文发布于:2024-02-03 22:09:29,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170696936951439.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |