WebService访问oracle数据库本地调试-一步一个坑##

上篇文章提到我们额数据库挂了,重装了数据库,然后呢我需要在本地调试WebService,看看那些数据结构缺失,迁移到新数据库中去。踩坑之路正式开始,当然这不是WebService这个项目埋下的坑,应该是每个使用oracle开发WebService要踩的坑,我踩过了,希望你看到后可以轻松过去。

我的连接字符串是这样的

<add name="oracle" connectionString="Data Source=192.168.1.188:1521/orcl;Persist Security Info=True;User ID=user;Password=pdw;Unicode=True" providerName="System.Data.OracleClient"/>

这里通过System.Data.OracleClient连接oracle数据库。踩坑之路开始...

1. ORA-12154: TNS: 无法解析指定的连接标识符

这个坑其实大家一般都不会踩到,当然入门者另当别论。

这个问题出现是因为使用System.Data.OracleClient连接数据库,需要我们本地安装oracle客户端,配置oracle服务。

具体配置方法,大家百度一下,比比皆是。

可以通过tnsping 服务名验证服务是否可访问。

2. System.Data.OracleClient需要Oracle 客户端软件8.1.7或更高版本

这个错误比较初次看到以为是自己oracle客户端版本不对,了解之后才知道是跟文件夹权限有关。我们需要把NETWORK_SERVICE这个用户添加到client\bin文件夹的读取和执行权限上去。具体添加方法可参照这里。记得添加操作完成之后一定要重启电脑,否则可能没有效果。

我在解决的过程中把Authenticated Users这个用户也添加进去了,如果你只添加NETWORK_SERVICE不行,可以把这个用户也添加进去。

3. 尝试加载 Oracle客户端库时引发 BadImageFormatException。如果在安装32 位 Oracle客户端组件的情况下以 64位模式运行,将出现此问题

这个问题系统有关,网上提供的方案也比较多,但是需要跟自己的具体开发环境和服务器环境匹配一下才能解决自己的问题。我的oracle数据库服务器是32位,我本地是win10系统64位。刚开始我装了一个64位的客户端,运行就出现了上面的错误。然后换成32位的客户端就OK了。

装32位客户端的时候会有,点是就行了。

4. ORA-00942: 表或视图不存在

这个问题你不一定能碰到,因为这跟我本地的一个存储过程有关。但是这个坑水太深,非了我好大的劲才爬上来。一路过关斩将以为终于大功告成,没想到又来一个表或试图不存在。可是,可是我调用的是package里面的一个存储过程,而且编译通过啊。

这个问题我怀疑过权限问题,但是我这个用户下是可以看到权限的;怀疑过代码,但是之前代码是正常运行的;我都要怀疑人生了,然后灵光一现我发现问题所在,各位看看不知是否吃惊:

sqlstrtemp := ' insert into temp_sum select carid,company_name,count(carid) from '||itablename||' a
left join company b on a.companyid = b.company_id ';
execute immediate sqlstrtemp;

这是我存储过程的一段代码,这里有一个表名base_company,对,就是它,我迁移的数据库中没有这张表,但是我的存储过程编译通过了。因为这里是动态拼接的sql语句,所以我编译通过了,所以呢,我的表和视图不存在的错实际是发生在这里。OK,建表,问题解决。

其实关于oracle的各种异常的解决方法网上有很多,这里这是想把自己调试一个项目的完整的经历记录下来,方便你我查阅。

WebService访问oracle数据库本地调试的更多相关文章

  1. C++使用ocilib访问oracle数据库

    引用: http://blog.csdn.net/u011311985/article/details/51221898 测试程序我放到 http://download.csdn.NET/detail ...

  2. 在代码生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,实现免安装Oracle客户端,兼容32位64位Oracle驱动

    由于我们开发的辅助工具Database2Sharp需要支持多种数据库,虽然我们一般使用SQLServer来开发应用较多,但是Oracle等其他数据库也是常用的数据库之一,因此也是支持使用Oracle等 ...

  3. 运行于64操作系统上的C#客户端通过WCF访问Oracle数据库不兼容问题

    运行平台: Windows 7  64位操作系统 运行环境: IIS 7 编程语言:C# 数据库: 32位的Oracle 10g 运行原因:64位操作系统C#客户端程序通过WCF访问ORACLE数据库 ...

  4. 【方法】如何限定IP访问Oracle数据库

    [方法]如何限定IP访问Oracle数据库 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知 ...

  5. 使用OleDB组件连接和访问Oracle数据库

    访问 Oracle 数据库的步骤 .在 Oracle 中,创建一个名为 TestTable 的表,如下所示: Create Table TestTable (c1 )); .将数据插入到 TestTa ...

  6. .net(C#)访问Oracle数据库的几种免安装组件的对比

    Oracle 数据存取组件(ODAC) 库为Borland Delphi,C++ Builder 以及 Kylix提供了一些非可视化的组件.它们用来存取Oracle关系数据库系统.与BDE类似, OD ...

  7. 用JDBC访问ORACLE数据库 关于commit 增快效率 大数据 等的整理

    1.问:用JDBC访问ORACLE数据库,做DELETE操作,能用JAVA多线程实现吗? ORACLE服务器要怎么配?(以下答案来自网络,仅供参考) 答: Oracle有自己的锁机制.就算你开100条 ...

  8. .net(C#)访问Oracle数据库的几种免安装组件的对比(转)

    原文地址 [内容为转载,个人推荐还是用官方的组件,推荐使用 Oracle.DataAccess.dll ] .net(C#)编程过程中,使用到了以下三种免安装的Oracle访问组件,能够不安装Orac ...

  9. ODP.NET 之访问 Oracle 数据库

    ODP.NET 之访问 Oracle 数据库 要相使用 Oracle Data Provider For .NET(ODP.NET), 必须先安装 ODP.NET 或者是 ODAC(Oracle Da ...

随机推荐

  1. SQL语句题

    SQL语句题 Student(Sno,Sname,Sage,Ssex)注释:学生表(学号,姓名,性别年龄,性别) Course(Cno,Cname,Tno) 注释:课程表(课程号,课程名称,教师编号) ...

  2. Java 延迟队列使用

    延时队列,第一他是个队列,所以具有对列功能第二就是延时,这就是延时对列,功能也就是将任务放在该延时对列中,只有到了延时时刻才能从该延时对列中获取任务否则获取不到…… 应用场景比较多,比如延时1分钟发短 ...

  3. [Swift]LeetCode110. 平衡二叉树 | Balanced Binary Tree

    Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...

  4. [Swift]LeetCode712. 两个字符串的最小ASCII删除和 | Minimum ASCII Delete Sum for Two Strings

    Given two strings s1, s2, find the lowest ASCII sum of deleted characters to make two strings equal. ...

  5. awk小例子_2_数值统计脚本

    通信公司工作,经常处理各种协议接口,在统计协议接口字段内容时,需要统计字段填写的内容是否正确,和占比是多少.要是单次统计,估计会把人累死,写个脚本统计,轻松便捷. 举例:接口内容 这是一条话单,这样的 ...

  6. 优化之Source Qualifier组件

    勾选Select Distinct选项,该选项可去除重复记录,以此达到减少数据量从而提高性能 ----------------------------------------------------- ...

  7. iOS学习——核心动画之Layer基础

    iOS学习——核心动画之Layer基础 1.CALayer是什么? CALayer我们又称它叫做层.在每个UIView内部都有一个layer这样一个属性,UIView之所以能够显示,就是因为它里面有这 ...

  8. BBS论坛(九)

    9.1.权限和角色模型定义 (1)cms/models class CMSPermission(object): ALL_PERMISSION = 0b11111111 # 1.访问者的权限 VISI ...

  9. python学习第一讲,python简介

    目录 python学习第一讲,python简介 一丶python简介 1.解释型语言与编译型语言 2.python的特点 3.python的优缺点 二丶第一个python程序 1.python源程序概 ...

  10. [零] Java 语言运行原理 JVM原理浅析 入门了解简介 Java语言组成部分 javap命令使用

    Java Virtual Machine  官方介绍 Java虚拟机规范官方文档 https://docs.oracle.com/javase/specs/index.html 其中以java8的为 ...