当您在 Unix 服务器中安装 Oracle 数据库时,您用于安装的 Unix 用户 ID 将成为数据库的所有者。在 shell 脚本中确定哪个 Unix 用户是 Oracle 安装的所有者的最可靠和通用的方法是什么?我的意思是,您是否可以在安装创建的文件上执行 grep 来查找此信息,或者我应该对特定目录中的特定文件使用 ls 命令。如果要检查的文件的名称也是可变的,我需要有一种确定文件的名称和路径的方法。
答案1
查找名为“oratab”的文件,该文件通常位于 /etc 或 /var/opt/oracle 中。在其中,您将找到每个数据库的主目录名称。该目录的所有者应该是安装的所有者以及从主目录运行的所有数据库的所有者。
假设 oratab 文件位于 /var/opt/oracle 中,这可能会有用:
ls -ld `grep 'your_db_name' /var/opt/oracle/oratab|cut -d":" -f2`|cut -d" " -f4
这里提供的其他解决方案(检查进程所有者)也应该有效,但需要数据库正在运行。此解决方案的优点是它不需要实例启动。
答案2
我不是专业的 Oracle DBA,但根据我的经验,数据库的所有者就是 Oracle 进程的所有者。一个可靠的检查进程可能是 ora_pmon。
答案3
ps -ef | grep <process name or id> | awk '{print $1}'
这应该会给你运行该进程的用户名称。