Pergunta

Estou tentando importar um .dmp arquivo para meu banco de dados Oracle RAC usando o seguinte comando:

C:\app\ptmp>impdp [user]/[password]@'DEVRAC-SCAN:1521/DB' DUMPFILE=UPG_E_7d291ff.dmp
 LOGFILE=UPG_E_7d291ff.log TABLE_EXISTS_ACTION=REPLACE

E recebo a seguinte saída do 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

Eu olhei em volta um pouco e algumas pessoas (https://community.oracle.com/thread/3788748?start=0&tstart=0 && https://stackoverflow.com/questions/11878631/expdp-from-oracle-rac-environment) disse que poderia ser uma questão de permissões, então verifiquei as permissões com:

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)

o Oraculo tnslistener corre sob PL\PLORACLE do utilizador.<- isso não é verdade, veja as edições.

Usei estes comandos para criar/alterar o diretório da bomba de dados:

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

Eles foram executados usando este comando em um arquivo em lote:

sqlplus -S [user]/[password]@'DEVRAC-SCAN:1521/PLDB' <1_UPDATE_DUMP_LOC.SQL >1_UPDATE_DUMP_LOC.LST

O usuário que está executando os comandos tem sysdba privilégios para o banco de dados.Então, com tudo isso, não consigo entender por que a importação do .dmp arquivo não está funcionando.

EDITAR:

O Oraculo tnslistener está realmente funcionando como local service em vez de PL\PLORACLE como eu pensava.O OracleJobSchedulePLDB_1, OracleServicePLDB_1 e OracleVssWriterPLDB_1 correr sob PL\PLORACLE no entanto.O resto dos serviços Oracle são executados como Local System/Service

Foi útil?

Solução 2

O caminho que eu estava tentando c:\app\oracle\admin\pldb\dpdump parecia estar bloqueado pela Oracle, então optei por c:\app\ptmp e tudo parecia funcionar bem para mim... não sei por quê.

Outras dicas

Parece que a gravação no diretório está falhando, mas no nível do sistema operacional.

O usuário do sistema operacional que executa o impdp tem permissões de sistema operacional para gravar no diretório?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a dba.stackexchange
scroll top