如何从Oracle.jl连接到Oracle 11g XE ?



a) Oracle 11g XE(包括服务器端和客户端)已安装并可用:

[root@srvr0 ~]# ifup em1;
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/9)
[root@srvr0 ~]# cd /home/oracle;su oracle
[oracle@srvr0 ~]$ lsnrctl stop xe_lsnr
LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 11-AUG-2021 11:43:43
Copyright (c) 1991, 2011, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=srvr0)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=xe)))
The command completed successfully
[oracle@srvr0 ~]$ lsnrctl start xe_lsnr
LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 11-AUG-2021 11:43:49
Copyright (c) 1991, 2011, Oracle.  All rights reserved.
Starting /u01/app/oracle/product/11.2.0/xe/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.2.0 - Production
System parameter file is /u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/srvr0/xe_lsnr/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=srvr0)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=xe)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=srvr0)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=xe)))
STATUS of the LISTENER
------------------------
Alias                     xe_lsnr
Version                   TNSLSNR for Linux: Version 11.2.0.2.0 - Production
Start Date                11-AUG-2021 11:43:49
Uptime                    0 days 0 hr. 0 min. 5 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/srvr0/xe_lsnr/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=srvr0)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=xe)))
Services Summary...
Service "xe" has 1 instance(s).
Instance "xe", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[oracle@srvr0 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on Wed Aug 11 11:44:01 2021
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
Connected to an idle instance.
SQL> shutdown immediate;
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
SQL> startup open
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size          2233344 bytes
Variable Size         654314496 bytes
Database Buffers      406847488 bytes
Redo Buffers            5541888 bytes
Database mounted.
Database opened.
SQL> 

b) julia script, oraConnTest。jl内容:

import Oracle
global const dbHost = "localhost";
global const dbClientType = "thin";
global const dbName = "xe";
global const dbPort = "1521";
global const schema = "test";
global const dbUserPassword = "test2357";
global const conn_str="//"*dbHost*":"*dbPort*"/"*dbName;
conn = Oracle.Connection(dbUserName, dbUserPassword, conn_str);
rs=Oracle.query(conn, "SELECT * FROM TAB");
println(rs[:,1])
conn.close();

我得到以下错误:

julia> include("/root/oraConnTest.jl")
ERROR: LoadError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory". 

更新1:

但是,我有libclntsh。所以在我的JULIA_LOAD_PATH中,如下所示:

[root@srvr0 ~]# find / -name libclntsh.so
/index/instantclient_19_6/libclntsh.so
/opt/julia/julia-1.4.1/share/julia/stdlib/v1.4/instantclient_19_6/libclntsh.so
/u01/app/oracle/product/11.2.0/xe/lib/libclntsh.so
julia> include("/root/ora.jl")
ERROR: LoadError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory". See https://oracle.github.io/odpi/doc/installation.html#linux for help
Stacktrace:
[1] Oracle.Context() at /opt/julia/julia-1.4.1/share/julia/stdlib/v1.4/packages/Oracle/U5383/src/context.jl:25
[2] #Connection#10 at /opt/julia/julia-1.4.1/share/julia/stdlib/v1.4/packages/Oracle/U5383/src/connection.jl:122 [inlined]
[3] Oracle.Connection(::String, ::String, ::String) at /opt/julia/julia-1.4.1/share/julia/stdlib/v1.4/packages/Oracle/U5383/src/connection.jl:122
[4] top-level scope at /root/ora.jl:13
[5] include(::String) at ./client.jl:439
[6] top-level scope at REPL[5]:1
in expression starting at /root/ora.jl:13

更新2:

export LD_LIBRARY=/opt/julia/julia-1.4.1/share/julia/stdlib/v1.4/instantclient_19_6/

[root@srvr0 ~]# ls -alt /opt/julia/julia-1.4.1/share/julia/stdlib/v1.4/instantclient_19_6
total 233300
drwxr-xr-x. 40 root root      4096 Aug 12 07:19 ..
drwxr-xr-x.  3 root root      4096 May  9  2020 .
lrwxrwxrwx.  1 root root        15 May  9  2020 libocci.so.11.1 -> libocci.so.19.1
lrwxrwxrwx.  1 root root        15 May  9  2020 libocci.so.12.1 -> libocci.so.19.1
lrwxrwxrwx.  1 root root        15 May  9  2020 libocci.so.18.1 -> libocci.so.19.1
lrwxrwxrwx.  1 root root        15 May  9  2020 libocci.so -> libocci.so.19.1
lrwxrwxrwx.  1 root root        15 May  9  2020 libocci.so.10.1 -> libocci.so.19.1
lrwxrwxrwx.  1 root root        17 May  9  2020 libclntsh.so.12.1 -> libclntsh.so.19.1
lrwxrwxrwx.  1 root root        17 May  9  2020 libclntsh.so.18.1 -> libclntsh.so.19.1
lrwxrwxrwx.  1 root root        17 May  9  2020 libclntsh.so -> libclntsh.so.19.1
lrwxrwxrwx.  1 root root        17 May  9  2020 libclntsh.so.10.1 -> libclntsh.so.19.1
lrwxrwxrwx.  1 root root        17 May  9  2020 libclntsh.so.11.1 -> libclntsh.so.19.1
-rwxr-xr-x.  1 root root   8049064 Dec 17  2019 libclntshcore.so.19.1
-r-xr-xr-x.  1 root root   3609792 Dec 17  2019 libipc1.so
-r-xr-xr-x.  1 root root    478400 Dec 17  2019 libmql1.so
-rwxr-xr-x.  1 root root   2339888 Dec 17  2019 libocci.so.19.1
-r-xr-xr-x.  1 root root    153624 Dec 17  2019 libocijdbc19.so
-rw-r--r--.  1 root root   4395452 Dec 17  2019 ojdbc8.jar
-rw-r--r--.  1 root root   1680537 Dec 17  2019 ucp.jar
-rw-r--r--.  1 root root     74263 Dec 17  2019 xstreams.jar
-rwxr-xr-x.  1 root root  80496048 Dec 17  2019 libclntsh.so.19.1
-rwxr-xr-x.  1 root root     41840 Dec 17  2019 adrci
-r-xr-xr-x.  1 root root      5780 Dec 17  2019 BASIC_LICENSE
-rw-r--r--.  1 root root      1632 Dec 17  2019 BASIC_README
-rwxr-xr-x.  1 root root     59312 Dec 17  2019 genezi
-rwxr-xr-x.  1 root root   6587592 Dec 17  2019 libnnz19.so
-rwxr-xr-x.  1 root root    116008 Dec 17  2019 liboramysql19.so
drwxr-xr-x.  3 root root        19 Dec 17  2019 network
-rwxr-xr-x.  1 root root    236912 Dec 17  2019 uidrvci
-rwxr-xr-x.  1 root root 130519448 Dec 17  2019 libociei.so

仍然得到相同的错误。

julia> include("/root/ora.jl")
ERROR: LoadError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory". See https://oracle.github.io/odpi/doc/installation.html#linux for help
Stacktrace:
[1] Oracle.Context() at /opt/julia/julia-1.4.1/share/julia/stdlib/v1.4/packages/Oracle/U5383/src/context.jl:25
[2] #Connection#10 at /opt/julia/julia-1.4.1/share/julia/stdlib/v1.4/packages/Oracle/U5383/src/connection.jl:122 [inlined]
[3] Oracle.Connection(::String, ::String, ::String) at /opt/julia/julia-1.4.1/share/julia/stdlib/v1.4/packages/Oracle/U5383/src/connection.jl:122
[4] top-level scope at /root/ora.jl:13
[5] include(::String) at ./client.jl:439
[6] top-level scope at REPL[5]:1
in expression starting at /root/ora.jl:13

请帮我从oracle .jl连接oracle 11g2 XE

添加或运行:

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

确保进程具有读取ORACLE_HOME目录内容的目录权限。

(将来的读者:如果你使用Linux上的即时客户端库连接到远程数据库,那么你不会设置ORACLE_HOME,而是将LD_LIBRARY_PATH设置为即时客户端目录)

旁注:Oracle有一个更新的XE版本,你可以安装:https://www.oracle.com/au/database/technologies/xe-downloads.html

最新更新