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. BBS论坛(二十六)

    26.发布帖子前台代码逻辑完成 (1)front/hooks.py from .views import bp from flask import session,g from .models imp ...

  2. 动手实现一个 LRU cache

    前言 LRU 是 Least Recently Used 的简写,字面意思则是最近最少使用. 通常用于缓存的淘汰策略实现,由于缓存的内存非常宝贵,所以需要根据某种规则来剔除数据保证内存不被撑满. 如常 ...

  3. 并发编程(十四)—— ScheduledThreadPoolExecutor 实现原理与源码深度解析 之 DelayedWorkQueue

    我们知道线程池运行时,会不断从任务队列中获取任务,然后执行任务.如果我们想实现延时或者定时执行任务,重要一点就是任务队列会根据任务延时时间的不同进行排序,延时时间越短地就排在队列的前面,先被获取执行. ...

  4. 使用ML.NET实现猜动画片台词

    前面几篇主要内容出自微软官方,经我特意修改的案例的文章: 使用ML.NET实现情感分析[新手篇] 使用ML.NET预测纽约出租车费 .NET Core玩转机器学习 使用ML.NET实现情感分析[新手篇 ...

  5. asp.net core系列 36 WebAPI 搭建详细示例

    一.概述 HTTP不仅仅用于提供网页.HTTP也是构建公开服务和数据的API强大平台.HTTP简单灵活且无处不在.几乎任何你能想到的平台都有一个HTTP库,因此HTTP服务可以覆盖广泛的客户端,包括浏 ...

  6. Javascript 链式操作以及流程控制

    春节过后,感觉过年吃的油腻的食品转化的脂肪都长到 脑子去了. 根本转不动啊 上班第一天 实在是写不动代码了, 顺手打开多天为看的 收件箱,查看查看邮件,看看春节期间 风云变幻的前端圈又有哪些大事发生. ...

  7. Java基础5:抽象类和接口

    本文主要介绍了抽象类和接口的特性和使用方法. 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 文章首发于我的个人博客: https://h2pl.g ...

  8. HotSpot虚拟机对象相关内容

    一.对象的创建 1.类加载检查 普通对象的创建过程:虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载.解析和初始化 ...

  9. 【c#】RabbitMQ学习文档(一)Hello World

    一.简介 RabbitMQ是一个消息的代理器,用于接收和发送消息,你可以这样想,他就是一个邮局,当您把需要寄送的邮件投递到邮筒之时,你可以确定的是邮递员先生肯定会把邮件发送到需要接收邮件的人的手里,不 ...

  10. kubernetes学习14—Dashboard搭建和认证

    本文收录在容器技术学习系列文章总目录 一.介绍 Kubernetes Dashboard是Kubernetes集群的基于Web的通用UI.它允许用户管理在群集中运行的应用程序并对其进行故障排除,以及管 ...