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. 升讯威微信营销系统开发实践:微信接口的 .NET 封装

    GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...

  2. Android OpenGL ES 开发(四): OpenGL ES 绘制形状

    在上文中,我们使用OpenGL定义了能够被绘制出来的形状了,现在我们想绘制出来它们.使用OpenGLES 2.0来绘制形状会比你想象的需要更多的代码.因为OpenGL的API提供了大量的对渲染管线的控 ...

  3. Javascript高级编程学习笔记(90)—— Canvas(7) 绘制图像

    绘制图像 2D绘图上下文内置了对图像的支持 如果希望将一幅图绘制到画布上,可以使用 drawImage() 的方法 该方法有三种不同的参数数组合以对应不同的应用场景 将<img>绘制到画布 ...

  4. [Swift]LeetCode674. 最长连续递增序列 | Longest Continuous Increasing Subsequence

    Given an unsorted array of integers, find the length of longest continuous increasing subsequence (s ...

  5. 【Scala篇】--Scala中的函数

    一.前述 Scala中的函数还是比较重要的,所以本文章把Scala中可能用到的函数列举如下,并做详细说明. 二.具体函数 1.Scala函数的定义 def fun (a: Int , b: Int ) ...

  6. BBS论坛(二十五)

    25.1.发布帖子后台逻辑完成 (1)apps/models.py class PostModel(db.Model): __tablename__ = 'post' id = db.Column(d ...

  7. 使用npm安装配置vue

    npm安装很慢(国外服务器),所以一般推荐使用npm淘宝镜像cnpm,先安装下cnpm: npm install -g cnpm --registry=https://registry.npm.tao ...

  8. AndroidStudio运行java的main方法

    新建一个java文件,含有main方法 package com.why.project.androidcnblogsdemo.utils; /** * Created by HaiyuKing * U ...

  9. 如何在SpringBoot中集成JWT(JSON Web Token)鉴权

    这篇博客主要是简单介绍了一下什么是JWT,以及如何在Spring Boot项目中使用JWT(JSON Web Token). 1.关于JWT 1.1 什么是JWT 老生常谈的开头,我们要用这样一种工具 ...

  10. leetcode — construct-binary-tree-from-inorder-and-postorder-traversal

    import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Source : https://o ...