À medida que a versões do Oracle Database vão evoluindo novas funcionalidades vão sendo criadas e na contramão disso algumas funcionalidades acabam sendo descontinuadas. O exemplo que vamos ver agora trata-se da capacidade de leitura/escrita de arquivos no sistema operacional através de links simbólicos.

Voltando um pouco mais no tempo, mais precisamente na versão 10g (se não me engano) a Oracle criou o conceito do DIRECTORY, que é uma maneira de você referenciar um caminho (path) no sistema operacional do banco de dados para ler e/ou escrever arquivos sem revelar o caminho absoluto. Estes caminhos normalmente são usados para os processos:

  • Data Pump
  • UTL_FILE
  • Tabelas Externas
  • BFILES

Porém em algumas situações você não terá um diretório puro e simples como citado acima, certas vezes você vai se deparar com diretórios que são os chamados links simbólicos. Veja no exemplo abaixo:

Agora que temos dentro do banco de dados um DIRECTORY que aponta para um link simbólico é hora de fazer um teste e executando um simples bloco PL/SQL para tentar criar um arquivo “.xtx” no referido local. Veja o que acontece:

Esse acontece porque desde a versão 18c a Oracle retirou a funcionalidade de o banco de dados ler e/ou escrever em diretórios que são links simbólicos, veja na documentação oficial clicancdo aqui.

Mas eu aposto que você deve estar pensando: “Ok e o que eu faço agora?”.

Agora para resolver é relativamente simples, indo direto ao ponto: temos dois parâmetros não documentados para contornar esse erro, eu vou mostrar logo abaixo, porém antes quero deixar uma ressalva de que usar esses parâmetros requer um certo cuidado pois eles podem ter efeitos colaterais no seu banco de dados. Minha dica é: em ambientes produtivos use apenas sob a instrução do suporte da Oracle.

A respeito dos parâmetros que estamos falando são esses:

  • _disable_directory_link_check: Ler e escrever arquivos.
  • _kolfuseslf: Gerar arquivos de log (ex: Data Pump).

Após a execução destas alterações, baixe e suba novamente sua instância de banco de dados que o erro não deve mais se repetir.

 

Espero ter ajudado, forte abraço e até a próxima!

 

Douglas Paiva de Sousa

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *