Когда вы устанавливаете базу данных Oracle на сервер Unix, идентификатор пользователя Unix, который вы используете для установки, становится ВЛАДЕЛЬЦЕМ базы данных. Каков наиболее надежный и общий способ определения в сценарии оболочки, какой пользователь Unix является владельцем установки Oracle? Я имею в виду, можете ли вы выполнить команду grep для файла, созданного установкой, чтобы найти эту информацию, или я должен прибегнуть к использованию команды ls для определенного файла в определенном каталоге. Если имя проверяемого файла также является переменным, мне понадобится способ определения имени и пути к файлу.
Найдите файл с именем «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
Другие предлагаемые здесь решения, проверяющие владельца процесса, также должны работать, но требуют, чтобы база данных была запущена. Это решение имеет то преимущество, что не требует включения экземпляра.
Я не профессиональный администратор баз данных Oracle, но по моему опыту владелец базы данных является владельцем процессов Oracle. Надежным процессом для проверки, вероятно, будет ora_pmon.
ps -ef | grep <process name or id> | awk '{print $1}'
это должно дать вам имя пользовательского процесса, под которым запущен.