What is the best way I can test the database connection using C# and Oracle.ManagedDataAccess.Client?
Not to test at all. Unless you really need this. The situation you described doesn't seem to require a test of connection.
Should I test before every conn.Open() to see if the server is accessible or do one test on first run?
No, this will end up in a code full of try-catch
blocks. You can have this in some specific situations, but not in general, not for each case.
How can I display an error page if the connection couldn't be established?
Finally, this is what you really need. Exception isn't bad, it's just what it is. Database isn't available what else can you do? Well, from the point of your application you should log all unhandled exceptions and errors. But you don't need to report the exact problem to the user. You can merely display a user-friendly general error message.
Each web technology will have this. You can say something like:
Unfortunately, this functionality is not available just now. An email has been sent to the responsible person. We are looking into the problem. Please try again later.