patternMajor
"ORA-24454: client host name is not set" when connecting from Ubuntu instance on AWS EC2
Viewed 0 times
ubuntuconnecting24454ec2instanceclientoranamehostaws
Problem
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
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
Solution
After two hours, I figured it out.
Oracle's documentation for the error didn't seem terribly descriptive at first:
ORA-24454: client host name is not set
Cause: The network host name in files like /etc/hosts was not set.
Action: Set the host name and try again.
Now, the command worked on my machine (Ubuntu laptop), but it didn't work on EC2. I mucked around with the
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
Anyway, the fix is simple:
Oracle's documentation for the error didn't seem terribly descriptive at first:
ORA-24454: client host name is not set
Cause: The network host name in files like /etc/hosts was not set.
Action: Set the host name and try again.
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" in sqlplus'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:127.0.1.1 my-laptop-hostnameI 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:
$ sudo /bin/bash -c "echo '127.0.1.1 ${HOSTNAME}' >> /etc/hosts"Code Snippets
127.0.1.1 my-laptop-hostname$ sudo /bin/bash -c "echo '127.0.1.1 ${HOSTNAME}' >> /etc/hosts"Context
StackExchange Database Administrators Q#167477, answer score: 23
Revisions (0)
No revisions yet.