segunda-feira, 14 de dezembro de 2009

Como fazer para identificar via select o hostname de um banco.

Segue um select para ajudar.


select utl_inaddr.get_host_name, utl_inaddr.get_host_address
from dual;

T+

sábado, 29 de agosto de 2009

Substituindo um caracter no campo VARCHAR2

Alguém já precisou fazer uma substituição de um caracter em um campo varchar2?

Segue o exemplo que tive.

Ao consultar a tabela de telefone do cliente obtive o seguinte resultado:

SELECT * FROM TELEFONE;

CODIGO                                                 FONE
--------------------------------------- --------------
                                      1                          (011)4067/4544
                                      2                          (011)4547/3732
                                      3                          (011)8556/4564
                                      4                          (011)1235/9654

Na exibição do campo FONE, o cliente queria trocar o caracter '/’ pelo ‘-‘, o único jeito que encontrei foi……

SELECT CODIGO, SUBSTR(FONE,1,9)||'-'||SUBSTR(FONE,11,14) FONE FROM TELEFONE;

                                 CODIGO                FONE
--------------------------------------- --------------
                                      1                         (011)4067-4544
                                      2                         (011)4547-3732
                                      3                         (011)8556-4564
                                      4                         (011)1235-9654

T+

quarta-feira, 27 de maio de 2009

Dropando um Database no Oracle 10G

Desde 10g, é possível excluir uma base de dados da Oracle 10g com o novo comando SQL DROP DATABASE.
O comando se livra dos datafiles, redo log files, controlfiles e spfile.

Segue o exemplo do comando, lembrando que o mesmo deve ser executado conectado como SYSDBA:

shutdown abort;
startup mount exclusive restrict;
drop database;

T+

quarta-feira, 20 de maio de 2009

Habilitando a package DBMS_OUTPUT

 

A Package DBMS_OUTPUT,  através da Procedure PUT_LINE, envia as mensagens após uma Transação efetuada com sucesso.

Para que a Package seja habilita e as mensagens sejam apresentadas, basta executar o seguinte comando no prompt do ORACLE:

SET SERVEROUTPUT ON;

Para testar execute a package para que seja mostrada a mensagem:

DBMS_OUTPUT.PUT_LINE(‘Teste da package’);

Para que a package seja desabilitada execute o seguinte comando:

SET SERVEROUTPUT OFF;

Execute novamente a chamada da package DBMS_OUTPUT e perceba que a mensagem não é mais apresentada.

T+

Formas de disparar uma Trigger

A TRIGGER ou GATILHO, nada mais é do que uma “procedure” que é disparada conforme um acontecimento, para alteraçoes em tabelas temos os seguintes eventos:

BEFORE INSERT - Dispara uma vez antes de uma transação INSERT

BEFORE INSERT FOR EACH ROW - Dispara antes de cada novo registro criado/inserido.

AFTER INSERT - Dispara uma vez depois de uma transação INSERT

AFTER INSERT FOR EACH ROW - Dispara depois de cada novo registro criado/inserido.

BEFORE UPDATE - Dispara uma vez antes de uma transação UPDATE

BEFORE UPDATE FOR EACH ROW - Dispara antes de cada novo registro alterado.

AFTER UPDATE - Dispara uma vez depois de uma transação UPDATE

AFTER UPDATE FOR EACH ROW - Dispara depois de cada novo registro alterado.

BEFORE DELETE - Dispara uma vez antes de uma transação DELETE

BEFORE DELETE FOR EACH ROW - Dispara antes de cada novo registro apagado.

AFTER DELETE - Dispara uma vez depois de uma transação DELETE

AFTER DELETE FOR EACH ROW - Dispara depois de cada novo registro apagado.

T+

Renomeando uma primary key

Primeiro vamos criar uma tabela chamada NOTA_FISCAL

create table NOTA_FISCAL (NOTA_ID  number(38));

Depois criamos a PRIMARY KEY

alter table NOTA_FISCAL add constraint PK_NOTA primary key(NOTA_ID);

Agora vamos para a parte que interessa, vamos alterar o nome da primary key (PK_NOTA) para PK_NOTA_FISCAL

alter table NOTA_FISCAL rename constraint PK_NOTA to PK_NOTA_FISCAL;

Sabemos que ao criar uma primary key automaticamente um index é criado com o mesmo nome da primary key, não é necessário mas para mantermos o padrão de nosso banco de dados vamos alterar o nome do index também.

alter index PK_NOTA rename to PK_NOTA_FISCAL;

T+

segunda-feira, 4 de maio de 2009

TYPE% VS % ROWTYPE - Qual é a diferença?

Ambos são usados para definir variáveis no PL/SQL da mesma forma como está definido na base de dados. Se o tipo ou precisão de uma coluna for alterada, o bloco/programa PL/SQL automaticamente pega a nova definição da coluna na base de dados.

O type% e ROWTYPE% ajuda a reduzir custos de manutenção permitindo que os programas se adaptem ao banco de dados com as alterações realizadas nas colunas.


TYPE% é utilizado para declarar uma variável com o mesmo tipo de uma determinada coluna da tabela:
DECLARE  

v_EmpName  emp.ename%TYPE;

BEGIN  

SELECT ename INTO v_EmpName FROM emp WHERE ROWNUM = 1;   DBMS_OUTPUT.PUT_LINE('Name = ' || v_EmpName);

END;/ 

ROWTYPE% é usado para declarar uma variavel contendo todos os campos de uma tabela, ou seja, é usado para armazenar uma linha da tabela:

DECLARE  v_emp emp%ROWTYPE;

BEGIN

v_emp.empno := 10

v_emp.ename := 'XXXXXXX';

END;/

T+

quinta-feira, 2 de abril de 2009

Oracle - Renomeando Tabelas

Para renomear uma tabela, basta executar o seguinte comando

Alter table <nome_tabela> rename to <novo_nome_tabela>;

T+....

terça-feira, 31 de março de 2009

Mover um INDEX para uma Tablespace diferente

Para mover um indice para outra tablespace execute os seguintes passos:

1) Primeiro verifique quais as tablespaces disponíveis utilizando a seguinte consulta:

select tablespace_name from User_Tablespaces;

2) Verifique qual tablespace o INDEX esta armazenado utilizando o seguinte comando:

select * from user_indexes;

3) Em seguida altere o tablespace do index desejado:

Alter index <index-name> rebuild
    tablespace <new-tablespace>;

Até +

segunda-feira, 30 de março de 2009

Reconstruindo o Ìndice

A maneira mais simples para a reconstrução do índice é:

Alter index <index-name> rebuild tablespace <index-tablespace>;

O camando também tem a vantagem de não impedir o índice de ser utilizado enquanto está sendo reconstruído. O Tablespaces deve ser informado, caso contrário, o índice será reconstruído no tablespace atual (padrão) do usuário.

Reconstruir o índice também permite que novos parâmetros(campos) possam ser atribuídos ao índice.


Se o índice estiver danificado, ele deve ser excluído e recriado.
Em primeiro lugar, devemos identificar o índice e seus campos, para isso utilizamos as seguintes consultas:

SELECT COLUMN_NAME FROM USER_IND_COLUMNS
WHERE INDEX_NAME = 'index_name';

SELECT TABLE_NAME, UNIQUENESS, TABLESPACE_NAME, INITIAL_EXENT, NEXT_EXTENT, MIN_EXTENTS, MAX_EXTENTS,PCT_INCREASE, PCT_FREE FROM USER_INDEXES WHERE INDEX_NAME = 'index_name';
Excluindo o índice:
Drop index <index-name>;

Recriando o índice:
    Create [UNIQUE] index <index-name> on <tablea-name> (<coluna1>,<colunaN>) tablespace <tablespace-name>;

Lembrando que para a PRIMARY KEY ou UNIQUE KEY o índice é criado automaticamento na criação da constraint;


Até a próxima.....