次のコマンドを使用して、.dmp
ファイルをOracle RACデータベースにインポートしようとしています。
C:\app\ptmp>impdp [user]/[password]@'DEVRAC-SCAN:1521/DB' DUMPFILE=UPG_E_7d291ff.dmp
LOGFILE=UPG_E_7d291ff.log TABLE_EXISTS_ACTION=REPLACE
そして、私はOracleから次の出力を取得します:
Import: Release 12.1.0.2.0 - Production on Thu Dec 17 09:43:13 2015
Copyright (c) 1982, 2015, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit
Production
With the Partitioning, Real Application Clusters, Automatic Storage Management,
OLAP,
Advanced Analytics and Real Application Testing options
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
私は少し周りを見てきました( https://community.Oracle.com/thread/3788748?start=0&tstart= && https://stackoverflow.com/questions/11878631/expdp-from-Oracle-rac-environment )はアクセス許可の問題である可能性があるため、次のようにしてアクセス許可を確認しました。
C:\app\ptmp>icacls c:\app\Oracle\admin\pldb\dpdump
c:\app\Oracle\admin\pldb\dpdump Everyone:(R,W)
BUILTIN\Administrators:(OI)(CI)(F)
NT AUTHORITY\SYSTEM:(OI)(CI)(F)
PL\PLORACLE:(OI)(CI)(F)
DEVRAC1\Administrator:(OI)(CI)(F)
DEVRAC1\ORA_GRID_LISTENERS:(OI)(CI)(F)
BUILTIN\Administrators:(I)(OI)(CI)(F)
NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
PL\PLORACLE:(I)(OI)(CI)(F)
DEVRAC1\Administrator:(I)(OI)(CI)(F)
DEVRAC1\ORA_GRID_LISTENERS:(I)(OI)(CI)(F)
oracle tnslistener
はPL\PLORACLE
ユーザーで実行されます。 <-これは実際には正しくありません。編集を参照してください。
これらのコマンドを使用して、データポンプディレクトリを作成/変更しました。
echo create or replace directory DATA_PUMP_DIR as 'C:\app\oralce\admin\pldb\dpdump\'; >1_UPDATE_DUMP_LOC.SQL
echo grant read,write on directory DATA_PUMP_DIR to public; >>1_UPDATE_DUMP_LOC.SQL
これらは、バッチファイルで次のコマンドを使用して実行されました。
sqlplus -S [user]/[password]@'DEVRAC-SCAN:1521/PLDB' <1_UPDATE_DUMP_LOC.SQL >1_UPDATE_DUMP_LOC.LST
コマンドを実行しているユーザーには、データベースに対するsysdba
特権があります。したがって、これらすべての理由で、.dmp
ファイルのインポートが機能しない理由を本当に理解できません。
編集:
Oracle tnslistener
は、実際にはlocal service
ではなくPL\PLORACLE
として実行されています。ただし、OracleJobSchedulePLDB_1
、OracleServicePLDB_1
、およびOracleVssWriterPLDB_1
は、PL\PLORACLE
の下で実行されます。残りのOracleサービスはLocal System/Service
として実行されます
私が試していた道c:\app\Oracle\admin\pldb\dpdump
はOracleによってロックされているようだったので、代わりにc:\app\ptmp
そして、すべてが私にとってはうまく機能しているように見えました...理由はわかりません。
失敗しているのはOSレベルでのディレクトリへの書き込みのようです。
Impdpを実行しているOSユーザーは、ディレクトリに書き込むOS権限を持っていますか?