Estou usando a caixa virtual Oracle Developer Days, que é uma distribuição Linux da Oracle para ambientes de desenvolvimento ( link ). Não tem certeza de qual distribuição é, mas no caso de ser relevante:
[oracle@localhost ~]$ lsb_release -a
LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: EnterpriseEnterpriseServer
Description: Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)
Release: 5.5
Codename: Carthage
O host é o Mac OS, embora isso certamente não seja relevante para o problema.
Eu configurei um diretório compartilhado entre o host e o vm, e como apontado nesta questão Adicionei oracle
usuário do Linux ao grupo vboxsf
(votei positivamente na resposta). Estou usando o diretório compartilhado para carregar arquivos no banco de dados usando as tabelas externas do Oracle. Eu tenho alguns arquivos para carregar repetidamente e eu realmente preciso automatizar o processo e controlá-lo a partir do host.
O problema restante é que o Oracle, ao carregar o arquivo, precisa gravar um novo arquivo na mesma pasta compartilhada, basicamente incluindo um log e uma lista de registros ruins que não puderam ser carregados. Eu também precisaria verificar esses arquivos de log do host. O problema: o Oracle não pode gravar o arquivo. Dá o seguinte erro:
ORA-29913: error al ejecutar la llamada de ODCIEXTTABLEOPEN
ORA-29400: error de cartucho de datos
error opening file /media/sf_sisifo01/restapi1/TWEET_LOAD_3205.log
29913. 00000 - "error in executing %s callout"
*Cause: The execution of the specified callout caused an error.
*Action: Examine the error messages take appropriate action.
(Desculpe pela mistura de idiomas, o vm está em inglês, mas eu instalei o SQL Developer em espanhol. De qualquer forma, é bem compreensível).
Não é possível gravar no diretório compartilhado, que é montado em /media/sf_sisifo01
. Se eu tentar escrever no mesmo diretório com o usuário oracle
Linux, não há problema, eu posso fazer
touch /media/sf_sisifo01/restapi1/TWEET_LOAD_3205.log
e se funciona. E meu palpite é que o Oracle deveria estar usando o mesmo usuário.
Eu tentei dar permissões para o diretório compartilhado tanto do root
user quanto do host (embora eu suspeite que o host não possa controlar isso - de qualquer forma meu conhecimento de administração do Linux é bastante limitado) - sem sucesso.
As permissões para o diretório compartilhado são as seguintes:
[oracle@localhost ~]$ ls -l /media/sf_sisifo01
total 200
drwxrwx--- 1 root vboxsf 476 Mar 30 09:08 restapi1
e não consigo conceder r
e x
permissões para all users
.
Obrigado pela leitura e pela sua ajuda!