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. 256.Spring Boot+Spring Security: MD5是加密算法吗?

    说明 (1)JDK版本:1.8 (2)Spring Boot 2.0.6 (3)Spring Security 5.0.9 (4)Spring Data JPA 2.0.11.RELEASE (5)h ...

  2. [Swift]LeetCode219. 存在重复元素 II | Contains Duplicate II

    Given an array of integers and an integer k, find out whether there are two distinct indices i and j ...

  3. Docker for windows : 安装Redis

    一.拉取Redis镜像 docker pull hub.c..com/library/redis: 二.创建并运行Redis docker run -d -it --name redis d4f259 ...

  4. dpkg: 处理软件包 xxx (--configure)时出错 解决办法

    第一步:备份 $ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info.bk 第二步:新建 $ sudo mkdir /var/lib/dpkg/info 第三步 ...

  5. JSONP和CORS两种跨域方式的优缺点及使用方法原理介绍

    随着软件开发分工趋于精细,前后端开发分离成为趋势,前端同事负责前端页面的展示及页面逻辑处理,服务端同事负责业务逻辑处理同时通过API为前端提供数据也为前端提供数据的持久化能力,考虑到前后端同事开发工具 ...

  6. JavaScript03-基本概念一

    js包括:语法.语句.类型.关键字.保留字.操作符和对象. 语法.关键字.保留字 1.js中一切区分大小写,包括变量.函数名.操作符: 2.标识符规则,第一个字符必须是字母.下划线_.或者美元符号,其 ...

  7. 微信小程序开发测试

    微信小程序 在2017-01-09正式上线,本着跟上时代潮流的精神,写一份教程来看看 微信IDE下载地址为: 微信IDE 在windows下直接 双击 exe安装即可,安装完成后的界面如下: 得到这个 ...

  8. Python内置函数(17)——divmod

    英文文档: divmod(a, b) Take two (non complex) numbers as arguments and return a pair of numbers consisti ...

  9. 网络协议 4 - 交换机与 VLAN:办公室太复杂,我要回学校

        上一次,我们通过宿舍联网打魔兽的需求,认识了如何通过物理层和链路层组建一个宿舍局域网.今天,让我们切换到稍微复杂点的场景,办公室.     在这个场景里,就不像在宿舍那样,搞几根网线,拉一拉, ...

  10. Spring AOP实现统一日志输出

    目的: 统一日志输出格式 思路: 1.针对不同的调用场景定义不同的注解,目前想的是接口层和服务层. 2.我设想的接口层和服务层的区别在于: (1)接口层可以打印客户端IP,而服务层不需要 (2)接口层 ...