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?
我知道这个 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?