Pular para o conteúdo
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #102242
    rwarstat
    Participante

      Pessoal,

      Preciso listar os arquivos que estão em um diretório no servidor. Para fazer isso estou usando o seguinte código:

      – como sys executo o script abaixo

      grant execute on dbms_backup_restore to usuario
      /

      CREATE OR REPLACE FORCE VIEW "SYS"."X_$KRBMSFT"
      (
      "ADDR",
      "INDX",
      "INST_ID",
      "FTYPE_KRBMSFT",
      "FLAGS_KRBMSFT",
      "DBID_KRBMSFT",
      "DBNAME_KRBMSFT",
      "FNAME_KRBMSFT",
      "FNO_KRBMSFT",
      "ROWNO_KRBMSFT",
      "RECID_KRBMSFT",
      "STAMP_KRBMSFT",
      "SIZE_KRBMSFT"
      )
      AS
      SELECT "ADDR",
      "INDX",
      "INST_ID",
      "FTYPE_KRBMSFT",
      "FLAGS_KRBMSFT",
      "DBID_KRBMSFT",
      "DBNAME_KRBMSFT",
      "FNAME_KRBMSFT",
      "FNO_KRBMSFT",
      "ROWNO_KRBMSFT",
      "RECID_KRBMSFT",
      "STAMP_KRBMSFT",
      "SIZE_KRBMSFT"
      FROM SYS.X$KRBMSFT
      /

      GRANT SELECT ON SYS.X_$KRBMSFT TO usuario
      /

      – com o usuário eu executo o bloco PL/SQL abaixo

      DECLARE
      caminho_xml VARCHAR2 (1024);
      ns VARCHAR2 (1024);
      vIndex NUMBER (3) := 0;

      TYPE vArquivo IS RECORD (id_arq NUMBER (3), nm_arquivo VARCHAR2 (100));

      TYPE tArquivo
      IS
      TABLE OF vArquivo
      INDEX BY BINARY_INTEGER;

      vArqXML tArquivo;
      BEGIN
      SELECT d.directory_path
      INTO caminho_xml
      FROM sys.ALL_DIRECTORIES d, sys.ALL_OBJECTS o
      WHERE o.OWNER = d.OWNER
      AND o.OBJECT_NAME = d.DIRECTORY_NAME
      AND o.object_type = 'DIRECTORY'
      AND o.owner = 'SYS'
      AND d.directory_name = 'DIR_XML';

      SYS.DBMS_BACKUP_RESTORE.searchFiles (caminho_xml, ns);

      FOR each_file IN (SELECT FNAME_KRBMSFT AS name
      FROM X_$KRBMSFT
      WHERE FNAME_KRBMSFT LIKE '%.xml')
      LOOP
      DBMS_OUTPUT.PUT_LINE (each_file.name);
      END LOOP;
      END;

      Quando executo o bloco acima em um banco 10.2.0.1 em um servidor linux, ele fala que a tabela ou view não existe para X_$KRBMSFT. Mas se eu executar isso em um banco 11.2.0.1 em uma máquina com Windows XP, funciona.
      Alguém teria alguma sugestão do que posso fazer para funcionar nos 2 bancos?
      Basicamente o quê quero é listar todos os arquivos que estão em diretório. O diretório em questão eu pego do directory DIR_XML, que foi informado no primeiro select.

      Abraço,
      Roberto

      #102254
      diegolenhardt
      Participante

        já usei isso num 10G, deve ser algum synonym ou grant,

        um detalhe interessante é que esse esquema não permite ser executado com DEBUG,

        da erro 6502 se nao me engano, eu debugava com inserts no meio do codigo…

        =/

        #102255
        rwarstat
        Participante

          Diego,

          Obrigado pela respsota.
          Eu postei a mesma dúvida na lista oracle_br e a rspsota que obtive do Chiappa é que é altamente não recomendado usar esse tipo de programação, pois são tabelas não documentadas do banco e a própria package é de uso interno do banco.
          Posto isso, resolvi partir para a opção de usar java para trazer a lista de arquivos.

          Se quiser, posso postar aqui a respsota do Chiappa.

          Abraço,
          Roberto

          #102257
          diegolenhardt
          Participante

            é na época eu vi que tinha um lance assim, mas usei assim mesmo e nunca deu problema,
            talvez pelo meu ambiente, no seu talvez nao de certo,

            pode fazer uma classe java pra listar o diretorio,

            ou o SO criar um arquivo texto com o nome dos arquivos..

            ai com o dbms_schedule, tu roda primeira um .sh e depois sabe que terá um arquivo lá “conteudo.txt” por exemplo..

            =]

            #102258
            rwarstat
            Participante

              Sim, e tem a versão do banco. Na 10.2.0.1 essa tabela não existe.
              Acabei optando pela classe java mesmo. Assim fica tudo dentro do banco.

              Abraço,
              Roberto

            Visualizando 5 posts - 1 até 5 (de 5 do total)
            • Você deve fazer login para responder a este tópico.
            plugins premium WordPress