cx_Oracle 连接问题

cx_Oracle connection issue

我知道这个 oracle 数据库,尝试了几种命令组合,但仍然无法连接。 下面是我最近的连接尝试。

ip = "173.37.65.217" #datamart
port = '1810'
SID = 'fntr3prd.cisco.com'  #'ARCHIVE_HC6_ARCH'#"fntr3prd"
username = 'xx' # I don’t have permission to share
password = 'xx' # I don’t have permission to share
dsn_tns = cx_Oracle.makedsn(ip, port, SID)
con = cx_Oracle.connect(username,password,dsn_tns)
cur = con.cursor()

cur.execute("select * from  ARCHIVE_HC6_ARCH”)

我得到的异常……

Traceback (most recent call last): File "/Users/tlombard/Desktop/FY16Metrics/ppmArchive.py", line 12, in con = cx_Oracle.connect(username, password, dsn_tns) DatabaseError: ORA-12505: TNS:listener does not currently know of SID given in connect descriptor

注意:正如您在下面看到的,我可以使用 sqlplus 连接到该数据库……

SQL> DESC ARCHIVE_HC6_ARCH Name Null? Type ----------------------------------------- -------- ---------------------------- ARCH_FISCAL_DT NOT NULL DATE HC NUMBER DE_DT_YN VARCHAR2(30) RESOURCE_POSITION VARCHAR2(150) CLIENT_FUNDED
VARCHAR2(200) RESOURCE_NAME VARCHAR2(300) RESOURCE_DEPT_NAME VARCHAR2(150) RESOURCE_DEPT_NO
NUMBER RESOURCE_ID VARCHAR2(50) RESOURCE_MANAGER
VARCHAR2(200) RESOURCE_POOL VARCHAR2(255) RESOURCE_ROLE
VARCHAR2(255) RESOURCE_TITLE VARCHAR2(500) RESOURCE_TYPE VARCHAR2(7) ROLE_CATEGORY VARCHAR2(255) ROLE_GROUP VARCHAR2(255) L0 VARCHAR2(20) L1
VARCHAR2(20) L2 VARCHAR2(20) L3 VARCHAR2(20) L4 VARCHAR2(20) UNNAMED VARCHAR2(30) WORK_COUNTRY VARCHAR2(100) WORK_SITE VARCHAR2(300) MONTH_KEY NUMBER MONTH VARCHAR2(50) QUARTER_KEY NUMBER QUARTER_NAME VARCHAR2(50) YEAR_NAME VARCHAR2(50) BPF VARCHAR2(255) PROJECT_PRIORITY VARCHAR2(100) PROJECT_STATUS
VARCHAR2(200) PRODUCT_FAMILY VARCHAR2(200) PIN_AGGREGATED VARCHAR2(1000) PROJECT_OS VARCHAR2(2000) PLATFORM VARCHAR2(765) PROJECT_CLASS VARCHAR2(100) PROJECT_ID VARCHAR2(300) PROJECT_INITIATIVE
VARCHAR2(150) PROJECT_LEAD VARCHAR2(150) PROJECT_MGR
VARCHAR2(150) PROJECT_CATEGORY VARCHAR2(300) PROJECT_NAME VARCHAR2(1500) PROJECT_HEALTH
VARCHAR2(100) PLANNED_RELEASE VARCHAR2(500) PROJECT_TECH_AREA VARCHAR2(150) PROJECT_TYPE
VARCHAR2(150) WORK_COUNTRY_SORT VARCHAR2(15) PROGRAM_NAME VARCHAR2(500) YEAR_KEY NUMBER ARCH_FISCAL_MONTH VARCHAR2(100) SOLUTION VARCHAR2(500) PROJECT_ROLE_CATEGORY VARCHAR2(255) RESORUCE_DEPT_FUNCTION
VARCHAR2(500) RESOURCE_MANAGER_ID VARCHAR2(255) RESOURCE_ACTIVE VARCHAR2(50) PROJECT_ACTIVE
VARCHAR2(100) PROJECT_ORG VARCHAR2(255) L5
VARCHAR2(20) QUADRANT VARCHAR2(255)

SQL>

关于我接下来应该尝试什么有什么想法吗?

假设您有其他类型的数据库访问权限,请尝试

SELECT sys_context('USERENV', 'SID') FROM DUAL;

并用它代替

SID = 'fntr3prd.cisco.com'

可能是您使用的是服务名称而不是 sid

尝试

dsn_tns = cx_Oracle.makedsn(ip, port, service_name=SID)

http://cx-oracle.readthedocs.org/en/latest/module.html?highlight=makedsn#cx_Oracle.makedsn

您是否安装了 oracle 客户端并为其配置了 LDAP?