[Dica] Login fácil no SQL*Plus

Scripts Diversos para o Oracle SQL*Plus. (Relacionado a ferramenta Oracle SQL*Plus, para questões de SQL, usar o forum SQL)
Responder
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Utilizo diariamente várias bases. As vezes se torna chato ficar digitando as senhas complicadas etc. Pra resolver isso, criei alguns scripts que me ajudaram nessa tarefa.
Vejam as fotos e tirem suas conclusões:

1. CLICO no ícone do SQL*Plus:
Imagem



2. O SQL*Plus abre 4 opções de login pra mim. (O Default é o que está entre colchetes)
Imagem



3. Eu digito a base que eu quero logar
Imagem



4. Voalá! Entrei na base desejada e ele ainda mudou o PROMPT pra eu não me perder :-D
Imagem



COMO FAZER - PASSO A PASSO

Como dizia nosso amigo Jack Stripador, "Vamos por partes!". Toda essa facilidade é uma sequência de coisas que temos que fazer.

1. Criar o script LOGIN.SQL, no meu caso, ele está assim:
(Lembre-se sempre de deixar a última linha com um ENTER se seu sql*plus for anterior ao 9. LINK)

Selecionar tudo

set line 2000
set pagesize 50
@conn


2. Criar o script conn.sql. É nele que estarão as senhas!
Você deve editar as senhas e logins abaixo de acordo com suas bases, senhas, etc.
Veja abaixo: ele se conecta primeiramente na base default (a que está entre colchetes). Isso é necessário para poder executar o SQL.

Selecionar tudo

ACCEPT BASE CHAR PROMPT 'LOGIN: [D425], D203, CVE, D414: '
set termout OFF
col X new_value X
CONN <login>/<senha>@<base_default>
      SELECT 'login1/senha1@CVE'  X FROM DUAL WHERE upper('&BASE')='CVE'
UNION SELECT 'login2/senha2@D425' X FROM DUAL WHERE upper('&BASE')='D425'
UNION SELECT 'login2/senha3@D414' X FROM DUAL WHERE upper('&BASE')='D414'
UNION SELECT 'login4/senha4@D203' X FROM DUAL WHERE upper('&BASE')='D203';
CONN &X
@GOP
set termout on


3. Por último, criamos o script gop.sql (por que esse nome? boa pergunta) Ele é que vai deixar o PROMPT ajeitado de acordo como login.
Aqui no forum já foi falado sobre esse script nesse LINK

Selecionar tudo

--select   ' - '||lower(substr(global_name,1,(instr(global_name||'.','.',1,1)-1)))||''  machine from global_name;
set termout off
col user_id   new_value user_id
col user_name new_value user_name
select user_id, username user_name
from user_users
where username = user;
col db_name new_value db_name
select '@'||instance_name db_name from v$instance;
set termout on
set sqlprompt "&user_name&db_name> "
4. Ir nas propriedades do ATALHO do Sql*Plus, e colocar ali uma conexão padrão qualquer. No meu caso, está assim:

Selecionar tudo

C:\oracle\product\10.2.0\client_R2\BIN\sqlplusw.exe  usuario/senha@basetal
Isso fará com que ele se conecte sem perguntar por nenhuma senha.

Pronto!!! Entrar no SQL*Plus agora é fácil e rápido! :-D :-o
Pra entrar na base default, basta apertar ENTER!
Editado pela última vez por dr_gori em Qui, 28 Ago 2008 3:33 pm, em um total de 2 vezes.
roudrigo
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Ter, 27 Mar 2007 11:10 am
Localização: Porto Alegre RS

Criei os tres scripts. Mas como faço para quando eu clicar no icone do SQL*PLUS abrir a conexão padrão e depois o script Login.sql???
cleberzumba
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 223
Registrado em: Qui, 14 Dez 2006 10:45 am
Localização: Brasília-DF
Cleber Zumba de Souza

tenho que salvar os scripts em algum diretório específico?
cleberzumba
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 223
Registrado em: Qui, 14 Dez 2006 10:45 am
Localização: Brasília-DF
Cleber Zumba de Souza

coloquei o diretório BIN mas ele ainda continua me mostrando os campos de usuário,senha e host do sql*plus
muttley
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Qua, 15 Nov 2006 10:02 am
Localização: Cotia - SP
A Benção de Deus enriquece e não acrescenta dores

Dr Gori, onde colocamos estes Scripts , em qeu pasta ? :-o
muttley
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Qua, 15 Nov 2006 10:02 am
Localização: Cotia - SP
A Benção de Deus enriquece e não acrescenta dores

Bom

Ele executou o Sript , mas não funcionou , estou usando Oracle 9.2

coloquei o
no final da linha do
glogin.sql que está em C:\oracle\ora92\sqlplus\admine o
conn.sql e gop.sql coloquei em C:\oracle\ora92\bin
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Onde colocar:
Depende como está configurado o PATH.

Pra não ter erro, faça assim:
* No SQL*Plus, dá um ED CONN (pra criar um script novo). Nesse script, coloque os comandos. Com certeza nesse diretório que ele criou vai funcionar.
muttley
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Qua, 15 Nov 2006 10:02 am
Localização: Cotia - SP
A Benção de Deus enriquece e não acrescenta dores

Pra mim não funcionou, veja

Selecionar tudo

Connected to:
Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
JServer Release 9.2.0.5.0 - Production

LOGIN: [SMTST1], SMARTDSV  : SMARTDSV

Enter password: 
Enter value for user_name: 
Enter value for db_name: 
> 
> ED
Wrote file afiedt.buf

  1* select '@'||instance_name db_name from v$instance
o que será que pode estar errado ? :( :( :( :oops: :oops:
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Será que você tem acesso as tabelas em questão?
Tenta dar um select * from v$instance aí...
muttley
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Qua, 15 Nov 2006 10:02 am
Localização: Cotia - SP
A Benção de Deus enriquece e não acrescenta dores

Este aqui eu fiz o select no pl/sql



Selecionar tudo

SQL> select * from v$instance
  2  /

INSTANCE_NUMBER INSTANCE_NAME    HOST_NAME                                                        VERSION           STARTUP_TIME STATUS       PARALLEL    THREAD# ARCHIVER LOG_SWITCH_WAIT LOGINS     SHUTDOWN_PENDING DATABASE_STATUS   INSTANCE_ROLE      ACTIVE_STATE
--------------- ---------------- ---------------------------------------------------------------- ----------------- ------------ ------------ -------- ---------- -------- --------------- ---------- ---------------- ----------------- ------------------ ------------
              1 THMLCRM          hxhmldb1                                                         9.2.0.5.0         3/21/2007 12 OPEN         NO                1 STARTED                  ALLOWED    NO               ACTIVE            PRIMARY_INSTANCE   NORMAL
muttley
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Qua, 15 Nov 2006 10:02 am
Localização: Cotia - SP
A Benção de Deus enriquece e não acrescenta dores

Acho que estou errando alguma coisa no código abaixo :oops: :oops: :(

Selecionar tudo

ACCEPT BASE CHAR PROMPT 'LOGIN: [D425], D203, CVE, D414: ' 
set termout OFF 
col X new_value X 
CONN <login>/<senha>@<base_default> 
      SELECT 'login1/senha1@CVE'  X FROM DUAL WHERE upper('&BASE')='CVE' 
UNION SELECT 'login2/senha2@D425' X FROM DUAL WHERE upper('&BASE')='D425' 
UNION SELECT 'login2/senha3@D414' X FROM DUAL WHERE upper('&BASE')='D414' 
UNION SELECT 'login4/senha4@D203' X FROM DUAL WHERE upper('&BASE')='D203'; 
CONN &X 
@GOP 
set termout on 
muttley
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Qua, 15 Nov 2006 10:02 am
Localização: Cotia - SP
A Benção de Deus enriquece e não acrescenta dores

Realmente , ele não est[á conectando, onde será que está o erro ?
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

cleberzumba escreveu:coloquei o diretório BIN mas ele ainda continua me mostrando os campos de usuário,senha e host do sql*plus
No ícone do SQL*Plus temos que colocar alguma string de conexão pra ele não pedir a senha.
Exemplo: No meu ícone do Sql*Plus está assim
C:\ORAWIN60\BIN\PLUS80W.EXE usuario/xxxsenhaxxx@D425
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

muttley escreveu:Realmente , ele não est[á conectando, onde será que está o erro ?
Muttley, você tentou executar o script depois de entrar no SQL*PLus manualmente ?
Entra no SQL*Plus e executa:

Selecionar tudo

SGA@d425> @conn
LOGIN: [D425], D203, CVE, D414: 
pra ver se ele vai pedir a senha e pra ver se rodando manualmente funciona.
muttley
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Qua, 15 Nov 2006 10:02 am
Localização: Cotia - SP
A Benção de Deus enriquece e não acrescenta dores

Péra aí acho que realmente estou comendo bola,

na parte abaixo

Selecionar tudo

[CONN <login>/<senha>@<base_default> 
      SELECT 'login1/senha1@CVE'  X FROM DUAL WHERE upper('&BASE')='CVE' 
UNION SELECT 'login2/senha2@D425' X FROM DUAL WHERE upper('&BASE')='D425'
 
Eu tenho que manter igualzinho ? só mudando a BASE , isto é , o que vem depois do arroba ?
Pois eu estou colocando assim : no login1 meu usuário e senha1 minha senha para uma base DESV por exemplo
e assim vai no login2 outro usuário e respectivamente outra senha para outra base
Desculpe minha total ignorância[/code]
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Tem que literalmente colocar o login e a senha em questão:

Exemplo:

Selecionar tudo

CONN scott/tyger@base_ora
      SELECT 'sas/senhax@D150'  X FROM DUAL WHERE upper('&BASE')='D150'
UNION SELECT 'thomas/xcerr5@D425' X FROM DUAL WHERE upper('&BASE')='D425' 
etc...
muttley
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Qua, 15 Nov 2006 10:02 am
Localização: Cotia - SP
A Benção de Deus enriquece e não acrescenta dores

O primeiro CONN, é uma base default ?

Selecionar tudo

 
CONN scott/tyger@base_ora
 
Como você chama o SQL PLUS, para este já conectar em uma base ?, pois para mim aparece aquela tela para digitar login, senha e database
gokden
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 264
Registrado em: Dom, 19 Ago 2007 8:18 pm
Localização: Ribeirão Preto - SP
Lucas de Souza

OCA Developer
Analista de sistemas

oi pessoal, ressusitando o tópico aqui =D
é qui eu encontrei uma nova maneira de mudar o prompt sem dar nenhum select no banco =D

é so colocar esse comando no login.sql ou no glogin.sql

Selecionar tudo

 set sqlprompt "_user'-'_connect_identifier> "
o meu sql plus é esse SQL*Plus: Release 10.2.0.1.0 =D
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes