我正在尝试使用Python cx_Oracle连接Oracle远程数据库服务器。在sqlplus中,我确实使用“ sqlplus / as sysdba”使用腻子控制台连接服务器,我要成功登录。您能否对此提供帮助,为什么它会引发此错误。
import cx_Oracle
tns= cx_Oracle.makedsn('ip', port, SERVICE NAME = 'SID')
db = cx_Oracle.connect('SYS', 'password', tns, mode=cx_Oracle.SYSDBA)
它抛出错误:
cx_Oracle Database Error ORA-01031: insufficient privileges
我已经做过一个普通的数据库用户,并尝试与它建立连接,并且成功。
db = cx_Oracle.connect('USERNAME', 'password', tns)
您应该能够以普通的“ DBA”角色完成大部分(全部?)的事情。 SYSDBA通常仅在执行需要重新启动数据库,软件和补丁程序安装或具有备份/恢复方案的操作时才是必需的,并且在日常使用中性能异常强大。根据您的Oracle版本,它可以完全绕过许多安全功能,并且由于这个原因,在大多数脚本和应用程序中使用它通常是不安全的。使用应限于only SYSDBA可以做的事情。
[另外,可能不允许SYS用户通过网络连接(您正在使用TNS连接),因为它已通过服务器操作系统的身份验证,这意味着仅本地登录。这就是为什么登录到数据库服务器时“ sqlplus / as sysdba”起作用的原因。
请考虑以下内容:
请参见这些链接以获取详细信息: