Pregunta ¿Cómo determinas el PROPIETARIO de una base de datos Oracle?


Cuando instala una base de datos Oracle en un servidor Unix, la identificación de usuario de Unix que utiliza para la instalación se convierte en el PROPIETARIO de la base de datos. ¿Cuál es la forma más confiable y general de determinar en un script de shell de qué usuario de Unix es el propietario de una instalación de Oracle? Quiero decir, ¿puede realizar un grep en un archivo creado por la instalación para encontrar esta información o debo recurrir para usar el comando ls en un archivo específico en un directorio específico? Si el nombre del archivo a verificar también es variable, necesitaría tener una forma de determinar el nombre y la ruta del archivo.


6
2018-04-22 16:03


origen


¿Hay alguna forma de conocer al propietario de oracle cuando la instancia de la base de datos no se creó con el instalador de oracle para que no haya un archivo oratab? - Kwang Mark Eleven


Respuestas:


Busque el archivo llamado "oratab", que generalmente se encuentra en / etc o / var / opt / oracle. Allí encontrará para cada base de datos el nombre del directorio de inicio de esa base de datos. El propietario de ese directorio debe ser el propietario de la instalación y de todas las bases de datos que se ejecutan desde el hogar.

Esto podría ser de alguna utilidad, asumiendo que el archivo oratab está en / var / opt / oracle:

ls -ld `grep 'your_db_name' /var/opt/oracle/oratab|cut -d":" -f2`|cut -d" " -f4

Las otras soluciones ofrecidas aquí que examinan al propietario del proceso también deberían funcionar, pero requieren que la base de datos se ejecute. Esta solución ofrece la ventaja de que no requiere que la instancia esté activa.


2
2018-04-22 18:29



Según tengo entendido, el archivo oratab tiene datos cuando instala la base de datos utilizando el instalador de Oracle, por lo que esta solución no funcionará siempre que no se cree la instancia de la base de datos con el instalador. Sin embargo, esta solución es lo suficientemente buena para mí. Muchas gracias. - Kwang Mark Eleven
Una buena práctica es mantener este archivo a medida que agrega bases de datos. Por un lado, controla si iniciar o no la base de datos automáticamente cuando se inicia el sistema. Ver orafaq.com/faq/what_is_oratab_and_what_is_it_used_for para una breve descripción. - DCookie


No soy un DBA de Oracle profesional, pero según mi experiencia, el propietario de la base de datos es el propietario de los procesos de Oracle. Un proceso confiable para verificar sería probablemente ora_pmon.


1
2018-04-22 16:06



Gracias por complementar la solución de solefald con la pieza necesaria: el nombre del proceso a buscar. - Kwang Mark Eleven


ps -ef | grep <process name or id> | awk '{print $1}'

esto debería darle el nombre del proceso de usuario que se ejecuta como.


1
2018-04-22 17:29



Junto con la sugerencia de Gary Chambers, el comando que proporcione puede usarse para buscar el proceso pmon. ¿Qué sucede cuando hay muchas instancias de Oracle en la misma máquina? ¿El comando mostrará varias filas pmon, una para cada usuario? - Kwang Mark Eleven