2008-11-20 32 views
8

Me preguntaba si había una forma de saber si una instancia de Oracle en un sistema tiene una base de datos instalada o no.Detectando si está instalada una base de datos Oracle

Esto es para un script de instalación, y necesito verificar que hay una base de datos real en su lugar antes de continuar con la carga de mi propio espacio de tabla en esa base de datos. ¿Alguien ha abordado este problema antes?

Saludos

Respuesta

5

Compruebe la existencia de un ORACLE_HOME. También es razonable esperar que este entorno se configure para la instalación, por lo que probar las variables de entorno y salir con un diagnóstico razonable (posiblemente sugiriendo que se ejecuten oraenv) es un buen comienzo. Si tiene configurada una ORACLE_HOME, ORACLE_SID u otra variable de entorno adecuada, puede verificar la existencia de un oráculo y verificar la conectividad y los permisos de la base de datos.

+0

Acabo de verificar, no tengo ORACLE_HOME ni ORACLE_SID y puedo conectarme a las bases de datos de Oracle sin ningún tipo de problema. – ninesided

+0

Si tiene un cliente instantáneo, entonces no necesita un oráculo en casa ... la cadena de conexión se puede integrar directamente en la aplicación y no necesita oráculo o tsnames.ora 0ora – jle

+0

Creo que el OP hablaba de un servidor: usted puede tener un cliente instantáneo en una PC, pero un servidor todavía tendrá un oráculo para la instancia de la base de datos. – ConcernedOfTunbridgeWells

4

usted podría utilizar tnsping para comprobar si el oyente base de datos está activa, que serían una buena indicación. Aparte de eso, ¿por qué no simplemente hacer una conexión de prueba? Si es parte de un proceso de instalación, puede solicitar al usuario que ingrese las credenciales de conexión adecuadas si no sabe con anticipación.

5

Para Oracle 10g, en Windows:

  • Comprobar el registro:
    • La clave HKLM\SOFTWARE\ORACLE debe existir.
    • una subclave que debe existir:
      • tiene un nombre comenzando con KEY_ (como KEY_OraDb10g_home1, la cadena final es un nombre de inicio de Oracle).
      • Tiene un valor cuyo nombre empieza por ORA_ y termina en _AUTOSTART. (como ORA_XE_AUTOSTART, la cadena del medio es un nombre de instancia).

cuidado, la instalación de un cliente de Oracle (sin una instancia de base de datos a continuación), crea entradas en el registro y se puede establecer variables de entorno (como ORACLE_HOME). Esta es la razón por la que el patrón anterior es un poco complicado.

Es muy probable que este patrón también funcione para Oracle 9i y posiblemente para Oracle 8i.

+0

+1 para la hoja de ruta. El software de cliente Win32 Oracle genera un enorme cuerpo de basura en el registro durante la instalación. – ConcernedOfTunbridgeWells

+0

@Mac He intentado verificar el registro usando la siguiente instrucción (C#): ** var swSubkeys = (Registry.LocalMachine.OpenSubKey ("Software")). GetSubKeyNames(); ** pero no hay entrada ORACLE en swSubKeys (una matriz de cadenas). Así que compruebo el uso manual de Regedit, obviamente la subclave ORACLE existe en HKLM \ SOFTWARE ... Es muy confuso. – MagB

0

Busque el archivo/etc/oratab para hogares oracle. Estas casas tienen el software de base de datos instalado así como el nombre de la base de datos de esa casa. Luego puede verificar si la base de datos está sonada o no iniciandolo.

0

no estoy seguro acerca de Oracle, pero para MySQL y PostgreSQL hago lo siguiente:

$yum grouplist | grep SQL 

Esto devuelve:

MySQL Database client 
MySQL Database server 
PostgreSQL Database client 
PostgreSQL Database server 

Así que supongo que debe tratar:

$yum grouplist | grep Orac 
Cuestiones relacionadas