Я не знаком с Delphi, но очень знаком с сообщением об ошибке «пароль истекает в течение 7 дней», это ORA-28002. Если вы получаете это только при подключении с MS SQL (через связанный сервер), но не при подключении напрямую к Oracle, то я был бы очень уверен, что имя пользователя oracle, определенное для связанного сервера, НЕ совпадает как вы используете для прямого подключения. Вам нужно показать нам имя пользователя, которое используется связанным сервером, а затем вывод (подключенный напрямую к oracle как пользователь с учетными данными DBA)
select username,
account_status,
to_char(lock_date,'dd-Mon-yyyy hh24:mi:ss') as lock_date,
to_char(expiry_date,'dd-Mon-yyyy hh24:mi:ss) as expiry_date
from dba_users
where username='USER_IN_QUESTION';
, очевидно, заменяя вашего реального пользователя под вопросом .
Я написал об истекающих паролях здесь : Я уверен, что многое из этого будет применимо к вашей ситуации.