Это хороший пример того, что «только потому, что вы можете , не означает, что вы должны ». Использование переменной среды для хранения пароля - это ОЧЕНЬ ПЛОХО идея с точки зрения безопасности. Переменные среды можно проверять, регистрировать и просматривать с помощью инструментов системного мониторинга, открывая пароль для всеобщего обозрения. По той же причине вы не хотите, чтобы пароль отображался в командной строке для sqlplus или любого другого приложения, которое вы запускаете. Скорее всего, именно поэтому в вашем коде теперь есть подсказка - чтобы пароль можно было ввести без входа в систему кем-либо / кем-либо еще.
Лучше использовать кошелек Oracle (он же Secure Password Store) для хранения ваших учетных данных. Я написал сообщение в блоге об этом здесь: https://pmdba.wordpress.com/2014/10/16/database-account-password-storage/, и есть много других ресурсов, доступных с помощью быстрого поиска в Google.
Используя кошелек, вы можете войти в систему без имени пользователя и пароля (они оба хранятся в кошельке) и без запроса. Поместите кошелек в индивидуальный профиль пользователя и в вашем файле sq lnet .ora используйте переменную среды, чтобы указать кошелек, например:
WALLET_LOCATION=
(SOURCE=
(METHOD=file)
(METHOD_DATA=
(DIRECTORY="%USERPROFILE%\oracle\wallet")
)
)