Give your database version.
19.11
Also run Python and show the output of:
import sys
import platform
print("platform.platform:", platform.platform())
print("sys.maxsize > 2**32:", sys.maxsize > 2**32)
print("platform.python_version:", platform.python_version())
import sys
import platform
print("platform.platform:", platform.platform())
platform.platform: macOS-10.16-x86_64-i386-64bit
print("sys.maxsize > 232:", sys.maxsize > 232)
sys.maxsize > 2**32: True
print("platform.python_version:", platform.python_version())
platform.python_version: 3.10.4
And:
import python-oracledb
print("python-oracledb.version:", python-oracledb.version)
import python-oracledb
File "", line 1
import python-oracledb
^
SyntaxError: invalid syntax
import oracledb
print("python-oracledb.version:", python-oracledb.version)
Traceback (most recent call last):
File "", line 1, in
NameError: name 'python' is not defined
print("python-oracledb.version:", oracledb.version)
python-oracledb.version: 1.0.0
I am unable to connect with either
i) a connect string with FAILOVER=ON
or
ii) using a service name that is in a tnsnames.ora file with FAILOVER=ON
i)
Traceback (most recent call last):
File "/Users/asrajag/WorkSpace/python/oracle/opcig/source_code_no_cx.py", line 7, in
with cxo.connect(user=db['user_id'], password=db['password'], dsn=db['dsn']) as connection:
File "/Users/asrajag/miniconda3/lib/python3.10/site-packages/oracledb/connection.py", line 995, in wrapped
return conn_class(dsn=dsn, pool=pool, params=params, **kwargs)
File "/Users/asrajag/miniconda3/lib/python3.10/site-packages/oracledb/connection.py", line 104, in init
dsn = params_impl.parse_dsn(dsn, thin)
File "src/oracledb/impl/base/connect_params.pyx", line 457, in oracledb.base_impl.ConnectParamsImpl.parse_dsn
File "src/oracledb/impl/base/connect_params.pyx", line 432, in oracledb.base_impl.ConnectParamsImpl.parse_connect_string
File "src/oracledb/impl/base/connect_params.pyx", line 430, in oracledb.base_impl.ConnectParamsImpl.parse_connect_string
File "src/oracledb/impl/base/connect_params.pyx", line 258, in oracledb.base_impl.ConnectParamsImpl._parse_connect_string
File "src/oracledb/impl/base/connect_params.pyx", line 98, in oracledb.base_impl._parse_connect_descriptor
File "/Users/asrajag/miniconda3/lib/python3.10/site-packages/oracledb/errors.py", line 103, in _raise_err
raise exc_type(_Error(message)) from cause
oracledb.exceptions.DatabaseError: DPY-4017: invalid connect descriptor "(CONNECT_DATA = (SERVICE_NAME = OPCIG_OPCIGD1)"
ii)
Traceback (most recent call last):
File "/Users/asrajag/WorkSpace/python/oracle/test/test.py", line 11, in
with oracledb.connect(user=un, password=pw, dsn=cs) as connection:
File "/Users/asrajag/miniconda3/lib/python3.10/site-packages/oracledb/connection.py", line 995, in wrapped
return conn_class(dsn=dsn, pool=pool, params=params, **kwargs)
File "/Users/asrajag/miniconda3/lib/python3.10/site-packages/oracledb/connection.py", line 104, in init
dsn = params_impl.parse_dsn(dsn, thin)
File "src/oracledb/impl/base/connect_params.pyx", line 457, in oracledb.base_impl.ConnectParamsImpl.parse_dsn
File "src/oracledb/impl/base/connect_params.pyx", line 432, in oracledb.base_impl.ConnectParamsImpl.parse_connect_string
File "src/oracledb/impl/base/connect_params.pyx", line 430, in oracledb.base_impl.ConnectParamsImpl.parse_connect_string
File "src/oracledb/impl/base/connect_params.pyx", line 298, in oracledb.base_impl.ConnectParamsImpl._parse_connect_string
File "/Users/asrajag/miniconda3/lib/python3.10/site-packages/oracledb/errors.py", line 103, in _raise_err
raise exc_type(_Error(message)) from cause
oracledb.exceptions.DatabaseError: DPY-4000: cannot connect to database. Unable to find "OPCIG_OPCIGD1" in /Users/asrajag/Library/Oracle/Network/Admin/tnsnames.ora
i)
config.json
{
"database": {
"db_name": "OPCIG_OPCIGD1",
"user_id": "myuser",
"password": "mypassword",
"dsn": "(DESCRIPTION = (FAILOVER=ON) (LOAD_BALANCE=OFF) (ADDRESS_LIST= (LOAD_BALANCE=ON) (ADDRESS = (PROTOCOL = TCP)(HOST = lpdstora-scan.mclaneco.com)(PORT = 1521))) (ADDRESS_LIST= (LOAD_BALANCE=ON) (ADDRESS = (PROTOCOL = TCP)(HOST = lpdstexa-scan.mclaneco.com)(PORT = 1521))) (ADDRESS_LIST= (LOAD_BALANCE=ON) (ADDRESS = (PROTOCOL = TCP)(HOST = lddscora-scan.mclaneco.com)(PORT = 1521))) (ADDRESS_LIST= (LOAD_BALANCE=ON) (ADDRESS = (PROTOCOL = TCP)(HOST = lddscexa-scan.mclaneco.com)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = OPCIG_OPCIGD1))"
}
}
#test.py
import oracledb as cxo
import json
data = json.loads(open('./properties/config.json').read())
db = data['database']
with cxo.connect(user=db['user_id'], password=db['password'], dsn=db['dsn']) as connection:
with connection.cursor() as cursor:
sql = """SELECT DBMS_METADATA.get_ddl('PACKAGE', 'STANDARD', 'SYS')
FROM dual
"""
for r in cursor.execute(sql):
print(r)
ii)
tnsnames.ora
OPCIG_OPCIGD1,OPCIGD1 =
(DESCRIPTION = (FAILOVER=ON) (LOAD_BALANCE=OFF)
(ADDRESS_LIST= (LOAD_BALANCE=ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = lpdstora-scan.mclaneco.com)(PORT = 1521))
)
(ADDRESS_LIST= (LOAD_BALANCE=ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = lpdstexa-scan.mclaneco.com)(PORT = 1521))
)
(ADDRESS_LIST= (LOAD_BALANCE=ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = lddscora-scan.mclaneco.com)(PORT = 1521))
)
(ADDRESS_LIST= (LOAD_BALANCE=ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = lddscexa-scan.mclaneco.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = OPCIG_OPCIGD1)
)
)
export USER_NAME=myuser
export PASSWORD=mypassword
export CONNECT_STRING=OPCIG_OPCIGD1
#test.py
import oracledb
import os
un = os.environ.get('USER_NAME')
pw = os.environ.get('PASSWORD')
cs = os.environ.get('CONNECT_STRING')
with oracledb.connect(user=un, password=pw, dsn=cs) as connection:
with connection.cursor() as cursor:
sql = """select sysdate from dual"""
for r in cursor.execute(sql):
print(r)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4