As an Oracle specialist you meet it from time to time: something is not working as expected. Lots of times the information is right under your hands on the web. We open Google and search for some error message we get. If I cannot find it there I open Oracle support (for some time already the flashy new site, I am getting used to it after a few weeks of hesitation and missing MetaLink). Probably it should be the other way around: Oracle problems should be explained best on the Oracle support site. And they probably are, but they are a logon away and a slow startup of the homepage, which makes a Google search a little quicker. And with all the blogs people keep up and other informational sites, many times a Google search is enough. Today I had a problem for which I could not find anything on the web as well as on the Oracle support site.
At one customer site we are migrating to Oracle 11 and we have an Oracle 9i database with a mod_plsql application to serve a dynamic webpage. Now if you are used to the HTTP server in Oracle8i or 9i installed by default together with the database software, you are wondering where it is after you install Oracle 10 and above. Now I knew that already so I knew I had to look at the Embedded PL/SQL Gateway or download and install the standalone Oracle HTTP server 10g from OTN. I started with the Embedded PL/SQL Gateway. It was not very hard to get it to work, but soon I realized it was not a substitute for the Apache web server in our case because we do not only have PL/SQL pages, but also static pages and the PL/SQL dynamic pages are just a part of the entire site.
So I downloaded the 10g standalone HTTP server from OTN. Great. I installed it and got it to work very fast (I knew where to look for configuration files and changes to make from my experience in 9i). I only wondered where my Windows Service was (Oh yes, it is a Windows environment), but I did not really take notice of it because I just thought the way the HTTP server was managed in 10g was different from 9i. This in the sense that you must use Oracle Process manager (OPMNctl) to start and stop the web server. And that worked indeed.
So everything was working, I had successfully upgraded the (test)web server to an Oracle 188.8.131.52 database and a 10.1 HTTP server and logged off from the server, but not before I sent an e-mail to the testers that the test site had moved and was accessible using the URL I gave them. I logged of and the next day I logged in to the network, tried the URL and it did not work. Huh? It worked yesterday. So I logged in to the server and used opmnctl to Start the HTTP server again. Now it worked again. I did not have time to check what the reason might be so I notified the testers that the webserver must have crashed or something and we would look at it tomorrow. I also showed that if it might happen again, she could start ‘opmctl startall’ to at least be able to test the site (she is an administrator herself).
The next day the tester informed me that it did not work again and that even the opmnctl startall did not work. So the day after I started looking for reasons why the server was not started. I saw some SSL error, but that made no difference. And suddenly it appeared to me (stupid, I should have known): when I log off from the server, the HTTP processes were stopped because I started them under my control. The missing Windows Service seemed to be a key point here: the httpserver was not started as a service and I could not start it as a service, because the service was not there. And I wondered: how do I create that service? I could not find anything on the support site and at first nothing with a Google search. Mostly I stop looking after 2 or 3 pages of search results but this time I looked a bit further and there it was…my saving web page: http://www.dbaportal.eu/?q=node/131. I thought it would probably benefit more people so here is the clue:
- The standalone HTTP server on OTN does not create a Windows Service and this can be considered a bug
- You can create the service yourself with the Windows SC command:
sc create OracleHTTPProcessManager binPath= "D:\ORACLE\ORAHTTP\opmn\bin\opmn.exe -S" DisplayName= OracleHTTPProcessManager start= auto
You can choose a name for the Service and DisplayName yourself and the binPath must match your Oracle HTTP server installation’s opmn\bin folder.
And this hint was not in the article itself, but in a comment by the same author. Thank you! It is important that people show their problems and especially the answer. It “saved” my day…