- Este tópico contém 46 respostas, 3 vozes e foi atualizado pela última vez 13 anos, 7 meses atrás por joffre.
-
AutorPosts
-
25 de maio de 2011 às 5:37 pm #99342felipegParticipante
[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 sairObs: 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 arquivosexit
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 heheAtenciosamente,
Felipe.25 de maio de 2011 às 6:47 pm #99349joffreParticipante[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 sairObs: 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 arquivosexit[/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:>sqlplusSQL*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 – ProductionSQL>[/quote]
Acho que vai dar pra você entender o que perguntei no post anterior com isso aí.
25 de maio de 2011 às 7:39 pm #99354felipegParticipante
[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:>sqlplusSQL*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 – ProductionSQL>
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 /nologSQL*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 WORLDProcedimento 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 - ProductionSobre 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.25 de maio de 2011 às 9:23 pm #99359joffreParticipante[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 /nologSQL*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 WORLDProcedimento 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 - ProductionSobre 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 – ProductionSQL> conn TS_F_ORA9_JOFFRE/dev@srv-tsbd-9i
Conectado.
SQL> @D:ScriptsScripts_Ora9i1.LGComponentesOracle1.sql > D:ScriptsLogs9i
1-1.txtTabela criada
Tabela alterada
Tabela criada
Tabela alterada
SQL>
Obrigado pela ajuda!
25 de maio de 2011 às 9:42 pm #99360felipegParticipanteO 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 – ProductionSQL> conn TS_F_ORA9_JOFFRE/dev@srv-tsbd-9i
Conectado.
SQL> @D:ScriptsScripts_Ora9i1.LGComponentesOracle1.sql > D:ScriptsLogs9i
1-1.txtTabela 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.logconn fiscal/fiscal@orcl
@teste.sql
exitC:>
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 WORLDPL/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.26 de maio de 2011 às 9:14 pm #99390joffreParticipanteREMOVER
1 de junho de 2011 às 3:57 pm #99447joffreParticipanteRessuscitando 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
ExitExiste 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.
1 de junho de 2011 às 4:13 pm #99448burgaParticipanteexistem 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’
1 de junho de 2011 às 4:23 pm #99450joffreParticipante[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?!
1 de junho de 2011 às 4:26 pm #99451burgaParticipanteSELECT * FROM ALL_TABLES
WHERE TABLE_NAME = 'NOME_DA_SUA_TABELA'
AND OWNER = 'NOME_DO_OWNER_DA_TABELA'Não esqueça das aspas simples…
1 de junho de 2011 às 4:41 pm #99455felipegParticipante[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.1 de junho de 2011 às 4:45 pm #99456joffreParticipante[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
ExitLog 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 3Vale ressaltar, que, mesmo eu colocando o EXIT e pressionando no SQLPlus, ele não finalizou a sessão.
Obrigado pela atenção!
1 de junho de 2011 às 5:04 pm #99457felipegParticipante[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
ExitLog 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 3Vale 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.1 de junho de 2011 às 5:17 pm #99458joffreParticipante[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 3E novamente o EXIT não finalizou a sessão do SQLPlus.
Obrigado pela atenção
1 de junho de 2011 às 5:23 pm #99459felipegParticipante[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 3E 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';
/
exitAtenciosamente,
Felipe. -
AutorPosts
- Você deve fazer login para responder a este tópico.