Мне нужно войти в систему на удаленном хосте (Linux 2.6.39-400.210.2.el6uek.x86_64) в качестве пользователя oracle и запустить некоторые sql-скрипты с помощью утилиты sqlplus. Ansible config used:Почему ansible start_user oracle не запускает скрипты пользовательских профилей
tasks:
- name: Running oracle script
shell: "sqlplus/as sysdba @test.sql"
become: yes
become_method: sudo
become_user: oracle
Но похоже, что/etc/profile и ~/.profile не выполняются после входа в систему. Результат в среде oracle не установлен правильно, и sqlplus не работает. отображается Ошибка:
fatal: [wh1.db]: FAILED! => {"changed": true, "cmd": "sqlplus/as sysdba @test.sql", "delta": "0:00:00.002729", "end": "2016-09-22 10:37:31.033209", "failed": true, "invocation": {"module_args": {"_raw_params": "sqlplus/as sysdba @test.sql", "_uses_shell": true, "chdir": null, "creates": null, "executable": null, "removes": null, "warn": true}, "module_name": "command"}, "rc": 127, "start": "2016-09-22 10:37:31.030480", "stderr": "/bin/sh: sqlplus: command not found", "stdout": "", "stdout_lines": [], "warnings": []}
Если я войти в поле вручную, как пользователь оракула, SQLPLUS работает отлично. Любые идеи, как это работает? Было рекомендовано настроить переменные enacle env и запускать сценарии профилей вручную, но это выглядит нехорошим обходным путем.
Кроме точки, но, пожалуйста, не подключиться как SYSDBA запускать скрипты. Это очень опасная практика и может серьезно повредить базу данных. Вместо этого используйте обычного пользователя Oracle. – sstan
В целом, я считаю, что настройка параметров среды или вызов сценария вручную может быть лучшим решением. Обычно существует множество экземпляров на хосте, и для них обычно существует несколько домов Oracle, тем более что ASM использует отдельные двоичные файлы. Вы уверены, что можно с уверенностью предположить, что скрипт профиля всегда будет знать, какой экземпляр и путь использовать? (Также вы можете проверить мой проект с открытым исходным кодом [Method5] (https://github.com/VentechCMS/method5) через несколько недель. Цели проекта аналогичны проектам Ansible, но ориентированы на базы данных Oracle вместо того, чтобы работать систем.) –
Благодаря вашей точке. В моем конкретном случае у нас есть только одна база данных на одном виртуальном ящике, так что да, я уверен, что в скрипте профиля будет установлен правильный oracle env. –