web-dev-qa-db-ja.com

ORA-12546:TNS:Windowsでタスク・スケジューラを介して権限が拒否されました

Windowsタスクスケジューラからバッチファイルを実行して、特定のOracleユーザーのすべてのオブジェクトをエクスポートしようとしています。

exp.exe myuser/pass@dbname owner=myuser log=mylog.txt

Oracle 11.2.0.4 x64とデータベースが同じWindows7 Proマシン上にある

タスクは正常に開始されます。つまり、間違ったユーザーやパスワードの問題がないということです。しかし、タスクがスケジュールで開始されると、ログに次のように表示されます。

ORA-12546: TNS:permission denied

タスクを手動で開始すると、スケジュールされたユーザーと同じユーザー(このユーザーはAdministratorsグループとora_dbaグループのメンバーです)で正常に動作し、エクスポートが実行されます。タスクはタスクのプロパティの[最高の特権で実行する]チェックボックスでスケジュールされているため、「スケジュールによる」タスクの開始と「手動の」タスクの開始に違いがある理由がわかりません。

私は、stackoverflowサイトの「ORA-12546:TNS:permission denied」で多くの記事を読みましたが、すべてのトピックはLinuxに関するものです。 Oracleがインストールされているc:\app\Oracleに読み取りと実行の権限を設定しようとしました。実際には、管理者は既にデフォルトでそのディレクトリに対するすべての権限を持っているため、違いはありませんでした

ただし、テーブルのエクスポートは、スケジュールで開始されたタスクでも正常に機能することに気付きました。

exp.exe myuser/pass@dbname tables=mytable1,mytable2 log=mylog.txt

とにかく、Oracleユーザー「myuser」はデータベース全体をエクスポートするOracle権限を持っています

問題:テーブルのみが正常にエクスポートされますが、«owner=myuser»エクスポートキーを使用すると«TNS:permission denied»が取得されます。また、Windowsスケジュールタスクがスケジュールによって開始され、手動で開始されたタスクがすべて正常に実行される場合のみです。すべてをスケジュールどおりにエクスポートするにはどうすればよいですか?

3
SargeAnt

問題は、ウィンドウのアクセス許可のどこかにあります。それらはOracle TNSシステムでなんとか混乱しています。私はまだ正しい方法とそれらの権限が正確に何であるかはわかりませんが、問題は今のところ、以前に自ずと示唆されているように、TNSをバイパスすることによって解決されています:

set Oracle_SID=dbnameexp.exe myuser/pass owner=myuser log=mylog.txt

これは機能し、エラーはありません

2
SargeAnt