文档章节

python连接oracle数据库.so文件未找到的解决办法

rootliu
 rootliu
发布于 2017/09/07 17:58
字数 873
阅读 4
收藏 0
点赞 0
评论 0

 

python连接oracle数据库.so文件未找到的解决办法

标签: PythonFlaskoracle服务器数据库

2016-12-30 15:28 202人阅读 评论(0) 收藏 举报

 分类:

Python(6) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

    公司的项目是要连接数据库的,使用的Python框架Flask开发,之前一直都是连接的MySQL数据库,一直也没有在意,今天接到消息需要连接Oracle,测试时就出现了错误,显示找不到有关的.so文件,如下:

 

ImportError: libclntsh.so.11.1: cannot open shared object file: No such file or directory

 

 

    也就是说Python在执行Oracle相关的文件时,需要依赖于Oracle带的.so文件,如果找不到,就会报错。这个问题搞了一中午才解决,犯了一个低级错误,但很容易让人忽略,故记录如下:

 

那么,按照思路一步一步地查找原因:

 

1. 是否安装Oracle服务器。

    注意,这里安装的是Oracle的服务器端,并不是客户端。我安装的是11gR版本。所以不是这个原因。

 

2. 环境变量是否配置,且是否配置成功。

    配置环境变量最好在root和相关用户下都配置一下,防止遗漏。

    以 root 身份进入 /home目录,这下面是一些root创建的用户,如下:

 

 

 

    这里的oracle用户是Oracle数据库安装时创建的用户,我们所用到的一些 .so 文件就在其中,我的 .so 文件所在目录为:

/home/oracle/product/11gR2/lib

    algoface用户是我的Python项目所在的地方,那么配置环境变量时,就要把oracle目录下的相关目录配置到algoface用户下的 .bash_profile 文件中。(最好也在root的.bash_profile下配一下,防止不起作用)

配置方法如下:

    以 algoface 用户进入algoface的主目录,打开 .bash_profile 文件,加入一下环境变量(这个路径根据具体的目录进行设置,这是我的路径):

 

export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11gR2/
export LD_LIBRARY_PATH=/home/oracle/product/11gR2/lib

 

过程:

 

 

    编辑文件:

 

 

     执行 .bash_profile,这里一定要执行,否则环境变量不会起作用,就像Windows配完环境变量要重启一样。

 

 

  至此,环境变量配置成功,可以使用命令 echo $LD_LIBRARY_PATH 来查看是否有相关路径输出出来,判断环境变量是否配置成功。

 

3. 用户权限是否够用

    这一步就是我找了好久的问题,配置完环境变量以为就可以了,却还是报原来的错误,最后在自己手动进行 ln -s 进行软链接时才发现原来是用户的权限不够。在上面可以看到Python文件的执行用户和Oracle用户不是同一个,所以,权限问题是阻碍连接的主要问题。

    使用oracle用户进行相关的lib目录,执行 ll -d 查看权限,发现同组和其他用户都是没有权限的(因为这里我修改过,所以会有权限,刚开始时是没有的),因此附上权限即可,如下:

 

 

    至此,问题解决,进入Python命令行,测试成功,不报错:

 

 

 

  虽然最后是因为一个小问题导致时间有些浪费,但权限问题在Linux中至关重要,因此记录一下。

本文转载自:http://blog.csdn.net/u014267402/article/details/53942987

共有 人打赏支持
rootliu
粉丝 2
博文 225
码字总数 2796
作品 0
海淀
数据库管理员
Python远程连接服务器上的Oracle数据库

Python远程连接服务器上的Oracle数据库 1、正确的开启方式 在你的IPython或者是Anaconda的jupyter中输入一下代码,其中: ‘username’—— 用户名 ‘password’——密码 ‘192.168.1.1:1521/...

推荐码发放 ⋅ 05/04 ⋅ 0

Django-ORM数据库操作

背景 Django框架功能齐全自带数据库操作功能,由于工作中设计巨量的api接口,需要一个很好的web后端服务框架,Django给了莫大的帮助。本文主要介绍Django的ORM框架 我们一般对数据库的使用的...

武耀文 ⋅ 06/12 ⋅ 0

Can’t connect to local MySQL server through socket

mysql,mysqldump,php连接mysql服务常会提示下面错误: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 产生此问题的原因一般有......

Mr_sheng ⋅ 05/04 ⋅ 0

CentOS6中Python3和Django的安装配置

刚好这段时间闲着有时间也就学学python算是充电了,我选择的是virtualBox中安装CentOS6.5的环境,系统自带的python是2.6.6,因此单独安装了python3.3的版本。安装过程参考了博文: http://w...

gangzz ⋅ 2014/01/09 ⋅ 0

pycharm中使用anaconda

source activate python34 # for Linux & Mac# 激活后,会发现terminal输入的地方多了python34的字样,实际上,此时系统做的事情就是把默认2.7环境从PATH中去除,再把3.4对应的命令加入PATH#...

h8b6pk7m7r8 ⋅ 01/07 ⋅ 0

Python学习日记六(Python连接MySql)

一.准备工作(下载MySQL-python和python安装包 ) Python需要连接mysql,需要下载Python MySQLdb模块,这里提供几个链接地址: MySQL-python官网下载地址 :https://pypi.python.org/pypi/My...

HaleyLiu ⋅ 04/12 ⋅ 0

ubuntu14.04 安装有道词典

由于安装有道过程中出现很多问题记录一下查找及解决方法: 有道词典youdao-dict1.1.0-0-ubuntuamd64.deb版本 安装过程出现依赖问题: 解决方式,先执行如下操作,原文地址:http://www.cnblog...

weixin_41015581 ⋅ 04/22 ⋅ 0

使用python脚本实现mysql误操作的flush back

1.简介 在oracle数据库中,当一个误操作被提交后,我们可以通过oracle提供的闪回功能将表闪回至误操作之前的状态。在mysql中没有原生的flush back功能,DBA误操作时,传统的恢复方式是利用全...

橡皮高 ⋅ 05/03 ⋅ 0

Python官方库SSH Decorator被曝后门:可窃取SSH凭证

在代码库中隐藏后门的最后一次尝试已经过去了一个星期,今天我们又有了一个新的案例。这一次,后门是在一个Python模块中找到的,而不是一个npm (JavaScript)包。 该模块的名称是SSH Decorat...

云技术之家 ⋅ 05/15 ⋅ 0

pip的安装及其使用

安装: Python3 :apt-get install python3-pip Python2 : apt-get install python2-pip 查看版本信息: python3 -m pip -V pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5) p......

Bony ⋅ 2016/10/29 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何利用Spring Cloud构建起自我修复型分布式系统

利用Netflix所打造的组件及各类大家熟知的工具,我们完全可以顺利应对由微服务以及分布式计算所带来的技术挑战。 在过去一年当中,微服务已经成为软件架构领域一个炙手可热的新名词,而且我们...

harries ⋅ 53分钟前 ⋅ 0

临近实习前的感想

再过两星期就要开始新的一段实习了,想想去年的这个时候也在实习,心中不免思绪万千,也一直想写对2017做个总结,但一直迟迟没有下笔。 2017年的春节,我就开始准备开学后找份实习。那时候就...

无精疯 ⋅ 今天 ⋅ 0

Spring AOP(面向切面编程)

Spring AOP概念: Spring AOP 可以劫持一个执行的方法,在方法执行之前或之后添加额外的功能。通常情况下,AOP把项目中需要在多处用到的功能,比如日志、安全和事物等集中到一个类中处理,而...

霍淇滨 ⋅ 今天 ⋅ 0

人工智能、机器学习、数据挖掘以及数据分析有什么联系?

人工智能是目前炙手可热的一个领域,所有的互联网公司以及各路大迦们纷纷表态人工智能将是下一个时代的革命性技术,可与互联网、移动互联网时代的变更相媲美;AlphaGo在围棋领域战胜人类最顶...

董黎明 ⋅ 今天 ⋅ 0

使用 vue-cli 搭建项目

vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一、 安装 node.js 首先需要安装node环境,可以直接到中...

初学者的优化 ⋅ 今天 ⋅ 0

设计模式 之 享元模式

设计模式 之 享元模式 定义 使用共享技术来有效地支持大量细粒度对象的复用 关键点:防止类多次创建,造成内存溢出; 使用享元模式来将内部状态与外部状态进行分离,在循环创建对象的环境下,...

GMarshal ⋅ 今天 ⋅ 0

SpringBoot集成Druid的最简单的小示例

参考网页 https://blog.csdn.net/king_is_everyone/article/details/53098350 建立maven工程 Pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM......

karma123 ⋅ 今天 ⋅ 0

Java虚拟机基本结构的简单记忆

Java堆:一般是放置实例化的对象的地方,堆分新生代和老年代空间,不断未被回收的对象越老,被放入老年代空间。分配最大堆空间:-Xmx 分配初始堆空间:-Xms,分配新生代空间:-Xmn,新生代的大小一...

算法之名 ⋅ 今天 ⋅ 0

OSChina 周日乱弹 —— 这么好的姑娘都不要了啊

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @TigaPile :分享曾惜的单曲《讲真的》 《讲真的》- 曾惜 手机党少年们想听歌,请使劲儿戳(这里) @首席搬砖工程师 :怎样约女孩子出来吃饭,...

小小编辑 ⋅ 今天 ⋅ 11

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部