terça-feira, 16 de dezembro de 2008

Criando Tabela com Campo PK Auto Incremento

Este metodo de criacao de tabela existe aos montes na internet, porem este codigo SQL virou padrao para a criacao das minhas tabelas no Oracle 10g que tenham um campo chave primaria auto incrementavel.

Codigo SQL :
-- cria tabela
create table DBTABELA
(
CODCAMPOAUTO NUMBER not null,
CAMPOTEXTO VARCHAR2(9),
CAMPONUMERO NUMBER(10,2),
CONSTRAINT PKCODCAMPOAUTO PRIMARY KEY (CODCAMPOAUTO)
);
-- cria sequence
create sequence CODCAMPOAUTO_SEQ;

-- isto evita que ocorra saltos na contagem do "proximo"
-- existe este erro no Oracle 10g nao sei pq :S
alter sequence CODCAMPOAUTO_SEQ NOCACHE;

-- cria trigger que efetua a operacao de auto incremento
create OR replace trigger trg_bi_DBTABELA
before insert on DBTABELA
for each row
begin
if :new.CODCAMPOAUTO is null then
select CODCAMPOAUTO_SEQ.nextval
into :new.CODCAMPOAUTO
from dual;
end if;
end;

quarta-feira, 3 de dezembro de 2008

Startando e Parando o Banco de Dados

Bem como estou usando minha maquina pessoal (WinXp, 2G Ram) para testar o oracle percebi o consumo elevado de memoria do Oracle (~300Mb) e fora que ja tenho problemas com o Firefox 3 (~200Mb) mas isto ja eh outra historia.

Encontrei entao uma solucao, criei um arquivo .BAT para "startar" e parar o banco de dados :

oraServico.bat
rem altere BANCODADOS pelo nome do seu banco de dados
net %1 OracleServiceBANCODADOS
net %1 Oracleora10gTNSListener
net %1 OracleServiceBANCODADOS

linha de comando para inicializar o banco de dados:

oraServico start

linha de comando para finalizar o banco de dados:

oraServico stop
A ultima linha do arquivo oraServico.bat eh so para garantir que o servico foi iniciado ou finalizado. Este processo tambem evita que fiquei abrindo o Painel de Controle>Servicos.

referencia:
http://www.cs.utexas.edu/users/dsb/CS347/Course/oracle_10g_installation.htm#Starting%20and%20Stopping%20Oracle