This content has been marked as final. Show 9 replies
Why EMCA Fails When Hostname Has An Underscore '_' And How To Workaround This? [ID 393430.1]
As I wrote, I'm working on Oracle RAC and the workaround in the article doesn't apply to RAC Database.
a.anastasia wrote:Fix it. This is an invalid hostname.
EMCA failes because: "Hostname should not contain underscore _ in it."
RFC 952. DoD Internet host table specification and RFC 1123 Requirements for Internet Hosts -- Application and Support are very clear as to what is legal and illegal regarding host naming.
1. A "name" (Net, Host, Gateway, or Domain name) is a text string up to 24 characters drawn from the alphabet (A-Z), digits (0-9), minus sign (-), and period (.). Note that periods are only allowed when they serve to delimit components of "domain style names". (See RFC-921, "Domain Name System Implementation Schedule", for background). No blank or space characters are permitted as part of a name. No distinction is made between upper and lower case. The first character must be an alpha character. The last character must not be a minus sign or period. A host which serves as a GATEWAY should have "-GATEWAY" or "-GW" as part of its name. Hosts which do not serve as Internet gateways should not use "-GATEWAY" and "-GW" as part of their names. A host which is a TAC should have "-TAC" as the last part of its host name, if it is a DoD host. Single character names or nicknames are not allowed.
The syntax of a legal Internet host name was specified in RFC-952
[DNS:4]. One aspect of host name syntax is hereby changed: the
restriction on the first character is relaxed to allow either a
letter or a digit.
RFC governs the specifications of the Internet. Ensures that we have compatibility and interoperability between all kinds of h/w, running all kinds of s/w, via all kinds of networking infrastructure. Standards are critically important on the Internet.
WHY VIOLATE INTERNET STANDARDS!!?
And yes, a question that needs to be shouted in uppercase as violating Internet standards is fundamentally wrong, illogical, and IMO just plain bloody stupid...
Thank you Billy for you answer, but I cannot fix it because I'm not allowed to change the machine hostnames ...
I would like to know about any workaround solutions.
Then get the responsible and accountable person to change it. Escalate it to management. Escalate it to executive management.
A workaround does NOT mean that fundamental Internet standards are not violated.
FWIW, I've seen the exact same problem here - on a very large and sophisticated network. Where some idiots (and this is an apt description) that are suppose to be qualified network engineers, created hosts with underscores in hostnames.
Network s/w, from all kinds of vendors small and large, including our in-house custom development s/w, have all kinds of problems with these hostnames .. as they are breaking documented and fundamental networking rules.
Adding a workaround to once piece of s/w does not fix the problem for another piece of s/w that expects documented standards to be applied. How on earth can one justify the fact that a hostname can violate basic networking standards!!? There is NO justification. Not a single one. It is a FUBAR from the person who did it. It needs to be FIXED.
Sorry - I do not accept workarounds when it comes to issues like this. I will insist that the actual problem be fixed. There are times that you, as DBA (responsible and accountable for databases/RAC/servers), need to play hardball. And IMO, this is such a time.
Billy really thank you for your exhaustive answer.
I agree with you, but at the moment I can not do the hostname change.
This is the environment that I can use, and I have to find a solution to this problem.
A workaround is to assign another hostname to the server. Multiple hostnames can resolve to the same IP address. Nothing wrong with that.
To make this work, the incorrect hostname can remain in the DNS - and together with the new corrected hostname, refer to the same IP address.
For the broken s/w (due to the invalid hostname) to work with the new correct hostname. Two basic issues.
If the s/w uses a config file that specifies the hostname, then that config file needs to be updated. E.g. ServerName parameter for Apache in httpd.conf, or LOCAL_LISTENER in Oracle's spfile, etc.
However - some s/w does not use a config file for hostname specification. Instead, the socket call gethostname is used to get the local platform's hostname. If this s/w chokes on an invalid hostname due to underscore chars being used, then this call needs to be forced to return a proper correct name instead.
Very little choice in this regard. One can create a system wrapper library that "fixes" the hostname and translate it to the new correct hostname. However, this requires solid C skills and extensive knowledge on how dynamic link loading works. Not an approach I would recommend. This then leaves only one viable alternative - changing the platform's hostname to the correct name. And using only the DNS to "support" the incorrect name for hostname resolution.
One more thank you Billy ...
I'm working with a Oracle RAC and as I saw when I'm running "emctl utility", the clusterware is responsible to return the list of the hostname in the cluster nodes.
I already found a solution on Oracle Support based on using a alias for the hostname with "_" character, but it works only on a standalone solution.
As I can see in the log, when I'm going to launch the utility, "emctl" goes to ask the node list to the clusterware and this one gives the configured hostnames.
Am I doing something wrong?
We do not use Enterprise Manager - have another 3rd party enterprise tool that we are required to use (high profile pet project of senior management).
So my knowledge about EM configuration approaches zero.