AWS Python Lambda with Oracle - OID Generation Failed

后端 未结 3 2032
情深已故
情深已故 2021-01-19 06:51

I\'m trying to connect to an Oracle DB using AWS Lambda Python code.

My code is below:

import sys, os
import cx_Oracle
import traceback

def main_han         


        
相关标签:
3条回答
  • 2021-01-19 07:01

    See the following other question for the resolution to this problem.

    sqlplus remote connection giving ORA-21561

    Effectively the client requires a host name in order to generate a unique identifier which is used when connecting to the database.

    0 讨论(0)
  • 2021-01-19 07:03

    The accepted solution for this correct, but please also be aware that the HOSTALIASES mechanism does require working DNS (as strange as it sounds).

    I struggled with this for a few hours having implemented the accepted solution and realised that I was not permitting outbound DNS on the security group attached to by Lambda function VPC interface (my connection was by IP address to Oracle DB, so initially did not think this was required).

    0 讨论(0)
  • 2021-01-19 07:09

    Ok, here is the explanation: Oracle has a funny behavior where if the hostname given by hostname can't be resolved, it will fail connecting to the DB. Fortunately, in Linux, one can override the DNS entry for a session by writing an alias file in /tmp, then setting the environment variable HOSTALIASES to that file.

    So adding this code to my function help to generate this file, and now I can successfully connect:

    f = open('/tmp/HOSTALIASES','w')
    str_host = os.uname()[1]
    f.write(str_host + ' localhost\n')
    f.close()
    

    Hope it can help someone else !

    0 讨论(0)
提交回复
热议问题