Some background: I am attempting to connect to an Oracle database. I have a username, password, IP address, port, and service name. I only have access to this database from an Ubuntu EC2 instance on AWS because the Oracle database is located inside another organization. Due to this, I do not have access to a DNS hostname for this machine.
I downloaded the "Oracle Instant Client with SQL Plus" client package from Oracle's website and extracted it to a folder. When I try to run it, I get this message:
ORA-24454: client host name is not set
Best Answer
After two hours, I figured it out.
Oracle's documentation for the error didn't seem terribly descriptive at first:
Now, the command worked on my machine (Ubuntu laptop), but it didn't work on EC2. I mucked around with the
HOSTNAME
variable for a bit and tried to figure out if there was a way to override the "client host name" insqlplus
's settings -- no dice. I finally compared my machine's /etc/hosts to the one in EC2, and noticed this line that wasn't in EC2:I didn't know this before, but apparently it's normal on Debian-based machines to map the system's hostname to this IP address. I didn't even know that 127.0.1.1 was a loopback IP; I just knew about 127.0.0.1.
What's more, it seems
sqlplus
relies on this line being present. Still no idea why.Anyway, the fix is simple: