Sexta-feira, 30 de janeiro de 2004 às 03h59

Dicas SQL*PLUS (continuação)

Tudo bem com vocês? Hoje iremos conhecer mais algumas dicas legais sobre o SQL*PLUS, e antes de começarmos, queria avisar que podem me mandar sim, sugestões para novas colunas, sem problemas, se o assunto for bom, tentarei o possível para escrever uma boa coluna sobre. E podem também mandar os e-mail com as dúvidas que estou respondendo conforme o tempo. Ok?

Queria mandar um abraço para o pessoal que esteve presente no 2º Encontro iMasters que foi realizado em São Paulo, eu ALPHAMEK, estive lá e foi muito bom, queria convidar os desenvolvedores e programadores para freqüentar o próximo encontro marcado, pois nesses dois últimos, o dominio foi do pessoal do design. "Fiquei meio sem assunto entre eles”.

Agora vamos ao que nos interessa, SQL*PLUS, prosseguindo com as dicas das colunas anteriores lá vai mais uma. Se alguém te perguntar algo assim.

Como posso bloquear alguns usuários de desviar comandos no SQL*PLUS?

Isso é uma dica legal, pois numa empresa que existe uma rede com 250 máquinas conectadas, sempre tem o "Pentelho" que tenta ficar burlando seu precioso banco de dados, então, o que devemos fazer em relação a isso, eis a solução. No Oracle existe uma tabela chamada SYSTEM.PRODUCT_USER_PROFILE, essa tabelinha fica escondida dentro do schema SYSTEM. Para melhorar nosso exemplo, vamos imaginar que teremos que desabilitar todos os usuários da rede que utilizem a sigla MKT em frente ao nome, neles, devemos desabilitar o comando CONNECT (Maldade!) para ficarem quietos. Primeiramente abrimos nosso SQL*PLUS, depois executamos o comando abaixo.

SQL > INSERT INTO SYSTEM.PRODUCT_USER_PROFILE
2 VALUES ('SQL*Plus', 'MKT%', 'CONNECT', NULL, NULL, 'DISABLED', NULL, NULL);

Percebe-se que será um comando DML normal, para inserir valores, porém com algumas características, no 1º Valor, iremos dizer que não é para executar no SQL*PLUS, no 2º valor iremos dizer que será todos os funcionários que tenha MKT em frente ao nome, no 3º valor será dito ao Oracle que será para desabilitar o comando CONNECT, poderia ser outro, como GRANT, REVOKE e etc, no 4º e 5º valor, seria para passarmos parâmetros de comando, no caso deixei nulo (NULL), 6º valor é o estado de sessão, se deverá ficar habilitada ou desabilitada, como somos maldosos, iremos DESABILITAR (DISABLED), e 7º e 8º valores são outros parâmetros de configuração, como dito deixei NULO.

Só isso irá resolver os usuários indevidos que ficam na nossa rede fazendo baderna, deste modo nos deixará com a cabeça mais livres para fazermos outras coisas. Lembramos que deveremos estar com o usuário SYSTEM. Não esqueça.

Agora esse é interessante, seu chefe chega na sua mesa e te pergunta:

Porque nossos SELECTs estão tão demorados para retornar as informações, o que está acontecendo com o Oracle?

Ai você pergunta: Meus Deus, o que irei fazer agora, não sei o que se passa dentro do SQL!

Deixa disso, tenho uma dica que irá te salvar, chama AUTOTRACE , um recurso do Oracle conhecido por poucos.

O AUTOTRACE te dará todas as informações que tu precisará para melhorar a performance dos seus SELECTs, como total de linhas processadas, bytes enviado ao cliente, bloqueios e etc..

Para usufruir dele, devemos executar um script SQL no banco de dados SYS, esse script já está pronto no diretório ADMIN do Oracle, que fica em $ORACLE_HOME/sqlplus/ADMIN.

Depois criar uma tabela chamada PLAN_TABLE, esse script fica em $ORACLE_HOME/rdbms/admin.

Após termos executados todos os scripts acima, entraremos com um comando muito básico dentro do nosso velho SQL*PLUS, observe:

SQL > SET AUTOTRACE ON
SQL> SELECT Mulheres, baladas FROM alphamek WHERE Atualmente='Maravilhosas';

Bom, como o SELECT acima irá retorna dezenas de valores no meu banco de dados, após exibir todas as informações pra mim sobre as meninas, estarei visualizando uma estatística do que aconteceu durante o processo do SQL dentro do motor do Oracle. Isso é realmente muito útil para nosso próximo SELECT ser mais dinâmico e ter menos perca de memória. Assim nosso chefe ficará feliz em saber que tu está conseguindo trazer informações com mais agilidade.

OK! Pessoal, estou ficando por aqui, caso tenham dúvidas não exitem em enviar um e-mail, e se forem usuários do Fórum iMasters, poderão postar suas dúvidas lá para achar soluções.

Abraços.

2 comentários

 thomas frederico glufke
01/08/2005 17h02

Boa dica

Valeu pela dica!
http://glufke.net/oracle

 Fábio Luiz Silva
13/08/2008 12h24

Copiar tabelas

Rodrigo, boa tarde.

Tem como facilitar a minha vida, preciso copiar uma tabela e os dados contidos nela de um usuario para outro do mesmo banco.

grato,

Fábio Luiz

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Sobre o Autor
Rodrigo Almeida formando em analise de banco de dados pela IBTA-SP, especialista em microeletrônica pela INSA-AIME na França e Oracle Certified Associate 9i. Já trabalhou em empresas como BTC Texaco, DuPont do Brasil, Vivo São Paulo, Procwork, DBACorp e atualmente é DBA Oracle da Affinia Automotiva.

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.