Ubuntu18.04下python安装并使用Oracle19.8

下载oracle Client

所有的系统下载oracle Instant Client

下载

oracle-instantclient19.8-basic-19.8.0.0.0-1.x86_64.rpm

oracle-instantclient19.8-sqlplus-19.8.0.0.0-1.x86_64.rpm

oracle-instantclient19.5-devel-19.5.0.0.0-1.x86_64.rpm

18.3版本以后不用建软链接,已经存在。

1
2
3
4
5
6
7
8
9
10
 sudo apt-get install alien
# rpm 转 deb
sudo alien oracle-instantclient19.8-basic-19.8.0.0.0-1.x86_64.rpm
sudo alien oracle-instantclient19.8-sqlplus-19.8.0.0.0-1.x86_64.rpm
sudo alien oracle-instantclient19.5-devel-19.5.0.0.0-1.x86_64.rpm

# 安装
sudo dpkg -i oracle-instantclient19.8-basic_19.8.0.0.0-2_amd64.deb
sudo dpkg -i oracle-instantclient19.8-sqlplus_19.8.0.0.0-2_amd64.deb
sudo dpkg -i oracle-instantclient19.5-devel_19.5.0.0.0-2_amd64.deb

配置环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
sudo gedit ~/.bashrc

# oracle path
export ORACLE_HOME=/usr/lib/oracle/19.8/client64
export PATH=$PATH:$ORACLE_HOME/bin
export LIBRARY_PATH=$LIBRARY_PATH:$ORACLE_HOME/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export ORACLE_SID=orcl
# 下面两行是解决编码问题,如果不设置下面两行,从oracle导出中文数据会出现乱码
export LANG="zh_CN.UTF-8"
export NLS_LANG=AMERICAN_AMERICA.UTF8

source ~/.bashrc

# 存在就不用建立
sudo mkdir -p /usr/lib/oracle/19.8/client64/lib/network/admin

bug — libaio.so.1: cannot open shared object file

1
sudo apt-get install libaio-dev

填写tnsnames.ora文件

oracle数据库网络配置文件,通过这个配置文件才能建立对数据库的连接。

/usr/lib/oracle/19.8/client64/lib/network/admin(该路径默认放 tnsnames.ora, sqlnet.ora and oraaccess.xml)下新建tnsnames.ora文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#该文件用于配置数据库连接地址

#数据库访问地址别名,直接用该名字来指定连接
ORCL=
(DESCRIPTION =
(ADDRESS_LIST =
#通讯协议,主机(在本机则为127.0.0.1或localhost),端口(oracle数据库服务端口号)
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
#数据库实例名称
(SERVICE_NAME = orcl)
)
)
#可以配置多个数据库地址
#platform-test=
#(DESCRIPTION =
# (ADDRESS_LIST =
# (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.19)(PORT = 1521))
# )
# (CONNECT_DATA =
# (SERVICE_NAME = orcl)
# )
#)

并修改权限:

1
sudo chmod a+w *.ora

测试

进人sqlplus不能使用上下键查看历史命令,安装rlwrap解决

1
2
3
$ sudo apt-get install rlwrap
#在~/.bashrc中添加别名
alias sqlplus='rlwrap sqlplus'
1
2
3
4
5
6
7
8
9
10
# 不以任何用户登录,启动sqlplus, 但不连接数据库
sqlplus /nolog
# 然后输入账号密码
conn / as sysdba
# sqlplus sys/password as sysdba

# or(本机使用oracale,默认账号密码)
sqlplus scott/tiger@ORCL
# or
sqlplus scott/tiger@127.0.0.1:1521/orcl

bug — ORA-12162: TNS:net service name is incorrectly specified

ORACLE_SID没有指定!将.bash中添加具体的ORACLE_SID

bug — Connect failed because target host or object does not exist

上面的环境没有配置好,在检查一遍。

参考文章

通过python连接Oracle

error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or d

ORA-12162: TNS:net service name is incorrectly specified 错误解决

Oracle案例05——ORA-12162: TNS:net service name is incorrectly specified

在oracle中,sqlplus / nolog是做什么用的

---------------- 本文结束 ----------------

本文标题:Ubuntu18.04下python安装并使用Oracle19.8

文章作者:Pabebe

发布时间:2020年07月26日 - 13:12:12

最后更新:2020年07月26日 - 17:45:05

原始链接:https://pabebezz.github.io/article/a8446d42/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%