Pular para o conteúdo
  • Este tópico contém 46 respostas, 3 vozes e foi atualizado pela última vez 13 anos, 1 mês atrás por Avatar de joffrejoffre.
Visualizando 15 posts - 16 até 30 (de 47 do total)
  • Autor
    Posts
  • #99342
    Avatar de felipegfelipeg
    Participante

      [quote=”joffre”:2yypptsc]O menor script tem 28 linhas. Se não tiver problemas pelo tamanho eu posto aqui. Não há caracteres especiais. Se souber algum comando de output do VBScript e quiser compartilhar, agradeço. Eu não sei se há algum!

      Outra dúvida… Dê uma olhada NESSA IMAGEM

      Nessa tela, como deve ser o comando para usar os arquivos .sql?

      Obs.: Estou logado como Sys, logo, vou precisar setar para qual base de dados o arquivo .sql vai criar/inserir/dropar…[/quote]

      Bom se for para vários usuários ai a trama se complica.
      Sobre a execução com exit, se for tudo executado pelo mesmo usuário você tem de fazer desse jeito pra executar e sair

      Obs: aqui você pode até dar um spool pra cada chamada se quiser ou usar o output, vou mostrar o exemplo com spool.

      Arquivo Executar.sql

      Spool Caminhoarquivo1.log
      @Caminhoarquivo1.sql
      Spool off
      Spool Caminhoarquivo2.log
      @Caminhoarquivo2.sql
      Spool off
      etc etc para todos os arquivos

      exit

      Ai você chama o executar.sql e não os scripts em si.


      sqlplus system/senha@instancia @executar.sql

      Caso o usuário que vá receber os comandos seja APENAS UM você pode usar no começo do executar.sql a linha conn usuario/senha@instancia

      Porque só um, simples, por que se tiver mais de um você terá que por o exit no script do respectivo usuário para poder se conectar com o conn novamente.

      Acho que é isso.
      OBS: não consigo abrir as imagens pois o proxy bloqueia hehe

      Atenciosamente,
      Felipe.

      #99349
      Avatar de joffrejoffre
      Participante

        [quote=”felipeg”:1ostto8g]Bom se for para vários usuários ai a trama se complica.
        Sobre a execução com exit, se for tudo executado pelo mesmo usuário você tem de fazer desse jeito pra executar e sair

        Obs: aqui você pode até dar um spool pra cada chamada se quiser ou usar o output, vou mostrar o exemplo com spool.

        Arquivo Executar.sql

        Spool Caminhoarquivo1.log
        @Caminhoarquivo1.sql
        Spool off
        Spool Caminhoarquivo2.log
        @Caminhoarquivo2.sql
        Spool off
        etc etc para todos os arquivos

        exit[/quote]

        Felipe,

        Antes de mais nada, obrigado pela atenção!

        Mas o GRANDE problema em eu fazer isso aí é que vai demandar MUITO tempo. Como falei, são vários arquivos .sql a serem executados. Acho que uns 150, que estão em diferentes pastas e subpastas.


        [quote=”felipeg”:1ostto8g]OBS: não consigo abrir as imagens pois o proxy bloqueia hehe[/quote]

        A imagem é uma dela do DOS comigo recentemente logado no sqlplus.

        [quote=”Tela do DOS”:1ostto8g]
        C:>sqlplus

        SQL*Plus: Release 10.2.0.3.0 – Production on Qua Mai 25 11:47:28 2011

        Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

        Informe o nome do usußrio: sys@srv-tsbd-9i as sysdba
        Informe a senha:

        Conectado a:
        Oracle9i Enterprise Edition Release 9.2.0.1.0 – Production
        With the Partitioning, OLAP and Oracle Data Mining options
        JServer Release 9.2.0.1.0 – Production

        SQL>[/quote]

        Acho que vai dar pra você entender o que perguntei no post anterior com isso aí.

        #99354
        Avatar de felipegfelipeg
        Participante

          [quote=”felipeg”:2e97nu9k]OBS: não consigo abrir as imagens pois o proxy bloqueia hehe[/quote]

          A imagem é uma dela do DOS comigo recentemente logado no sqlplus.

          [quote=”Tela do DOS”:2e97nu9k]
          C:>sqlplus

          SQL*Plus: Release 10.2.0.3.0 – Production on Qua Mai 25 11:47:28 2011

          Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

          Informe o nome do usußrio: sys@srv-tsbd-9i as sysdba
          Informe a senha:

          Conectado a:
          Oracle9i Enterprise Edition Release 9.2.0.1.0 – Production
          With the Partitioning, OLAP and Oracle Data Mining options
          JServer Release 9.2.0.1.0 – Production

          SQL>

          Acho que vai dar pra você entender o que perguntei no post anterior com isso aí.[/quote]

          Então a partir desta tela, se o usuário não for o logado, nesse caso o sys você precisa

          1 – Efetuar o comando conn usuario/senha@servidor
          2- Chamar o sql com o comando @ (Sim, da mesma forma como você chama pelo CMD).

          Exemplo

          C:>sqlplus /nolog

          SQL*Plus: Release 9.2.0.1.0 - Production on Qua Mai 25 12:38:19 2011

          Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

          SQL> conn fiscal/fiscal@orcl
          Ligado.
          SQL> @teste.sql
          HELLO WORLD

          Procedimento de PL/SQL concluÝdo com Ûxito.

          SQL> exit
          Desligado de Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
          With the Partitioning, OLAP and Oracle Data Mining options
          JServer Release 9.2.0.1.0 - Production

          Sobre a quantidade de arquivos você terá de rever o seu processo e talvez dividir essas tarefas em partes.

          Por exemplo
          – Pasta 1, 2 e 3 são os scripts pra tarefa do usuário 1
          – Pasta 1.1, pasta 4 e 5 são pros scripts do usuário 2.

          Crie diferentes arquivos de execução, em partes para cada usuário, pois, até onde sei, pro que você precisa é a única opção.

          Só levantando uma curiosidade, estes caras já estão instalados em algum lugar? Não tem como gerar apenas um export?

          Atenciosamente,
          Felipe.

          #99359
          Avatar de joffrejoffre
          Participante

            [quote=”felipeg”:goktutfg]Então a partir desta tela, se o usuário não for o logado, nesse caso o sys você precisa

            1 – Efetuar o comando conn usuario/senha@servidor
            2- Chamar o sql com o comando @ (Sim, da mesma forma como você chama pelo CMD).

            Exemplo

            C:>sqlplus /nolog

            SQL*Plus: Release 9.2.0.1.0 - Production on Qua Mai 25 12:38:19 2011

            Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

            SQL> conn fiscal/fiscal@orcl
            Ligado.
            SQL> @teste.sql
            HELLO WORLD

            Procedimento de PL/SQL concluÝdo com Ûxito.

            SQL> exit
            Desligado de Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
            With the Partitioning, OLAP and Oracle Data Mining options
            JServer Release 9.2.0.1.0 - Production

            Sobre a quantidade de arquivos você terá de rever o seu processo e talvez dividir essas tarefas em partes.

            Por exemplo
            – Pasta 1, 2 e 3 são os scripts pra tarefa do usuário 1
            – Pasta 1.1, pasta 4 e 5 são pros scripts do usuário 2.

            Crie diferentes arquivos de execução, em partes para cada usuário, pois, até onde sei, pro que você precisa é a única opção.

            Só levantando uma curiosidade, estes caras já estão instalados em algum lugar? Não tem como gerar apenas um export?

            Atenciosamente,
            Felipe.[/quote]

            O usuário é único. Todos os scripts serão para o mesmo usuário.

            Fiz da forma que me falou, mas não gerou log. Vê se é assim mesmo:

            C:>sqlplus

            SQL*Plus: Release 10.2.0.3.0 – Production on Qua Mai 25 14:19:58 2011

            Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

            Informe o nome do usußrio: sys@srv-tsbd-9i as sysdba
            Informe a senha:

            Conectado a:
            Oracle9i Enterprise Edition Release 9.2.0.1.0 – Production
            With the Partitioning, OLAP and Oracle Data Mining options
            JServer Release 9.2.0.1.0 – Production

            SQL> conn TS_F_ORA9_JOFFRE/dev@srv-tsbd-9i
            Conectado.
            SQL> @D:ScriptsScripts_Ora9i1.LGComponentesOracle1.sql > D:ScriptsLogs9i
            1-1.txt

            Tabela criada

            Tabela alterada

            Tabela criada

            Tabela alterada

            SQL>

            Obrigado pela ajuda!

            #99360
            Avatar de felipegfelipeg
            Participante

              O usuário é único. Todos os scripts serão para o mesmo usuário.

              Fiz da forma que me falou, mas não gerou log. Vê se é assim mesmo:

              C:>sqlplus

              SQL*Plus: Release 10.2.0.3.0 – Production on Qua Mai 25 14:19:58 2011

              Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

              Informe o nome do usußrio: sys@srv-tsbd-9i as sysdba
              Informe a senha:

              Conectado a:
              Oracle9i Enterprise Edition Release 9.2.0.1.0 – Production
              With the Partitioning, OLAP and Oracle Data Mining options
              JServer Release 9.2.0.1.0 – Production

              SQL> conn TS_F_ORA9_JOFFRE/dev@srv-tsbd-9i
              Conectado.
              SQL> @D:ScriptsScripts_Ora9i1.LGComponentesOracle1.sql > D:ScriptsLogs9i
              1-1.txt

              Tabela criada

              Tabela alterada

              Tabela criada

              Tabela alterada

              SQL>

              Obrigado pela ajuda!

              Então, se você optou pelo output externo (via cmd) o mesmo tem que ser declarado quando o sqlplus for chamado.

              Exemplo:

              C:>sqlplus /nolog > teste.log

              conn fiscal/fiscal@orcl
              @teste.sql
              exit

              C:>

              Ai o arquivo teste.log ficou assim.

              SQL*Plus: Release 10.2.0.1.0 - Production on Wed May 25 14:36:37 2011

              Copyright (c) 1982, 2005, Oracle. All rights reserved.

              SQL> Connected.
              SQL> HELLO WORLD

              PL/SQL procedure successfully completed.

              SQL> Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
              With the Partitioning, OLAP and Data Mining options

              A única coisa a ser observar é que tudo que você digita o log surpime 😉

              Atenciosamente,
              Felipe.

              #99390
              Avatar de joffrejoffre
              Participante

                REMOVER

                #99447
                Avatar de joffrejoffre
                Participante

                  Ressuscitando o tópico para tirar uma nova dúvida…

                  C:> sqlplus /nolog > D:ScriptsLogsOracleOra10g1-1.txt
                  conn TS_F_ORA9_JO1/dev@srv-tsbd-9i
                  @D:Scripts1.LGComponentesOracle1.sql
                  Exit

                  Existe no Oracle (e no SQLSever) algum SELECT que, ao invés de retornar o valor das tabelas, retornar TRUE caso a tabela exista e FALSE caso ela não exista?

                  Obs.: Preciso que o resultado vá para um log, se possível, feito da mesma forma que postada acima.

                  #99448
                  Avatar de burgaburga
                  Participante

                    existem as tabelas user_tables, all_tables e dba_tables, nelas você pode consultar as tabelas que existem ou não usando a condição:

                    WHERE TABLE_NAME = ‘NOME_DA_SUA_TABELA’

                    #99450
                    Avatar de joffrejoffre
                    Participante

                      [quote=”burga”:raf28b1c]existem as tabelas user_tables, all_tables e dba_tables, nelas você pode consultar as tabelas que existem ou não usando a condição:

                      WHERE TABLE_NAME = ‘NOME_DA_SUA_TABELA'[/quote]

                      Ok… E como devo fazer? Aonde coloco isso?!

                      #99451
                      Avatar de burgaburga
                      Participante

                        SELECT * FROM ALL_TABLES
                        WHERE TABLE_NAME = 'NOME_DA_SUA_TABELA'
                        AND OWNER = 'NOME_DO_OWNER_DA_TABELA'

                        Não esqueça das aspas simples…

                        #99455
                        Avatar de felipegfelipeg
                        Participante

                          [quote=”joffre”:8jaha7zu][quote=”burga”:8jaha7zu]existem as tabelas user_tables, all_tables e dba_tables, nelas você pode consultar as tabelas que existem ou não usando a condição:

                          WHERE TABLE_NAME = ‘NOME_DA_SUA_TABELA'[/quote]

                          Ok… E como devo fazer? Aonde coloco isso?![/quote]


                          SELECT Decode(Count(*), 0, 'FALSE', 1, 'TRUE')
                          FROM user_tables WHERE table_name='NOME_DA_TABELA';

                          Atenciosamente,
                          Felipe.

                          #99456
                          Avatar de joffrejoffre
                          Participante

                            [quote=”burga”:2t9v508x]SELECT * FROM ALL_TABLES
                            WHERE TABLE_NAME = 'NOME_DA_SUA_TABELA'
                            AND OWNER = 'NOME_DO_OWNER_DA_TABELA'

                            Não esqueça das aspas simples…[/quote]

                            Funcionou, mas não exatamente de forma que eu queria.

                            No meu caso, usei o código assim:
                            SELECT * FROM ALL_TABLES WHERE TABLE_NAME = 'LGID' OR TABLE_NAME = 'LGCONFIGURACAO'
                            Retornou que duas linhas foram afetadas, no caso, TRUE pois as duas tabelas realmente existem, mas dessa forma não convém. Preciso usá-lo em duas linhas. Um SELECT para cada tabela, tipo assim:
                            SELECT * FROM ALL_TABLES WHERE TABLE_NAME = 'LGID'
                            SELECT * FROM ALL_TABLES WHERE TABLE_NAME = 'LGCONFIGURACAO'

                            Usando o WinSQL até consegui que retornasse que a tabela existe, mas, usando o SQLPLUS pelo PROMPT não consegui fazer gerar o log corretamente. No log aparece dois números.

                            Código no SQLPlus:
                            C:>sqlplus /nolog > C:LogOracle.txt
                            conn TS_F_ORA10_JOFFRE/dev@SRV-TSBD-10G
                            @C:script.sql
                            Exit

                            Log resultante da consulta no SQLPlus:

                            SQL*Plus: Release 10.2.0.3.0 – Production on Qua Jun 1 09:43:53 2011

                            Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

                            SQL> Conectado.
                            SQL> 2 3

                            Vale ressaltar, que, mesmo eu colocando o EXIT e pressionando no SQLPlus, ele não finalizou a sessão.

                            Obrigado pela atenção!

                            #99457
                            Avatar de felipegfelipeg
                            Participante

                              [quote=”joffre”:2695vaxf][quote=”burga”:2695vaxf]SELECT * FROM ALL_TABLES
                              WHERE TABLE_NAME = 'NOME_DA_SUA_TABELA'
                              AND OWNER = 'NOME_DO_OWNER_DA_TABELA'

                              Não esqueça das aspas simples…[/quote]

                              Funcionou, mas não exatamente de forma que eu queria.

                              No meu caso, usei o código assim:
                              SELECT * FROM ALL_TABLES WHERE TABLE_NAME = 'LGID' OR TABLE_NAME = 'LGCONFIGURACAO'
                              Retornou que duas linhas foram afetadas, no caso, TRUE pois as duas tabelas realmente existem, mas dessa forma não convém. Preciso usá-lo em duas linhas. Um SELECT para cada tabela, tipo assim:
                              SELECT * FROM ALL_TABLES WHERE TABLE_NAME = 'LGID'
                              SELECT * FROM ALL_TABLES WHERE TABLE_NAME = 'LGCONFIGURACAO'

                              Usando o WinSQL até consegui que retornasse que a tabela existe, mas, usando o SQLPLUS pelo PROMPT não consegui fazer gerar o log corretamente. No log aparece dois números.

                              Código no SQLPlus:
                              C:>sqlplus /nolog > C:LogOracle.txt
                              conn TS_F_ORA10_JOFFRE/dev@SRV-TSBD-10G
                              @C:script.sql
                              Exit

                              Log resultante da consulta no SQLPlus:

                              SQL*Plus: Release 10.2.0.3.0 – Production on Qua Jun 1 09:43:53 2011

                              Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

                              SQL> Conectado.
                              SQL> 2 3

                              Vale ressaltar, que, mesmo eu colocando o EXIT e pressionando no SQLPlus, ele não finalizou a sessão.

                              Obrigado pela atenção![/quote]

                              E dessa forma?


                              SELECT Decode(Count(*), 0, 'FALSE', 1, 'TRUE')
                              FROM all_tables WHERE table_name='NOME_DA_TABELA'
                              AND owner = 'OWNER DA TABELA';

                              Atenciosamente,
                              Felipe.

                              #99458
                              Avatar de joffrejoffre
                              Participante

                                [quote=”felipeg”:v63wwvo6]E dessa forma?


                                SELECT Decode(Count(*), 0, 'FALSE', 1, 'TRUE')
                                FROM all_tables WHERE table_name='NOME_DA_TABELA'
                                AND owner = 'OWNER DA TABELA';

                                Atenciosamente,
                                Felipe.[/quote]

                                Testei da forma que escreveu acima:
                                SELECT DECODE(COUNT(*), 0, 'FALSE', 1, 'TRUE') FROM ALL_TABLES WHERE TABLE_NAME='LGID'
                                E dentro do WinSQL me retornou o valor TRUE. Mas como faço para dar SELECT em duas tabelas. Preciso que retorne um TRUE/FALSE por tabela.

                                Tentei pelo SQLPlus, mas me retornou o mesmo log:

                                SQL*Plus: Release 10.2.0.3.0 – Production on Qua Jun 1 10:12:10 2011

                                Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

                                SQL> Conectado.
                                SQL> 2 3

                                E novamente o EXIT não finalizou a sessão do SQLPlus.

                                Obrigado pela atenção

                                #99459
                                Avatar de felipegfelipeg
                                Participante

                                  [quote=”joffre”:1jszpdrw][quote=”felipeg”:1jszpdrw]E dessa forma?


                                  SELECT Decode(Count(*), 0, 'FALSE', 1, 'TRUE')
                                  FROM all_tables WHERE table_name='NOME_DA_TABELA'
                                  AND owner = 'OWNER DA TABELA';

                                  Atenciosamente,
                                  Felipe.[/quote]

                                  Testei da forma que escreveu acima:
                                  SELECT DECODE(COUNT(*), 0, 'FALSE', 1, 'TRUE') FROM ALL_TABLES WHERE TABLE_NAME='LGID'
                                  E dentro do WinSQL me retornou o valor TRUE. Mas como faço para dar SELECT em duas tabelas. Preciso que retorne um TRUE/FALSE por tabela.

                                  Tentei pelo SQLPlus, mas me retornou o mesmo log:

                                  SQL*Plus: Release 10.2.0.3.0 – Production on Qua Jun 1 10:12:10 2011

                                  Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

                                  SQL> Conectado.
                                  SQL> 2 3

                                  E novamente o EXIT não finalizou a sessão do SQLPlus.

                                  Obrigado pela atenção[/quote]

                                  Se for do mesmo owner é só colocar as tabelas dentro do in ou usar um subselect com todas as tabelas

                                  SELECT Decode(Count(*), 0, 'FALSE', 1, 'TRUE')
                                  FROM all_tables WHERE table_name IN ('NOME_DA_TABELA1' , 'NOME_DA_TABELA2', 'NOME_DA_TABELA3')
                                  AND owner = 'OWNER DA TABELA';
                                  /
                                  exit

                                  Atenciosamente,
                                  Felipe.

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