栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

在ubuntu虚拟机中连接windows本地oracle数据库总结

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在ubuntu虚拟机中连接windows本地oracle数据库总结

前言

此文章是为了记录在ubuntu虚拟机中搭建连接windows本地oracle数据库过程的总结。而搭建此连接的目的是为了接下来的python的学习,模拟在linux环境中,python脚本进程与数据库底层交互的方式。此次搭建过程找了网上很多的方法,此文章将对安装过程中出现的一些坑进行说明。

  1. 配置的前提
  2. 配置的步骤

前提
  1. 需要在windows本地已经安装完全且可以使用的oracle
  2. 一个安装好的ubuntu虚拟机,且关闭与本地windows之间的防火墙,具体方法请百度。
  3. 虚拟机与windows可以网络互通,即相互ping两端的ip地址是可以ping通的。

步骤

1. 先下载oracle的linux版的客户端连接程序包(下载需注册Oracle账户免费下载)。
下载地址链接:https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
由于是准备安装在linux环境中,所以要下载.rpm文件,下载时请注意自己oracle的版本对应下载。

由于我windows本地安装的oracle是10g版本,本地windows使用的sqlplus是10.2.0.1.0


所以为了保证虚拟机环境与本地尽量一致,因此在官网下载的linux客户端版本是
oracle-instantclient-basic-10.2.0.5-1.x86_64.rpm
oracle-instantclient-sqlplus-10.2.0.5-1.x86_64.rpm
将其复制到ubuntu虚拟机中后,进行解压安装,因为是rpm文件,因此使用rpm命令解压文件时,出现了以下问题
问题一:

rpm:RPM should not be used directly install RPM packages.use Alien instead!
rpm:However assuming you know what are you doing .....

用rpm无法直接解压安装。
解决办法:安装alien代替rpm进行解压安装
执行命令: sudo apt-get install alien

问题二:

briup@briup-virtual-machine:~$ sudo apt-get install alien
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
 alien : 依赖: debhelper (>= 7) 但是它将不会被安装
         依赖: dpkg-dev 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

在安装alien时候出现了依赖报错,原因在于已经安装的各软件之间版本冲突问题,出现了不兼容。
已尝试的办法有:

i. 切换下载源,将ubuntu的网站切换成了阿里云,但尝试无效。
ii. 根据一些网站提供的方法,依赖中出现了(>=数字) 就直接安装该数字的版本,如上面的debhelper (>= 7),即安装sudo apt-get install debhelper = 7 后出现问题,未找到该安装包。可当安装上文中不匹配的第二个包dpkg-dev时,又出现了以下报错

dpkg-dev : 依赖: libdpkg-perl (= 1.17.5ubuntu5) 但是 1.17.5ubuntu5.3 正要被安装
            推荐: build-essential 但是它将不会被安装
            推荐: fakeroot
            推荐: libalgorithm-merge-perl 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

于是再次尝试将这些不匹配的安装包一个个用sudo apt-get install 包名 进行安装时,依然有新的版本不匹配报错或者找不到安装包报错(切换了仓库源依然找不到)。

可能原因:有一些包在以前安装其他软件的时候已经安装过,因此在此时安装时会自动匹配,而不会重新安装,但是以前安装的版本与现在的软件可能出现冲突,因此强行寻找匹配的软件包很难找到。
解决办法:
将涉及的已经安装的软件包全部卸载,用此次的安装包重新安装。
使用命令: sudo apt-get remove 安装包名
等全部卸载完全后,再重新安装rpm与alien即可成功安装。

2. 安装完alien之后,首先使用alien解压两个rpm文件
alien oracle-instantclient-basic-10.2.0.5-1.x86_64.rpm
alien oracle-instantclient-sqlplus-10.2.0.5-1.x86_64.rpm
解压完成后生成两个同名.deb文件,再用dkpg去进行安装
dpkg -i oracle-instantclient-basic_10.2.0.5-2_amd64.deb
dpkg -i oracle-instantclient-sqlplus_10.2.0.5-2_amd64.deb
结束后便已经安装完成。默认安装路径为(/usr/lib/oracle/11.2/client64)

3. 切换到路径/usr/lib/oracle/10.2.x.x(即版本号)/client64下,新建文件夹/network/admin
cd /usr/lib/oracle/10.2.0.5/client64
mkdir -p /network/admin
再切换到/usr/lib/oracle/11.2/client64/network/admin下
cd /usr/lib/oracle/10.2.0.5/client64/network/admin
新建文件tnsnames.ora

4.找到本地windows所安装的oracle中的tnsnames.ora文件,将其直接复制到虚拟机的tnsnames.ora文件中。

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 此处是你的本地windows名,可在电脑属性里查看)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

ORACLR_CONNECTION_DATA = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) 
    ) 
    (CONNECT_DATA = 
      (SID = CLRExtProc) 
      (PRESENTATION = RO) 
    ) 
  ) 

5.修改环境变量
vim /etc/profile(可能需要切换至root等管理员权限才能修改)

export  ORACLE_HOME=/usr/lib/oracle/10.2.x.x(即版本号)/client64
export  TNS_ADMIN=$ORACLE_HOME/network/admin
export  NLS_LANG='simplified chinese_china'.ZHS16GBK
export  LD_LIBRARY_PATH=$ORACLE_HOME/lib
export  PATH=$ORACLE_HOME/bin:$PATH

添加完成后对其进行保存
生效环境变量:source /etc/profile

6.测试
echo $ORACLE_HOME
输出结果:
/usr/lib/oracle/10.2.0.5/client64
sqlplus briup(数据库用户名)/root(数据库用户密码)@XE
显示结果:

SQL*Plus: Release 10.2.*.5.0 - Production on ****** 7 13:3**** 2022

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.


********: 
Oracle Database 10g ****** Release 10.2***1.0 - Production

问题:此处显示连接正常,但是出现了中文乱码现象
解决办法:
在本地oracle中执行以下sql:
SQL> select userenv(‘language’) from dual;
结果为:

USERENV('LANGUAGE')
--------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.AL32UTF8

SQL>

因此将之前修改的环境变量(/etc/profile)中的
export NLS_LANG=‘simplified chinese_china’.ZHS16GBK’
值修改为oracle中查询到的SIMPLIFIED CHINESE_CHINA.AL32UTF8
即export NLS_LANG=“SIMPLIFIED CHINESE_CHINA.AL32UTF8”
保存退出即可。
再次打开sqlplus后结果如下:

SQL*Plus: Release 10.2.0.5.0 - Production on 星期二 6月 7 13:37:41 2022

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.


连接到: 
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production

自此配置结束。

下面便可以在ubuntu虚拟机中,对本地的oracle数据库进行对应的操作了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/964512.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号