Re: [oracle_br] Re: Ajuda

2012-07-11 Por tôpico Andre Santos
Ana

Um ponto que acho importante: a chave composta (antiga PK), que coincide
com as duas FK's (tabela associativa), deveria agora ser uma "unique", por
questão de integridade.

Verifique a regra de negócio. Caso isso realmente seja pertinente, declare
uma unique também.

[ ]

André

Em 11 de julho de 2012 15:42, Étore Schiavini escreveu:

> **
>
>
> Só uma pergunta:
>
> Por que não utilizar a própria sequence para popular a nova coluna (id)
> também nas linhas pre-existentes ?
>
> Ao meu ver um simples "update tabela set id = sequencia.nextval" resolveria
> tudo de uma só vez.
>
> Étore
>
>
> -Original Message-
> From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br]
> On
> Behalf Of Ana Cássia Japiassu Diniz
> Sent: Wednesday, July 11, 2012 2:58 PM
> To: oracle_br@yahoogrupos.com.br
> Subject: Re: [oracle_br] Re: Ajuda
>
> Obrigada a todos pela ajuda.
>
> Consegui fazer praticamente toda a alteração que preciso. Falta apenas a
> criação da sequence para esta tabela, cujo o valor inicial deverá ser o
> último valor do novo atributo adicionado na tabela.
> Como eu posso definir o start with da sequence com este valor?
> Não posso colocar isso fixo, pois esta alteração precisarei fazer em três
> bancos que contêm dados diferentes.
>
> Muito obrigada.
>
> Ana
> Em 11 de julho de 2012 14:13, J. Laurindo Chiappa
> escreveu:
>
> > **
> >
> >
> > Bom dia, Ana - não vejo grandes problemas, mas vc deverá saber que :
> >
> > a) no RDBMS Oracle vc normalmente não consegue mudar a PK, então ela
> > tem que ser dropada e recriada com o novo atributo que vc quer :
> > Obviamente, então, se essa PK a ser alterada é usada como origem para
> > FK de outras tabelas, logicamente vc deverá dropar as FKs primeiro
> > (quebrando o uso da PK como pai), e depois da nova PK criada, vc vai
> > ter que recriar as FKs, apontando para a nova PK Obviamente
> > também, se a PK vai ser em cima de uma nova coluna, essa nova coluna
> > tem que ser Adicionada não só na tabela-pai MAS também nas
> > tabelas-filhas, para servir de base para a nova FK referenciando a
> > nova PK... É muito, muito frequente o pessoal se "esquecer" deste
> > Importante detalhe e se dar mal na hora da implementação por causa das
> FKs..
> >
> > b) vc até poderia, ao menos em parte, fazer via DBMS_REDEFINITION, mas
> > imho é mais fácil/direto executar os comandos manualmente, e também já
> > que vc quer a maneira mais segura, eu Recomendaria que vc solicitasse
> > uma janela de manutenção, em que o banco estará inacessível para vc
> > poder fazer as alterações todas sem se preocupar com locks eventuais,
> > acessos de usuário, dados sendo entrados/alterados/removidos, etc...
> >
> > c) como é Normal em qquer alteração, vc Tem que Ter um backup o mais
> > recente possível, Válido e testado, antes de proceder : muitas vezes
> > se agenda alterações do tipo para depois da janela de backup
> > Exatamente por esse motivo...
> >
> > Isto posto, um exemplo rápido - apenas notando que vc infelizmente Não
> > nos Dá a versão, então estou supondo ao menos versão 10gr2 :
> >
> > => criação de tabela com PK e de algumas FKs que a referenciam :
> >
> > SYSTEM@O10GR2::SQL>create table T_PAI (c1 number, c2 varchar2(40), c3
> > varchar2(80) );
> >
> > Tabela criada.
> >
> > SYSTEM@O10GR2::SQL>alter table T_PAI add constraint T_PAI_PK primary
> > key (c1, c2);
> >
> > Tabela alterada.
> >
> > SYSTEM@O10GR2::SQL>insert into T_PAI values(1, 'Chave 1', 'Linha 1');
> >
> > 1 linha criada.
> >
> > SYSTEM@O10GR2::SQL>insert into T_PAI values(2, 'Chave 2', 'Linha 2');
> >
> > 1 linha criada.
> >
> > SYSTEM@O10GR2::SQL>create table T_FILHA1 (c1 number, c2 varchar2(40),
> > c3
> > varchar2(80) );
> >
> > Tabela criada.
> >
> > SYSTEM@O10GR2::SQL>create table T_FILHA2 (c1 number, c2 varchar2(40),
> > c3
> > varchar2(80) );
> >
> > Tabela criada.
> >
> > SYSTEM@O10GR2::SQL>alter table T_FILHA1 add constraint T_FILHA1_FK
> > foreign key (c1, c2) references T_PAI(c1, c2);
> >
> > Tabela alterada.
> >
> > SYSTEM@O10GR2::SQL>alter table T_FILHA2 add constraint T_FILHA2_FK
> > foreign key (c1, c2) references T_PAI(c1, c2);
> >
> > Tabela alterada.
> >
> > SYSTEM@O10GR2::SQL>insert into T_FILHA1 values(1, 'Chave 1', 'Filha
> > 1');
> >
> > 1 linha criada.
> >
> > SYSTEM@O10GR2::SQL>insert into T_FILHA2 values(2, 'Chave 2', 'Filha
> > 2');
> >
> > 1 linha criada.
> >
> > SYSTEM@O10GR2::SQL>commit;
> >
> > Commit concluido.
> >
> > ==> veja que Não Posso dropar PK usada por FKs :
> >
> > SYSTEM@O10GR2::SQL>alter table T_PAI drop constraint T_PAI_PK; alter
> > table T_PAI drop constraint T_PAI_PK
> > *
> > ERRO na linha 1:
> > ORA-02273: esta chave exclusiva/primaria e referenciada por algumas
> > chaves externas
> >
> > => vou então listar as FKs, já gerando os comandos de drop que eu só
> > copio & colo :
> >
> > SYSTEM@O10GR2::SQL>select 'alter table ' || table_name || ' drop
> > constraint ' || constraint_name || ';' from dba_constraints where
> > owner='SYSTEM' an

Re: [oracle_br] Como replicar uma base de dados mas sem replicar os deletes e os drop

2012-07-11 Por tôpico Milton Bastos Henriquis Jr.
Acredito que o GoldenGate seria uma ferramenta ótima pra isso...

Sem utilizar ferramenta externa eu também iria sugerir PL/SQL  e dblink!

Nem precisaria ser por trigger... pois ele disse que quer replicar uma vez
por semana...
Poderia usar o MERGE nesse caso, em scripts rodando 1 vez por semana, e o
MERGE
atualizando os novos dados (inserts e updates).

Provavelmente deve haver outras soluções mais adequadas... essa que citei é
bem
simples, talvez até um pouco "tosca", e só resolveria a replicação dos
dados, não resolveria
replicação de objetos criados/alterados.




2012/7/11 Duilio Bruniera 

> **
>
>
> Olha amigão, não sei se alguem no grupo sabe algo melhor que isso , mais na
> minha cabeça a única coisa que voce pode fazer é colocar triggers no seu
> banco de produção, para gravar via dblink no seu outro banco. Mas isso
> seria
> uma solução muito tosca e dependendo do seu ambiente talves inviavel.
>
> De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
> nome de cassulcamilojacinto
> Enviada em: quarta-feira, 11 de julho de 2012 17:15
> Para: oracle_br@yahoogrupos.com.br
> Assunto: [oracle_br] Como replicar uma base de dados mas sem replicar os
> deletes e os drop
>
>
> Tenho uma base de dados producao e tenho outra que foi feita do backup da
> de
> producao como replicar 1 vez por semana ou sempre o conteúdo de produção
> para a replica mas sem replicar os deletes e drop
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Att,


[As partes desta mensagem que não continham texto foram removidas]





--
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
>Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
>http://www.oraclebr.com.br/  

 Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
oracle_br-unsubscr...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html




[oracle_br] Re: paradas estranhas banco produção

2012-07-11 Por tôpico ederson2001br
Alô Paulo,

Nada contra quem goste, mas eu não gosto de Oracle em Windows.

Na versão 32bits, tinha a limitação de 4Gb de ram que não existe mais no no 
64bits, além daquela "gambi" do /PAE no boot, não funcionava direito.

Um dos problemas do Windows era que ele não conseguia gerenciar mais de 2Gb de 
memória por processo, também outro problema solucionado com a versão 64bits 
(?). A sua SGA_MAX está 3Gb...

Ok até aqui? bem, o Windows 2003 vc não diz qual ServicePack. Sendo o SP1, ele 
só gerencia mais de 4Gb de RAM se for na versão Enterprise ou Datacenter de 
64bits. As outras versões SP1 só gerenciam até 4Gb de Ram. Isto foi verificado?

Outro problema que sempre acontece: atualização automática ligada. Todo admin 
fica sempre de olho prá atualizar o Windows, mas estas atualizações da 
Microsoft são sempre um problema: elas podem falhar no seu ambiente e aí, só 
Jesus na causa...

Problema dois: O windows com Oracle, evite colocar outros softwares no servidor 
(até antivirus interfere na performance). Vc diz que tem uma aplicação GIS, 
isto consome recurso que este servidor já não tem nem pro banco. 

Problema três: a mensagem de paginação que vc informou: significa que a RAM não 
está sendo suficiente e está usando paginação: o servidor já tá pedindo água: 
hardware insuficiente ou uma gama de consumidores de recursos que estão indo 
além do fisicamente existente.

Problema quatro: Windows2003 já ficou obsoleto faz um tempão, vcs não 
consideram atualizar este SO não?

Longe de mim ser dono da verdade, mas no mínimo eu separaria o GIS do Oracle, 
colocando cada um em servidor separado. Na minha opinião, servidor de produção 
para Oracle, coloco de extra somente o sistema operacional.

Ederson Elias
DBA Oracle
http://br.linkedin.com/pub/ederson-elias/24/8b/8b0


--- Em oracle_br@yahoogrupos.com.br, Paulo Couto  escreveu
>
> Amigos, já por duas vezes em 30 dias ocorre uma parada inesperada do servido 
> do nosso oracle produção.
>  
> Tentei checar o que está ao meu alcance e não consegui detectar a causa ou 
> causas.
>  
> Levantei alguns dados e peço vossa ajuda para analisar e com a graça de Deus 
> resolver este problema.
>  
>  
> Mensagem que ocorre no windows após a parada:
>  
> The OracleServiceDBSTA service terminated unexpectedly.  It has done this 1 
> time(s).
> For more information, see Help and Support Center at 
> http://go.microsoft.com/fwlink/events.asp.
>  
> Configuração de nosso ambiente:
> 
> windows server 2003  64 bits
> Oracle 10.2.0.4 Standard  64 bits
> 6 GB de RAM e 4 proc de 2.33 ghz
> sga_max = 3076 M
> sga_target = 3076 M
> pga_target = 1024 M
> média 6 archives por hora, com picos durante horário comercial de 9 archives 
> hora.
> pagefile setado para inicial 4096 M com máximo de 8000 M
> 
> Coincidentemente ou não, houveram atualização de windows um dia antes da 
> primeira queda e hoje alguns minutos antes da segunda queda. Foi atualizado o 
> windows update e o .net framework 3.5 necessário para outra aplicação de GIS.
>  
> 
> Alertas vistos pela ferramenta Enterprise Manager:
>  
> Descoberta  Significant virtual memory paging was detected on the host 
> operating system. 
> Impacto (minutos)  68,2 
> Impacto (%)  100 
> 
> Host operating system was experiencing significant paging but no particular 
> root cause could be detected. Investigate processes that do not belong to 
> this instance running on the host that are consuming significant amount of 
> virtual memory. Also consider adding more physical memory to the host.
> 
> Descoberta  Significant virtual memory paging was detected on the host 
> operating system. 
> Impacto (minutos)  68,2 
> Impacto (%)  100 
>  
>  
> Select da view V$LOG
>  
> 2 1 14531 104857600 1 YES INACTIVE 2321098429 11/07/2012 15:55:33
> 3 1 14532 104857600 1 YES INACTIVE 2321161355 11/07/2012 15:56:15
> 4 1 14533 104857600 1 YES INACTIVE 2321196031 11/07/2012 16:00:22
> 5 1 14534 104857600 1 YES INACTIVE 2321253747 11/07/2012 16:24:45
> 6 1 14535 104857600 1 YES INACTIVE 2321308134 11/07/2012 16:25:18
> 7 1 14536 104857600 1 YES INACTIVE 2321362015 11/07/2012 16:25:52
> 1 1 14537 104857600 1 YES ACTIVE     2321407829 11/07/2012 16:26:19
> 8 1 14538 104857600 1 NO CURRENT  2321462189 11/07/2012 16:43:29
>  
> Conteudo alert.log antes e depois da queda:
>  
> queda do serviço as 15:36 hs
>  
>  
> WARNING: inbound connection timed out (ORA-3136)
> Wed Jul 11 13:13:53 2012
> WARNING: inbound connection timed out (ORA-3136)
> Wed Jul 11 13:13:58 2012
> WARNING: inbound connection timed out (ORA-3136)
> Wed Jul 11 13:14:03 2012
> WARNING: inbound connection timed out (ORA-3136)
> Wed Jul 11 13:14:08 2012
> WARNING: inbound connection timed out (ORA-3136)
> Wed Jul 11 13:14:13 2012
> WARNING: inbound connection timed out (ORA-3136)
> Wed Jul 11 13:24:55 2012
> Thread 1 advanced to log sequence 14508 (LGWR switch)
>   Current log# 3 seq# 14508 mem# 0: E:\ORACLE\ORADATA\DBSTA\RE

[oracle_br] paradas estranhas banco produção

2012-07-11 Por tôpico Paulo Couto
Amigos, já por duas vezes em 30 dias ocorre uma parada inesperada do servido do 
nosso oracle produção.
 
Tentei checar o que está ao meu alcance e não consegui detectar a causa ou 
causas.
 
Levantei alguns dados e peço vossa ajuda para analisar e com a graça de Deus 
resolver este problema.
 
 
Mensagem que ocorre no windows após a parada:
 
The OracleServiceDBSTA service terminated unexpectedly.  It has done this 1 
time(s).
For more information, see Help and Support Center at 
http://go.microsoft.com/fwlink/events.asp.
 
Configuração de nosso ambiente:

windows server 2003  64 bits
Oracle 10.2.0.4 Standard  64 bits
6 GB de RAM e 4 proc de 2.33 ghz
sga_max = 3076 M
sga_target = 3076 M
pga_target = 1024 M
média 6 archives por hora, com picos durante horário comercial de 9 archives 
hora.
pagefile setado para inicial 4096 M com máximo de 8000 M

Coincidentemente ou não, houveram atualização de windows um dia antes da 
primeira queda e hoje alguns minutos antes da segunda queda. Foi atualizado o 
windows update e o .net framework 3.5 necessário para outra aplicação de GIS.
 

Alertas vistos pela ferramenta Enterprise Manager:
 
Descoberta  Significant virtual memory paging was detected on the host 
operating system. 
Impacto (minutos)  68,2 
Impacto (%)  100 

Host operating system was experiencing significant paging but no particular 
root cause could be detected. Investigate processes that do not belong to this 
instance running on the host that are consuming significant amount of virtual 
memory. Also consider adding more physical memory to the host.

Descoberta  Significant virtual memory paging was detected on the host 
operating system. 
Impacto (minutos)  68,2 
Impacto (%)  100 
 
 
Select da view V$LOG
 
2 1 14531 104857600 1 YES INACTIVE 2321098429 11/07/2012 15:55:33
3 1 14532 104857600 1 YES INACTIVE 2321161355 11/07/2012 15:56:15
4 1 14533 104857600 1 YES INACTIVE 2321196031 11/07/2012 16:00:22
5 1 14534 104857600 1 YES INACTIVE 2321253747 11/07/2012 16:24:45
6 1 14535 104857600 1 YES INACTIVE 2321308134 11/07/2012 16:25:18
7 1 14536 104857600 1 YES INACTIVE 2321362015 11/07/2012 16:25:52
1 1 14537 104857600 1 YES ACTIVE     2321407829 11/07/2012 16:26:19
8 1 14538 104857600 1 NO CURRENT  2321462189 11/07/2012 16:43:29
 
Conteudo alert.log antes e depois da queda:
 
queda do serviço as 15:36 hs
 
 
WARNING: inbound connection timed out (ORA-3136)
Wed Jul 11 13:13:53 2012
WARNING: inbound connection timed out (ORA-3136)
Wed Jul 11 13:13:58 2012
WARNING: inbound connection timed out (ORA-3136)
Wed Jul 11 13:14:03 2012
WARNING: inbound connection timed out (ORA-3136)
Wed Jul 11 13:14:08 2012
WARNING: inbound connection timed out (ORA-3136)
Wed Jul 11 13:14:13 2012
WARNING: inbound connection timed out (ORA-3136)
Wed Jul 11 13:24:55 2012
Thread 1 advanced to log sequence 14508 (LGWR switch)
  Current log# 3 seq# 14508 mem# 0: E:\ORACLE\ORADATA\DBSTA\REDO03.LOG
Wed Jul 11 13:25:28 2012
Thread 1 advanced to log sequence 14509 (LGWR switch)
  Current log# 4 seq# 14509 mem# 0: E:\ORACLE\ORADATA\DBSTA\REDO04.LOG
Wed Jul 11 13:25:58 2012
Thread 1 advanced to log sequence 14510 (LGWR switch)
  Current log# 5 seq# 14510 mem# 0: E:\ORACLE\ORADATA\DBSTA\REDO05.LOG
Wed Jul 11 13:51:22 2012
Thread 1 advanced to log sequence 14511 (LGWR switch)
  Current log# 6 seq# 14511 mem# 0: E:\ORACLE\ORADATA\DBSTA\REDO06.LOG
Wed Jul 11 13:55:01 2012
Thread 1 advanced to log sequence 14512 (LGWR switch)
  Current log# 7 seq# 14512 mem# 0: E:\ORACLE\ORADATA\DBSTA\REDO07.LOG
Wed Jul 11 13:55:37 2012
Thread 1 advanced to log sequence 14513 (LGWR switch)
  Current log# 1 seq# 14513 mem# 0: E:\ORACLE\ORADATA\DBSTA\REDO01.LOG
Wed Jul 11 13:56:00 2012
Thread 1 advanced to log sequence 14514 (LGWR switch)
  Current log# 8 seq# 14514 mem# 0: E:\ORACLE\ORADATA\DBSTA\REDO08.LOG
Wed Jul 11 14:18:47 2012
Thread 1 advanced to log sequence 14515 (LGWR switch)
  Current log# 2 seq# 14515 mem# 0: E:\ORACLE\ORADATA\DBSTA\REDO02.LOG
Wed Jul 11 14:24:52 2012
Thread 1 advanced to log sequence 14516 (LGWR switch)
  Current log# 3 seq# 14516 mem# 0: E:\ORACLE\ORADATA\DBSTA\REDO03.LOG
Wed Jul 11 14:25:22 2012
Thread 1 advanced to log sequence 14517 (LGWR switch)
  Current log# 4 seq# 14517 mem# 0: E:\ORACLE\ORADATA\DBSTA\REDO04.LOG
Wed Jul 11 14:26:00 2012
Thread 1 advanced to log sequence 14518 (LGWR switch)
  Current log# 5 seq# 14518 mem# 0: E:\ORACLE\ORADATA\DBSTA\REDO05.LOG
Wed Jul 11 14:33:56 2012
Thread 1 advanced to log sequence 14519 (LGWR switch)
  Current log# 6 seq# 14519 mem# 0: E:\ORACLE\ORADATA\DBSTA\REDO06.LOG
Wed Jul 11 14:54:44 2012
Thread 1 advanced to log sequence 14520 (LGWR switch)
  Current log# 7 seq# 14520 mem# 0: E:\ORACLE\ORADATA\DBSTA\REDO07.LOG
Wed Jul 11 14:55:20 2012
Thread 1 advanced to log sequence 14521 (LGWR switch)
  Current log# 1 seq# 14521 mem# 0: E:\ORACLE\ORADATA\DBSTA\REDO01.LOG
Wed Jul 11 14:56:00 2012
Thread 1 advanced to log sequence 14522

RE: [oracle_br] Re: Ajuda

2012-07-11 Por tôpico Étore Schiavini
Só uma pergunta:

Por que não utilizar a própria sequence para popular a nova coluna (id)
também nas linhas pre-existentes ?

Ao meu ver um simples "update tabela set id = sequencia.nextval" resolveria
tudo de uma só vez.

Étore

-Original Message-
From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] On
Behalf Of Ana Cássia Japiassu Diniz
Sent: Wednesday, July 11, 2012 2:58 PM
To: oracle_br@yahoogrupos.com.br
Subject: Re: [oracle_br] Re: Ajuda

Obrigada a todos pela ajuda.

Consegui fazer praticamente toda a alteração que preciso. Falta apenas a
criação da sequence para esta tabela, cujo o valor inicial deverá ser o
último valor do novo atributo adicionado na tabela.
Como eu posso definir o start with da sequence com este valor?
Não posso colocar isso fixo, pois esta alteração precisarei fazer em três
bancos que contêm dados diferentes.

Muito obrigada.

Ana
Em 11 de julho de 2012 14:13, J. Laurindo Chiappa
escreveu:

> **
>
>
> Bom dia, Ana - não vejo grandes problemas, mas vc deverá saber que :
>
> a) no RDBMS Oracle vc normalmente não consegue mudar a PK, então ela 
> tem que ser dropada e recriada com o novo atributo que vc quer : 
> Obviamente, então, se essa PK a ser alterada é usada como origem para 
> FK de outras tabelas, logicamente vc deverá dropar as FKs primeiro 
> (quebrando o uso da PK como pai), e depois da nova PK criada, vc vai 
> ter que recriar as FKs, apontando para a nova PK Obviamente 
> também, se a PK vai ser em cima de uma nova coluna, essa nova coluna 
> tem que ser Adicionada não só na tabela-pai MAS também nas 
> tabelas-filhas, para servir de base para a nova FK referenciando a 
> nova PK... É muito, muito frequente o pessoal se "esquecer" deste 
> Importante detalhe e se dar mal na hora da implementação por causa das
FKs..
>
> b) vc até poderia, ao menos em parte, fazer via DBMS_REDEFINITION, mas 
> imho é mais fácil/direto executar os comandos manualmente, e também já 
> que vc quer a maneira mais segura, eu Recomendaria que vc solicitasse 
> uma janela de manutenção, em que o banco estará inacessível para vc 
> poder fazer as alterações todas sem se preocupar com locks eventuais, 
> acessos de usuário, dados sendo entrados/alterados/removidos, etc...
>
> c) como é Normal em qquer alteração, vc Tem que Ter um backup o mais 
> recente possível, Válido e testado, antes de proceder : muitas vezes 
> se agenda alterações do tipo para depois da janela de backup 
> Exatamente por esse motivo...
>
> Isto posto, um exemplo rápido - apenas notando que vc infelizmente Não 
> nos Dá a versão, então estou supondo ao menos versão 10gr2 :
>
> => criação de tabela com PK e de algumas FKs que a referenciam :
>
> SYSTEM@O10GR2::SQL>create table T_PAI (c1 number, c2 varchar2(40), c3
> varchar2(80) );
>
> Tabela criada.
>
> SYSTEM@O10GR2::SQL>alter table T_PAI add constraint T_PAI_PK primary 
> key (c1, c2);
>
> Tabela alterada.
>
> SYSTEM@O10GR2::SQL>insert into T_PAI values(1, 'Chave 1', 'Linha 1');
>
> 1 linha criada.
>
> SYSTEM@O10GR2::SQL>insert into T_PAI values(2, 'Chave 2', 'Linha 2');
>
> 1 linha criada.
>
> SYSTEM@O10GR2::SQL>create table T_FILHA1 (c1 number, c2 varchar2(40), 
> c3
> varchar2(80) );
>
> Tabela criada.
>
> SYSTEM@O10GR2::SQL>create table T_FILHA2 (c1 number, c2 varchar2(40), 
> c3
> varchar2(80) );
>
> Tabela criada.
>
> SYSTEM@O10GR2::SQL>alter table T_FILHA1 add constraint T_FILHA1_FK 
> foreign key (c1, c2) references T_PAI(c1, c2);
>
> Tabela alterada.
>
> SYSTEM@O10GR2::SQL>alter table T_FILHA2 add constraint T_FILHA2_FK 
> foreign key (c1, c2) references T_PAI(c1, c2);
>
> Tabela alterada.
>
> SYSTEM@O10GR2::SQL>insert into T_FILHA1 values(1, 'Chave 1', 'Filha 
> 1');
>
> 1 linha criada.
>
> SYSTEM@O10GR2::SQL>insert into T_FILHA2 values(2, 'Chave 2', 'Filha 
> 2');
>
> 1 linha criada.
>
> SYSTEM@O10GR2::SQL>commit;
>
> Commit concluido.
>
> ==> veja que Não Posso dropar PK usada por FKs :
>
> SYSTEM@O10GR2::SQL>alter table T_PAI drop constraint T_PAI_PK; alter 
> table T_PAI drop constraint T_PAI_PK
> *
> ERRO na linha 1:
> ORA-02273: esta chave exclusiva/primaria e referenciada por algumas 
> chaves externas
>
> => vou então listar as FKs, já gerando os comandos de drop que eu só 
> copio & colo :
>
> SYSTEM@O10GR2::SQL>select 'alter table ' || table_name || ' drop 
> constraint ' || constraint_name || ';' from dba_constraints where 
> owner='SYSTEM' and r_constraint_name='T_PAI_PK';
>
> 'ALTERTABLE'||TABLE_NAME||'DROPCONSTRAINT'||CONSTRAINT_NAME||';'
> --
> alter table T_FILHA1 drop constraint T_FILHA1_FK; alter table T_FILHA2 
> drop constraint T_FILHA2_FK;
>
> => o copy/paste em ação :
>
> SYSTEM@O10GR2::SQL>alter table T_FILHA1 drop constraint T_FILHA1_FK;
>
> Tabela alterada.
>
> SYSTEM@O10GR2::SQL>alter table T_FILHA2 drop constraint T_FILHA2_FK;
>
> Tabela alterada.
>
> SYSTEM@O10GR2::SQL>
>
> => agora é dropar a PK, criar a sequence que vai alimentar o ID, criar 
> 

[oracle_br] Re: Ajuda

2012-07-11 Por tôpico J. Laurindo Chiappa
  Sim, com certeza não dá pra fazer BIND em DDLs , mas dá tranquilo pra usar 
SQL dinâmico direto, seja via macrosubstituição do sqlplus (caracter &), seja 
via EXECUTE IMMEDIATE Como é algo a ser feito uma vez só de qquer maneira, 
o não-sharing causado pela ausência de BINDs não deve causar problema algum...
 Um exemplo curto, com EXEC IMMEDIATE em PL/SQL  :

=> não aceitação de binding direto...

SYSTEM@O10GR2::SQL>variable X number;
SYSTEM@O10GR2::SQL>BEGIN select max(object_id) into :x from all_objects; END;
  2  /

Procedimento PL/SQL concluido com sucesso.

SYSTEM@O10GR2::SQL>print x

 X
--
 56290

SYSTEM@O10GR2::SQL>create sequence seq_test start with :x;
create sequence seq_test start with :x
*
ERRO na linha 1:
ORA-01722: numero invalido

=> uso de SQl dinâmico num script super-simples de 3 linhas de comandos (o 
mesmo que sugeri antes em outra resposta) :

SYSTEM@O10GR2::SQL>DECLARE
  2  v_max number;
  3  BEGIN
  4  select max(object_id) into v_max from all_objects;
  5  execute immediate ('CREATE SEQUENCE TESTE_SEQ START WITH ' || v_max);
  6* END;
SYSTEM@O10GR2::SQL>/

Procedimento PL/SQL concluido com sucesso.

=> o resultado ...

SYSTEM@O10GR2::SQL>select teste_seq.nextval from dual;

   NEXTVAL
--
 56290

SYSTEM@O10GR2::SQL>select teste_seq.nextval from dual;

   NEXTVAL
--
 56291

 []s

   Chiappa


--- Em oracle_br@yahoogrupos.com.br, "Milton Bastos Henriquis Jr." 
 escreveu
>
> Ana, eu acho que vc tem que olhar manualmente SIM e passar o valor fixo!
> 
> Apenas 3 bancos diferentes, é muito mais fácil fazer isso manualmente
> (pegar o MAX da coluna, somar +1
> e escrever no código de criação da sequence).
> 
> Sinceramente eu não sei se é possível passar o resultado de uma query
> direto no comando
> DDL de criação da sequence, mas acho que não é possível não!!
> 
> 
> 
> 
> 2012/7/11 Ana Cássia Japiassu Diniz 
> 
> > Obrigada a todos pela ajuda.
> >
> > Consegui fazer praticamente toda a alteração que preciso. Falta apenas a
> > criação da sequence para esta tabela, cujo o valor inicial deverá ser o
> > último valor do novo atributo adicionado na tabela.
> > Como eu posso definir o start with da sequence com este valor?
> > Não posso colocar isso fixo, pois esta alteração precisarei fazer em três
> > bancos que contêm dados diferentes.
> >
> > Muito obrigada.
> >
> > Ana
> > Em 11 de julho de 2012 14:13, J. Laurindo Chiappa
> > escreveu:
> >
> > > **
> > >
> > >
> > > Bom dia, Ana - não vejo grandes problemas, mas vc deverá saber que :
> > >
> > > a) no RDBMS Oracle vc normalmente não consegue mudar a PK, então ela tem
> > > que ser dropada e recriada com o novo atributo que vc quer : Obviamente,
> > > então, se essa PK a ser alterada é usada como origem para FK de outras
> > > tabelas, logicamente vc deverá dropar as FKs primeiro (quebrando o uso da
> > > PK como pai), e depois da nova PK criada, vc vai ter que recriar as FKs,
> > > apontando para a nova PK Obviamente também, se a PK vai ser em cima
> > de
> > > uma nova coluna, essa nova coluna tem que ser Adicionada não só na
> > > tabela-pai MAS também nas tabelas-filhas, para servir de base para a nova
> > > FK referenciando a nova PK... É muito, muito frequente o pessoal se
> > > "esquecer" deste Importante detalhe e se dar mal na hora da implementação
> > > por causa das FKs..
> > >
> > > b) vc até poderia, ao menos em parte, fazer via DBMS_REDEFINITION, mas
> > > imho é mais fácil/direto executar os comandos manualmente, e também já
> > que
> > > vc quer a maneira mais segura, eu Recomendaria que vc solicitasse uma
> > > janela de manutenção, em que o banco estará inacessível para vc poder
> > fazer
> > > as alterações todas sem se preocupar com locks eventuais, acessos de
> > > usuário, dados sendo entrados/alterados/removidos, etc...
> > >
> > > c) como é Normal em qquer alteração, vc Tem que Ter um backup o mais
> > > recente possível, Válido e testado, antes de proceder : muitas vezes se
> > > agenda alterações do tipo para depois da janela de backup Exatamente por
> > > esse motivo...
> > >
> > > Isto posto, um exemplo rápido - apenas notando que vc infelizmente Não
> > nos
> > > Dá a versão, então estou supondo ao menos versão 10gr2 :
> > >
> > > => criação de tabela com PK e de algumas FKs que a referenciam :
> > >
> > > SYSTEM@O10GR2::SQL>create table T_PAI (c1 number, c2 varchar2(40), c3
> > > varchar2(80) );
> > >
> > > Tabela criada.
> > >
> > > SYSTEM@O10GR2::SQL>alter table T_PAI add constraint T_PAI_PK primary key
> > > (c1, c2);
> > >
> > > Tabela alterada.
> > >
> > > SYSTEM@O10GR2::SQL>insert into T_PAI values(1, 'Chave 1', 'Linha 1');
> > >
> > > 1 linha criada.
> > >
> > > SYSTEM@O10GR2::SQL>insert into T_PAI values(2, 'Chave 2', 'Linha 2');
> > >
> > > 1 linha criada.
> > >
> > > SYSTEM@O10GR2::SQL>create table T_FILHA1 (c1 number, c2 varchar2(40), c3
>

Re: [oracle_br] Re: Ajuda

2012-07-11 Por tôpico Milton Bastos Henriquis Jr.
Ana, eu acho que vc tem que olhar manualmente SIM e passar o valor fixo!

Apenas 3 bancos diferentes, é muito mais fácil fazer isso manualmente
(pegar o MAX da coluna, somar +1
e escrever no código de criação da sequence).

Sinceramente eu não sei se é possível passar o resultado de uma query
direto no comando
DDL de criação da sequence, mas acho que não é possível não!!




2012/7/11 Ana Cássia Japiassu Diniz 

> Obrigada a todos pela ajuda.
>
> Consegui fazer praticamente toda a alteração que preciso. Falta apenas a
> criação da sequence para esta tabela, cujo o valor inicial deverá ser o
> último valor do novo atributo adicionado na tabela.
> Como eu posso definir o start with da sequence com este valor?
> Não posso colocar isso fixo, pois esta alteração precisarei fazer em três
> bancos que contêm dados diferentes.
>
> Muito obrigada.
>
> Ana
> Em 11 de julho de 2012 14:13, J. Laurindo Chiappa
> escreveu:
>
> > **
> >
> >
> > Bom dia, Ana - não vejo grandes problemas, mas vc deverá saber que :
> >
> > a) no RDBMS Oracle vc normalmente não consegue mudar a PK, então ela tem
> > que ser dropada e recriada com o novo atributo que vc quer : Obviamente,
> > então, se essa PK a ser alterada é usada como origem para FK de outras
> > tabelas, logicamente vc deverá dropar as FKs primeiro (quebrando o uso da
> > PK como pai), e depois da nova PK criada, vc vai ter que recriar as FKs,
> > apontando para a nova PK Obviamente também, se a PK vai ser em cima
> de
> > uma nova coluna, essa nova coluna tem que ser Adicionada não só na
> > tabela-pai MAS também nas tabelas-filhas, para servir de base para a nova
> > FK referenciando a nova PK... É muito, muito frequente o pessoal se
> > "esquecer" deste Importante detalhe e se dar mal na hora da implementação
> > por causa das FKs..
> >
> > b) vc até poderia, ao menos em parte, fazer via DBMS_REDEFINITION, mas
> > imho é mais fácil/direto executar os comandos manualmente, e também já
> que
> > vc quer a maneira mais segura, eu Recomendaria que vc solicitasse uma
> > janela de manutenção, em que o banco estará inacessível para vc poder
> fazer
> > as alterações todas sem se preocupar com locks eventuais, acessos de
> > usuário, dados sendo entrados/alterados/removidos, etc...
> >
> > c) como é Normal em qquer alteração, vc Tem que Ter um backup o mais
> > recente possível, Válido e testado, antes de proceder : muitas vezes se
> > agenda alterações do tipo para depois da janela de backup Exatamente por
> > esse motivo...
> >
> > Isto posto, um exemplo rápido - apenas notando que vc infelizmente Não
> nos
> > Dá a versão, então estou supondo ao menos versão 10gr2 :
> >
> > => criação de tabela com PK e de algumas FKs que a referenciam :
> >
> > SYSTEM@O10GR2::SQL>create table T_PAI (c1 number, c2 varchar2(40), c3
> > varchar2(80) );
> >
> > Tabela criada.
> >
> > SYSTEM@O10GR2::SQL>alter table T_PAI add constraint T_PAI_PK primary key
> > (c1, c2);
> >
> > Tabela alterada.
> >
> > SYSTEM@O10GR2::SQL>insert into T_PAI values(1, 'Chave 1', 'Linha 1');
> >
> > 1 linha criada.
> >
> > SYSTEM@O10GR2::SQL>insert into T_PAI values(2, 'Chave 2', 'Linha 2');
> >
> > 1 linha criada.
> >
> > SYSTEM@O10GR2::SQL>create table T_FILHA1 (c1 number, c2 varchar2(40), c3
> > varchar2(80) );
> >
> > Tabela criada.
> >
> > SYSTEM@O10GR2::SQL>create table T_FILHA2 (c1 number, c2 varchar2(40), c3
> > varchar2(80) );
> >
> > Tabela criada.
> >
> > SYSTEM@O10GR2::SQL>alter table T_FILHA1 add constraint T_FILHA1_FK
> > foreign key (c1, c2) references T_PAI(c1, c2);
> >
> > Tabela alterada.
> >
> > SYSTEM@O10GR2::SQL>alter table T_FILHA2 add constraint T_FILHA2_FK
> > foreign key (c1, c2) references T_PAI(c1, c2);
> >
> > Tabela alterada.
> >
> > SYSTEM@O10GR2::SQL>insert into T_FILHA1 values(1, 'Chave 1', 'Filha 1');
> >
> > 1 linha criada.
> >
> > SYSTEM@O10GR2::SQL>insert into T_FILHA2 values(2, 'Chave 2', 'Filha 2');
> >
> > 1 linha criada.
> >
> > SYSTEM@O10GR2::SQL>commit;
> >
> > Commit concluido.
> >
> > ==> veja que Não Posso dropar PK usada por FKs :
> >
> > SYSTEM@O10GR2::SQL>alter table T_PAI drop constraint T_PAI_PK;
> > alter table T_PAI drop constraint T_PAI_PK
> > *
> > ERRO na linha 1:
> > ORA-02273: esta chave exclusiva/primaria e referenciada por algumas
> chaves
> > externas
> >
> > => vou então listar as FKs, já gerando os comandos de drop que eu só
> copio
> > & colo :
> >
> > SYSTEM@O10GR2::SQL>select 'alter table ' || table_name || ' drop
> > constraint ' || constraint_name || ';' from dba_constraints where
> > owner='SYSTEM' and r_constraint_name='T_PAI_PK';
> >
> > 'ALTERTABLE'||TABLE_NAME||'DROPCONSTRAINT'||CONSTRAINT_NAME||';'
> > --
> > alter table T_FILHA1 drop constraint T_FILHA1_FK;
> > alter table T_FILHA2 drop constraint T_FILHA2_FK;
> >
> > => o copy/paste em ação :
> >
> > SYSTEM@O10GR2::SQL>alter table T_FILHA1 drop constraint T_FILHA1_FK;
> >
> > Tabela alterada.
> >
> > SYSTEM@O10GR2::SQL>alter table 

[oracle_br] Re: Ajuda

2012-07-11 Por tôpico Ricardo
Oi Aninha,

Via sqlplus podes fazer assim:

column res new_value max_val 
SELECT MAX(ID_PK) + 1 res 
FROM   sua_tabela; 

drop sequence seq_sua_tabela ; 
create sequence seq_sua_tabela start with &max_val;


Ricardo Ferro
www.vitarella.com.br


--- Em oracle_br@yahoogrupos.com.br, Ana Cássia Japiassu Diniz 
 escreveu
>
> Obrigada a todos pela ajuda.
> 
> Consegui fazer praticamente toda a alteração que preciso. Falta apenas a
> criação da sequence para esta tabela, cujo o valor inicial deverá ser o
> último valor do novo atributo adicionado na tabela.
> Como eu posso definir o start with da sequence com este valor?
> Não posso colocar isso fixo, pois esta alteração precisarei fazer em três
> bancos que contêm dados diferentes.
> 
> Muito obrigada.
> 
> Ana
> Em 11 de julho de 2012 14:13, J. Laurindo Chiappa
> escreveu:
> 
> > **
> >
> >
> > Bom dia, Ana - não vejo grandes problemas, mas vc deverá saber que :
> >
> > a) no RDBMS Oracle vc normalmente não consegue mudar a PK, então ela tem
> > que ser dropada e recriada com o novo atributo que vc quer : Obviamente,
> > então, se essa PK a ser alterada é usada como origem para FK de outras
> > tabelas, logicamente vc deverá dropar as FKs primeiro (quebrando o uso da
> > PK como pai), e depois da nova PK criada, vc vai ter que recriar as FKs,
> > apontando para a nova PK Obviamente também, se a PK vai ser em cima de
> > uma nova coluna, essa nova coluna tem que ser Adicionada não só na
> > tabela-pai MAS também nas tabelas-filhas, para servir de base para a nova
> > FK referenciando a nova PK... É muito, muito frequente o pessoal se
> > "esquecer" deste Importante detalhe e se dar mal na hora da implementação
> > por causa das FKs..
> >
> > b) vc até poderia, ao menos em parte, fazer via DBMS_REDEFINITION, mas
> > imho é mais fácil/direto executar os comandos manualmente, e também já que
> > vc quer a maneira mais segura, eu Recomendaria que vc solicitasse uma
> > janela de manutenção, em que o banco estará inacessível para vc poder fazer
> > as alterações todas sem se preocupar com locks eventuais, acessos de
> > usuário, dados sendo entrados/alterados/removidos, etc...
> >
> > c) como é Normal em qquer alteração, vc Tem que Ter um backup o mais
> > recente possível, Válido e testado, antes de proceder : muitas vezes se
> > agenda alterações do tipo para depois da janela de backup Exatamente por
> > esse motivo...
> >
> > Isto posto, um exemplo rápido - apenas notando que vc infelizmente Não nos
> > Dá a versão, então estou supondo ao menos versão 10gr2 :
> >
> > => criação de tabela com PK e de algumas FKs que a referenciam :
> >
> > SYSTEM@O10GR2::SQL>create table T_PAI (c1 number, c2 varchar2(40), c3
> > varchar2(80) );
> >
> > Tabela criada.
> >
> > SYSTEM@O10GR2::SQL>alter table T_PAI add constraint T_PAI_PK primary key
> > (c1, c2);
> >
> > Tabela alterada.
> >
> > SYSTEM@O10GR2::SQL>insert into T_PAI values(1, 'Chave 1', 'Linha 1');
> >
> > 1 linha criada.
> >
> > SYSTEM@O10GR2::SQL>insert into T_PAI values(2, 'Chave 2', 'Linha 2');
> >
> > 1 linha criada.
> >
> > SYSTEM@O10GR2::SQL>create table T_FILHA1 (c1 number, c2 varchar2(40), c3
> > varchar2(80) );
> >
> > Tabela criada.
> >
> > SYSTEM@O10GR2::SQL>create table T_FILHA2 (c1 number, c2 varchar2(40), c3
> > varchar2(80) );
> >
> > Tabela criada.
> >
> > SYSTEM@O10GR2::SQL>alter table T_FILHA1 add constraint T_FILHA1_FK
> > foreign key (c1, c2) references T_PAI(c1, c2);
> >
> > Tabela alterada.
> >
> > SYSTEM@O10GR2::SQL>alter table T_FILHA2 add constraint T_FILHA2_FK
> > foreign key (c1, c2) references T_PAI(c1, c2);
> >
> > Tabela alterada.
> >
> > SYSTEM@O10GR2::SQL>insert into T_FILHA1 values(1, 'Chave 1', 'Filha 1');
> >
> > 1 linha criada.
> >
> > SYSTEM@O10GR2::SQL>insert into T_FILHA2 values(2, 'Chave 2', 'Filha 2');
> >
> > 1 linha criada.
> >
> > SYSTEM@O10GR2::SQL>commit;
> >
> > Commit concluido.
> >
> > ==> veja que Não Posso dropar PK usada por FKs :
> >
> > SYSTEM@O10GR2::SQL>alter table T_PAI drop constraint T_PAI_PK;
> > alter table T_PAI drop constraint T_PAI_PK
> > *
> > ERRO na linha 1:
> > ORA-02273: esta chave exclusiva/primaria e referenciada por algumas chaves
> > externas
> >
> > => vou então listar as FKs, já gerando os comandos de drop que eu só copio
> > & colo :
> >
> > SYSTEM@O10GR2::SQL>select 'alter table ' || table_name || ' drop
> > constraint ' || constraint_name || ';' from dba_constraints where
> > owner='SYSTEM' and r_constraint_name='T_PAI_PK';
> >
> > 'ALTERTABLE'||TABLE_NAME||'DROPCONSTRAINT'||CONSTRAINT_NAME||';'
> > --
> > alter table T_FILHA1 drop constraint T_FILHA1_FK;
> > alter table T_FILHA2 drop constraint T_FILHA2_FK;
> >
> > => o copy/paste em ação :
> >
> > SYSTEM@O10GR2::SQL>alter table T_FILHA1 drop constraint T_FILHA1_FK;
> >
> > Tabela alterada.
> >
> > SYSTEM@O10GR2::SQL>alter table T_FILHA2 drop constraint T_FILHA2_FK;
> >
> > Tabela alterada.
> >
> > SYSTEM@O10GR2::SQL>
> >
> > => a

RES: [oracle_br] Re: Ajuda

2012-07-11 Por tôpico Ricardo Ferro | Vitarella
Oi Aninha,

 

Via sqlplus podes fazer assim:

 

column res new_value max_val 

SELECT MAX(ID_PK) + 1 res 

FROM   sua_tabela; 

 

drop sequence seq_sua_tabela ; 

create sequence seq_sua_tabela start with &max_val;

 

 

Ricardo Ferro

www.vitarella.com.br

   

-Mensagem original-
De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome 
de Ana Cássia Japiassu Diniz
Enviada em: quarta-feira, 11 de julho de 2012 14:58
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: [oracle_br] Re: Ajuda

 

Obrigada a todos pela ajuda.

 

Consegui fazer praticamente toda a alteração que preciso. Falta apenas a 
criação da sequence para esta tabela, cujo o valor inicial deverá ser o último 
valor do novo atributo adicionado na tabela.

Como eu posso definir o start with da sequence com este valor?

Não posso colocar isso fixo, pois esta alteração precisarei fazer em três 
bancos que contêm dados diferentes.

 

Muito obrigada.

 

Ana

Em 11 de julho de 2012 14:13, J. Laurindo Chiappa

mailto:jlchia...@yahoo.com.br> >escreveu:

 

> **

> 

> 

> Bom dia, Ana - não vejo grandes problemas, mas vc deverá saber que :

> 

> a) no RDBMS Oracle vc normalmente não consegue mudar a PK, então ela 

> tem que ser dropada e recriada com o novo atributo que vc quer : 

> Obviamente, então, se essa PK a ser alterada é usada como origem para 

> FK de outras tabelas, logicamente vc deverá dropar as FKs primeiro 

> (quebrando o uso da PK como pai), e depois da nova PK criada, vc vai 

> ter que recriar as FKs, apontando para a nova PK Obviamente 

> também, se a PK vai ser em cima de uma nova coluna, essa nova coluna 

> tem que ser Adicionada não só na tabela-pai MAS também nas 

> tabelas-filhas, para servir de base para a nova FK referenciando a 

> nova PK... É muito, muito frequente o pessoal se "esquecer" deste 

> Importante detalhe e se dar mal na hora da implementação por causa das FKs..

> 

> b) vc até poderia, ao menos em parte, fazer via DBMS_REDEFINITION, mas 

> imho é mais fácil/direto executar os comandos manualmente, e também já 

> que vc quer a maneira mais segura, eu Recomendaria que vc solicitasse 

> uma janela de manutenção, em que o banco estará inacessível para vc 

> poder fazer as alterações todas sem se preocupar com locks eventuais, 

> acessos de usuário, dados sendo entrados/alterados/removidos, etc...

> 

> c) como é Normal em qquer alteração, vc Tem que Ter um backup o mais 

> recente possível, Válido e testado, antes de proceder : muitas vezes 

> se agenda alterações do tipo para depois da janela de backup 

> Exatamente por esse motivo...

> 

> Isto posto, um exemplo rápido - apenas notando que vc infelizmente Não 

> nos Dá a versão, então estou supondo ao menos versão 10gr2 :

> 

> => criação de tabela com PK e de algumas FKs que a referenciam :

> 

> SYSTEM@O10GR2::SQL>create table T_PAI (c1 number, c2 varchar2(40), c3

> varchar2(80) );

> 

> Tabela criada.

> 

> SYSTEM@O10GR2::SQL>alter table T_PAI add constraint T_PAI_PK primary 

> key (c1, c2);

> 

> Tabela alterada.

> 

> SYSTEM@O10GR2::SQL>insert into T_PAI values(1, 'Chave 1', 'Linha 1');

> 

> 1 linha criada.

> 

> SYSTEM@O10GR2::SQL>insert into T_PAI values(2, 'Chave 2', 'Linha 2');

> 

> 1 linha criada.

> 

> SYSTEM@O10GR2::SQL>create table T_FILHA1 (c1 number, c2 varchar2(40), 

> c3

> varchar2(80) );

> 

> Tabela criada.

> 

> SYSTEM@O10GR2::SQL>create table T_FILHA2 (c1 number, c2 varchar2(40), 

> c3

> varchar2(80) );

> 

> Tabela criada.

> 

> SYSTEM@O10GR2::SQL>alter table T_FILHA1 add constraint T_FILHA1_FK 

> foreign key (c1, c2) references T_PAI(c1, c2);

> 

> Tabela alterada.

> 

> SYSTEM@O10GR2::SQL>alter table T_FILHA2 add constraint T_FILHA2_FK 

> foreign key (c1, c2) references T_PAI(c1, c2);

> 

> Tabela alterada.

> 

> SYSTEM@O10GR2::SQL>insert into T_FILHA1 values(1, 'Chave 1', 'Filha 

> 1');

> 

> 1 linha criada.

> 

> SYSTEM@O10GR2::SQL>insert into T_FILHA2 values(2, 'Chave 2', 'Filha 

> 2');

> 

> 1 linha criada.

> 

> SYSTEM@O10GR2::SQL>commit;

> 

> Commit concluido.

> 

> ==> veja que Não Posso dropar PK usada por FKs :

> 

> SYSTEM@O10GR2::SQL>alter table T_PAI drop constraint T_PAI_PK; alter 

> table T_PAI drop constraint T_PAI_PK

> *

> ERRO na linha 1:

> ORA-02273: esta chave exclusiva/primaria e referenciada por algumas 

> chaves externas

> 

> => vou então listar as FKs, já gerando os comandos de drop que eu só 

> copio & colo :

> 

> SYSTEM@O10GR2::SQL>select 'alter table ' || table_name || ' drop 

> constraint ' || constraint_name || ';' from dba_constraints where 

> owner='SYSTEM' and r_constraint_name='T_PAI_PK';

> 

> 'ALTERTABLE'||TABLE_NAME||'DROPCONSTRAINT'||CONSTRAINT_NAME||';'

> --

> alter table T_FILHA1 drop constraint T_FILHA1_FK; alter table T_FILHA2 

> drop constraint T_FILHA2_FK;

> 

> => o copy/paste em ação :

> 

> SYS

[oracle_br] Re: Ajuda

2012-07-11 Por tôpico J. Laurindo Chiappa
  Não seria o caso simplesmente de vc executar uma Consulta num script que te 
dê isso, tipo :

DECLARE
   v_max number;
BEGIN
   select max(nomedacolunaID) into v_max from nomedatabela;
   execute immediate ('CREATE SEQUENCE nomedasequence START WITH ' || v_max);
END;
/


 ?? 

 []s

   Chiappa


--- Em oracle_br@yahoogrupos.com.br, Ana Cássia Japiassu Diniz 
 escreveu
>
> Obrigada a todos pela ajuda.
> 
> Consegui fazer praticamente toda a alteração que preciso. Falta apenas a
> criação da sequence para esta tabela, cujo o valor inicial deverá ser o
> último valor do novo atributo adicionado na tabela.
> Como eu posso definir o start with da sequence com este valor?
> Não posso colocar isso fixo, pois esta alteração precisarei fazer em três
> bancos que contêm dados diferentes.
> 
> Muito obrigada.
> 
> Ana
> Em 11 de julho de 2012 14:13, J. Laurindo Chiappa
> escreveu:
> 
> > **
> >
> >
> > Bom dia, Ana - não vejo grandes problemas, mas vc deverá saber que :
> >
> > a) no RDBMS Oracle vc normalmente não consegue mudar a PK, então ela tem
> > que ser dropada e recriada com o novo atributo que vc quer : Obviamente,
> > então, se essa PK a ser alterada é usada como origem para FK de outras
> > tabelas, logicamente vc deverá dropar as FKs primeiro (quebrando o uso da
> > PK como pai), e depois da nova PK criada, vc vai ter que recriar as FKs,
> > apontando para a nova PK Obviamente também, se a PK vai ser em cima de
> > uma nova coluna, essa nova coluna tem que ser Adicionada não só na
> > tabela-pai MAS também nas tabelas-filhas, para servir de base para a nova
> > FK referenciando a nova PK... É muito, muito frequente o pessoal se
> > "esquecer" deste Importante detalhe e se dar mal na hora da implementação
> > por causa das FKs..
> >
> > b) vc até poderia, ao menos em parte, fazer via DBMS_REDEFINITION, mas
> > imho é mais fácil/direto executar os comandos manualmente, e também já que
> > vc quer a maneira mais segura, eu Recomendaria que vc solicitasse uma
> > janela de manutenção, em que o banco estará inacessível para vc poder fazer
> > as alterações todas sem se preocupar com locks eventuais, acessos de
> > usuário, dados sendo entrados/alterados/removidos, etc...
> >
> > c) como é Normal em qquer alteração, vc Tem que Ter um backup o mais
> > recente possível, Válido e testado, antes de proceder : muitas vezes se
> > agenda alterações do tipo para depois da janela de backup Exatamente por
> > esse motivo...
> >
> > Isto posto, um exemplo rápido - apenas notando que vc infelizmente Não nos
> > Dá a versão, então estou supondo ao menos versão 10gr2 :
> >
> > => criação de tabela com PK e de algumas FKs que a referenciam :
> >
> > SYSTEM@O10GR2::SQL>create table T_PAI (c1 number, c2 varchar2(40), c3
> > varchar2(80) );
> >
> > Tabela criada.
> >
> > SYSTEM@O10GR2::SQL>alter table T_PAI add constraint T_PAI_PK primary key
> > (c1, c2);
> >
> > Tabela alterada.
> >
> > SYSTEM@O10GR2::SQL>insert into T_PAI values(1, 'Chave 1', 'Linha 1');
> >
> > 1 linha criada.
> >
> > SYSTEM@O10GR2::SQL>insert into T_PAI values(2, 'Chave 2', 'Linha 2');
> >
> > 1 linha criada.
> >
> > SYSTEM@O10GR2::SQL>create table T_FILHA1 (c1 number, c2 varchar2(40), c3
> > varchar2(80) );
> >
> > Tabela criada.
> >
> > SYSTEM@O10GR2::SQL>create table T_FILHA2 (c1 number, c2 varchar2(40), c3
> > varchar2(80) );
> >
> > Tabela criada.
> >
> > SYSTEM@O10GR2::SQL>alter table T_FILHA1 add constraint T_FILHA1_FK
> > foreign key (c1, c2) references T_PAI(c1, c2);
> >
> > Tabela alterada.
> >
> > SYSTEM@O10GR2::SQL>alter table T_FILHA2 add constraint T_FILHA2_FK
> > foreign key (c1, c2) references T_PAI(c1, c2);
> >
> > Tabela alterada.
> >
> > SYSTEM@O10GR2::SQL>insert into T_FILHA1 values(1, 'Chave 1', 'Filha 1');
> >
> > 1 linha criada.
> >
> > SYSTEM@O10GR2::SQL>insert into T_FILHA2 values(2, 'Chave 2', 'Filha 2');
> >
> > 1 linha criada.
> >
> > SYSTEM@O10GR2::SQL>commit;
> >
> > Commit concluido.
> >
> > ==> veja que Não Posso dropar PK usada por FKs :
> >
> > SYSTEM@O10GR2::SQL>alter table T_PAI drop constraint T_PAI_PK;
> > alter table T_PAI drop constraint T_PAI_PK
> > *
> > ERRO na linha 1:
> > ORA-02273: esta chave exclusiva/primaria e referenciada por algumas chaves
> > externas
> >
> > => vou então listar as FKs, já gerando os comandos de drop que eu só copio
> > & colo :
> >
> > SYSTEM@O10GR2::SQL>select 'alter table ' || table_name || ' drop
> > constraint ' || constraint_name || ';' from dba_constraints where
> > owner='SYSTEM' and r_constraint_name='T_PAI_PK';
> >
> > 'ALTERTABLE'||TABLE_NAME||'DROPCONSTRAINT'||CONSTRAINT_NAME||';'
> > --
> > alter table T_FILHA1 drop constraint T_FILHA1_FK;
> > alter table T_FILHA2 drop constraint T_FILHA2_FK;
> >
> > => o copy/paste em ação :
> >
> > SYSTEM@O10GR2::SQL>alter table T_FILHA1 drop constraint T_FILHA1_FK;
> >
> > Tabela alterada.
> >
> > SYSTEM@O10GR2::SQL>alter table T_FILHA2 drop constraint T_FILHA2_FK;
> >
> > Tab

Re: [oracle_br] Retornar os dois menores valores de uma coluna

2012-07-11 Por tôpico Nino
olha , acho que uma maneira seria assim:

select coluna
from
(
select distinct coluna
from   tabela
order by coluna
)
where rownum <= 2



2012/7/11 alissonzima 

> **
>
>
> Boa tarde.
>
> Minha dúvida acho que é bem simples mas estou pensando faz uns minutos e
> não consegui chegar a uma conclusão.
>
> Tenho uma tabela por exemplo:
>
> id var
> 1 a
> 1 b
> 2 c
> 2 d
> 3 e
>
> precisava retornar os dois menores ids da tabela com um select (sem
> cursores), tem como? Tipo:
>
> id
> 1
> 2
>
> Valeew
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]





--
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
>Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
>http://www.oraclebr.com.br/  

 Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
oracle_br-unsubscr...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html




Re: [oracle_br] Retornar os dois menores valores de uma coluna

2012-07-11 Por tôpico Milton Bastos Henriquis Jr.
É importante explicar com mais detalhes o que são os 2 valores menores

No teu exemplo aí vc passou 1 e 2, então vou levar em consideração que vc
não quer valores "repetidos"
(pois tem 2 registros com o id=1)


Nesse seu caso poderia ser assim:

select id
from (select distinct(id) id
from tabela
order by id)
where rownum < 3;


Confira se é isso mesmo que vc queria!



2012/7/11 alissonzima 

> **
>
>
> Boa tarde.
>
> Minha dúvida acho que é bem simples mas estou pensando faz uns minutos e
> não consegui chegar a uma conclusão.
>
> Tenho uma tabela por exemplo:
>
> id var
> 1 a
> 1 b
> 2 c
> 2 d
> 3 e
>
> precisava retornar os dois menores ids da tabela com um select (sem
> cursores), tem como? Tipo:
>
> id
> 1
> 2
>
> Valeew
>
>  
>



-- 
Att,


[As partes desta mensagem que não continham texto foram removidas]





--
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
>Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
>http://www.oraclebr.com.br/  

 Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
oracle_br-unsubscr...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html




Re: [oracle_br] Re: Ajuda

2012-07-11 Por tôpico Ana Cássia Japiassu Diniz
Obrigada a todos pela ajuda.

Consegui fazer praticamente toda a alteração que preciso. Falta apenas a
criação da sequence para esta tabela, cujo o valor inicial deverá ser o
último valor do novo atributo adicionado na tabela.
Como eu posso definir o start with da sequence com este valor?
Não posso colocar isso fixo, pois esta alteração precisarei fazer em três
bancos que contêm dados diferentes.

Muito obrigada.

Ana
Em 11 de julho de 2012 14:13, J. Laurindo Chiappa
escreveu:

> **
>
>
> Bom dia, Ana - não vejo grandes problemas, mas vc deverá saber que :
>
> a) no RDBMS Oracle vc normalmente não consegue mudar a PK, então ela tem
> que ser dropada e recriada com o novo atributo que vc quer : Obviamente,
> então, se essa PK a ser alterada é usada como origem para FK de outras
> tabelas, logicamente vc deverá dropar as FKs primeiro (quebrando o uso da
> PK como pai), e depois da nova PK criada, vc vai ter que recriar as FKs,
> apontando para a nova PK Obviamente também, se a PK vai ser em cima de
> uma nova coluna, essa nova coluna tem que ser Adicionada não só na
> tabela-pai MAS também nas tabelas-filhas, para servir de base para a nova
> FK referenciando a nova PK... É muito, muito frequente o pessoal se
> "esquecer" deste Importante detalhe e se dar mal na hora da implementação
> por causa das FKs..
>
> b) vc até poderia, ao menos em parte, fazer via DBMS_REDEFINITION, mas
> imho é mais fácil/direto executar os comandos manualmente, e também já que
> vc quer a maneira mais segura, eu Recomendaria que vc solicitasse uma
> janela de manutenção, em que o banco estará inacessível para vc poder fazer
> as alterações todas sem se preocupar com locks eventuais, acessos de
> usuário, dados sendo entrados/alterados/removidos, etc...
>
> c) como é Normal em qquer alteração, vc Tem que Ter um backup o mais
> recente possível, Válido e testado, antes de proceder : muitas vezes se
> agenda alterações do tipo para depois da janela de backup Exatamente por
> esse motivo...
>
> Isto posto, um exemplo rápido - apenas notando que vc infelizmente Não nos
> Dá a versão, então estou supondo ao menos versão 10gr2 :
>
> => criação de tabela com PK e de algumas FKs que a referenciam :
>
> SYSTEM@O10GR2::SQL>create table T_PAI (c1 number, c2 varchar2(40), c3
> varchar2(80) );
>
> Tabela criada.
>
> SYSTEM@O10GR2::SQL>alter table T_PAI add constraint T_PAI_PK primary key
> (c1, c2);
>
> Tabela alterada.
>
> SYSTEM@O10GR2::SQL>insert into T_PAI values(1, 'Chave 1', 'Linha 1');
>
> 1 linha criada.
>
> SYSTEM@O10GR2::SQL>insert into T_PAI values(2, 'Chave 2', 'Linha 2');
>
> 1 linha criada.
>
> SYSTEM@O10GR2::SQL>create table T_FILHA1 (c1 number, c2 varchar2(40), c3
> varchar2(80) );
>
> Tabela criada.
>
> SYSTEM@O10GR2::SQL>create table T_FILHA2 (c1 number, c2 varchar2(40), c3
> varchar2(80) );
>
> Tabela criada.
>
> SYSTEM@O10GR2::SQL>alter table T_FILHA1 add constraint T_FILHA1_FK
> foreign key (c1, c2) references T_PAI(c1, c2);
>
> Tabela alterada.
>
> SYSTEM@O10GR2::SQL>alter table T_FILHA2 add constraint T_FILHA2_FK
> foreign key (c1, c2) references T_PAI(c1, c2);
>
> Tabela alterada.
>
> SYSTEM@O10GR2::SQL>insert into T_FILHA1 values(1, 'Chave 1', 'Filha 1');
>
> 1 linha criada.
>
> SYSTEM@O10GR2::SQL>insert into T_FILHA2 values(2, 'Chave 2', 'Filha 2');
>
> 1 linha criada.
>
> SYSTEM@O10GR2::SQL>commit;
>
> Commit concluido.
>
> ==> veja que Não Posso dropar PK usada por FKs :
>
> SYSTEM@O10GR2::SQL>alter table T_PAI drop constraint T_PAI_PK;
> alter table T_PAI drop constraint T_PAI_PK
> *
> ERRO na linha 1:
> ORA-02273: esta chave exclusiva/primaria e referenciada por algumas chaves
> externas
>
> => vou então listar as FKs, já gerando os comandos de drop que eu só copio
> & colo :
>
> SYSTEM@O10GR2::SQL>select 'alter table ' || table_name || ' drop
> constraint ' || constraint_name || ';' from dba_constraints where
> owner='SYSTEM' and r_constraint_name='T_PAI_PK';
>
> 'ALTERTABLE'||TABLE_NAME||'DROPCONSTRAINT'||CONSTRAINT_NAME||';'
> --
> alter table T_FILHA1 drop constraint T_FILHA1_FK;
> alter table T_FILHA2 drop constraint T_FILHA2_FK;
>
> => o copy/paste em ação :
>
> SYSTEM@O10GR2::SQL>alter table T_FILHA1 drop constraint T_FILHA1_FK;
>
> Tabela alterada.
>
> SYSTEM@O10GR2::SQL>alter table T_FILHA2 drop constraint T_FILHA2_FK;
>
> Tabela alterada.
>
> SYSTEM@O10GR2::SQL>
>
> => agora é dropar a PK, criar a sequence que vai alimentar o ID, criar a
> coluna de ID na tabela-pai E nas filhas e adicionar a nova PK e as novas
> FKs, normal, okdoc ?
>
> []s
>
> Chiappa
>
>
> --- Em oracle_br@yahoogrupos.com.br, Ana Cássia Japiassu Diniz
>  escreveu
> >
> > Olá pessoal, bom dia.
> >
> > Estou com o seguinte problema:
> >
> > Tenho uma tabela que era resultado de um relacionamento nxm e sua chave
> > primária era composta com por dosi atributos. Preciso alterar esta chave
> > para que um novo atributo (apenas ele) passr a ser a chave primária. Este
> > atributo é 

[oracle_br] Re: Ajuda

2012-07-11 Por tôpico J. Laurindo Chiappa
 Bom dia, Ana - não vejo grandes problemas, mas vc deverá saber que :

 a) no RDBMS Oracle vc normalmente não consegue mudar a PK, então ela tem que 
ser dropada e recriada com o novo atributo que vc quer : Obviamente, então, se 
essa PK a ser alterada é usada como origem para FK de outras tabelas, 
logicamente vc deverá dropar as FKs primeiro (quebrando o uso da PK como pai), 
e depois da nova PK criada, vc vai ter que recriar as FKs, apontando para a 
nova PK Obviamente também, se a PK vai ser em cima de uma nova coluna, essa 
nova coluna tem que ser Adicionada não só na tabela-pai MAS também nas 
tabelas-filhas, para servir de base para a nova FK referenciando a nova PK... É 
muito, muito frequente o pessoal se "esquecer" deste Importante detalhe e se 
dar mal na hora da implementação por causa das FKs..

 b) vc até poderia, ao menos em parte, fazer via DBMS_REDEFINITION, mas imho é 
mais fácil/direto executar os comandos manualmente, e também já que vc quer a 
maneira mais segura, eu Recomendaria que vc solicitasse uma janela de 
manutenção, em que o banco estará inacessível para vc poder fazer as alterações 
todas sem se preocupar com locks eventuais, acessos de usuário, dados sendo 
entrados/alterados/removidos, etc...

 c) como é Normal em qquer alteração, vc Tem que Ter um backup o mais recente 
possível, Válido e testado, antes de proceder : muitas vezes se agenda 
alterações do tipo para depois da janela de backup Exatamente por esse motivo...

 Isto posto, um exemplo rápido - apenas notando que vc infelizmente Não nos Dá 
a versão, então estou supondo ao menos versão 10gr2 :

=> criação de tabela com PK e de algumas FKs que a referenciam :

SYSTEM@O10GR2::SQL>create table T_PAI (c1 number, c2 varchar2(40), c3 
varchar2(80) );

Tabela criada.

SYSTEM@O10GR2::SQL>alter table T_PAI add constraint T_PAI_PK primary key (c1, 
c2);

Tabela alterada.

SYSTEM@O10GR2::SQL>insert into T_PAI values(1, 'Chave 1', 'Linha 1');

1 linha criada.

SYSTEM@O10GR2::SQL>insert into T_PAI values(2, 'Chave 2', 'Linha 2');

1 linha criada.

SYSTEM@O10GR2::SQL>create table T_FILHA1 (c1 number, c2 varchar2(40), c3 
varchar2(80) );

Tabela criada.

SYSTEM@O10GR2::SQL>create table T_FILHA2 (c1 number, c2 varchar2(40), c3 
varchar2(80) );

Tabela criada.

SYSTEM@O10GR2::SQL>alter table T_FILHA1 add constraint T_FILHA1_FK foreign key 
(c1, c2) references T_PAI(c1, c2);

Tabela alterada.

SYSTEM@O10GR2::SQL>alter table T_FILHA2 add constraint T_FILHA2_FK foreign key 
(c1, c2) references T_PAI(c1, c2);

Tabela alterada.

SYSTEM@O10GR2::SQL>insert into T_FILHA1 values(1, 'Chave 1', 'Filha 1');

1 linha criada.

SYSTEM@O10GR2::SQL>insert into T_FILHA2 values(2, 'Chave 2', 'Filha 2');

1 linha criada.

SYSTEM@O10GR2::SQL>commit;

Commit concluido.

==> veja que Não Posso dropar PK usada por FKs :

SYSTEM@O10GR2::SQL>alter table T_PAI drop constraint T_PAI_PK;
alter table T_PAI drop constraint T_PAI_PK
  *
ERRO na linha 1:
ORA-02273: esta chave exclusiva/primaria e referenciada por algumas chaves 
externas

=> vou então listar as FKs, já gerando os comandos de drop que eu só copio & 
colo  :

SYSTEM@O10GR2::SQL>select 'alter table ' || table_name || ' drop constraint ' 
|| constraint_name || ';' from dba_constraints where owner='SYSTEM' and 
r_constraint_name='T_PAI_PK';

'ALTERTABLE'||TABLE_NAME||'DROPCONSTRAINT'||CONSTRAINT_NAME||';'
--
alter table T_FILHA1 drop constraint T_FILHA1_FK;
alter table T_FILHA2 drop constraint T_FILHA2_FK;

=> o copy/paste em ação :

SYSTEM@O10GR2::SQL>alter table T_FILHA1 drop constraint T_FILHA1_FK;

Tabela alterada.

SYSTEM@O10GR2::SQL>alter table T_FILHA2 drop constraint T_FILHA2_FK;

Tabela alterada.

SYSTEM@O10GR2::SQL>

=> agora é dropar a PK, criar a sequence que vai alimentar o ID, criar a coluna 
de ID na tabela-pai E nas filhas e adicionar a nova PK e as novas FKs, normal, 
okdoc ?

[]s

  Chiappa

--- Em oracle_br@yahoogrupos.com.br, Ana Cássia Japiassu Diniz 
 escreveu
>
> Olá pessoal, bom dia.
> 
> Estou com o seguinte problema:
> 
> Tenho uma tabela que era resultado de um relacionamento nxm e sua chave
> primária era composta com por dosi atributos. Preciso alterar esta chave
> para que um novo atributo (apenas ele) passr a ser a chave primária. Este
> atributo é um id. A tabela já possui dados e não poderão ser perdidos. Qual
> a maneira mais segura para preencher os dados deste novo atributo que será
> a PK? O valores deste atributo deverão ser sequencial.
> 
> Também passará a existir uma sequence que deverá ser criada com o valor
> inicial igual último valor de registros da tabela, ou seja, o último valor
> do novo atributo.
> 
> Desde já agradeço a ajuda.
> 
> Ana
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




Re: [oracle_br] Ajuda

2012-07-11 Por tôpico Milton Bastos Henriquis Jr.
Bom dia Ana!

Não vejo segredo! Vc pode criar o novo campo, do tipo NUMBER,
preencher com um sequencial usando um "select rownum" na própria tabela,
e depois criar a sequence com o valor inicial igual a max(id)+1.

Segue exemplo:


create table teste_ana
(campo1 varchar2(30),
campo2 varchar2(30));

insert into teste_ana  (campo1, campo2) values  ('aaa', 'aab');
insert into teste_ana  (campo1, campo2) values  ('eee', 'eec');
insert into teste_ana  (campo1, campo2) values  ('iii', 'iiq');
insert into teste_ana  (campo1, campo2) values  ('wer', 'rew');
insert into teste_ana  (campo1, campo2) values  ('yui', 'iuy');
insert into teste_ana  (campo1, campo2) values  ('ddd', 'ggg');
insert into teste_ana  (campo1, campo2) values  ('ddd', 'sss');
insert into teste_ana  (campo1, campo2) values  ('hk', 'hjk');
insert into teste_ana  (campo1, campo2) values  ('kjuh', 'hjk');
commit;

alter table TESTE_ANA add campo_id number;

update TESTE_ANA
set campo_id = rownum;
commit;

select * from teste_ana;

alter table TESTE_ANA
  add constraint pk_ana primary key (CAMPO_ID);

select max(campo_id) from teste_ana;
-- resultado foi 9, por isso crie a sequencia começando com 10

create sequence seq_campo_id
minvalue 1
start with 10
increment by 1
nocache;


Acredito que seja só isso!



2012/7/11 Ana Cássia Japiassu Diniz 

> **
>
>
> Olá pessoal, bom dia.
>
> Estou com o seguinte problema:
>
> Tenho uma tabela que era resultado de um relacionamento nxm e sua chave
> primária era composta com por dosi atributos. Preciso alterar esta chave
> para que um novo atributo (apenas ele) passr a ser a chave primária. Este
> atributo é um id. A tabela já possui dados e não poderão ser perdidos. Qual
> a maneira mais segura para preencher os dados deste novo atributo que será
> a PK? O valores deste atributo deverão ser sequencial.
>
> Também passará a existir uma sequence que deverá ser criada com o valor
> inicial igual último valor de registros da tabela, ou seja, o último valor
> do novo atributo.
>
> Desde já agradeço a ajuda.
>
> Ana
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Att,


[As partes desta mensagem que não continham texto foram removidas]





--
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
>Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
>http://www.oraclebr.com.br/  

 Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
oracle_br-unsubscr...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html




Re: [oracle_br] Especialista OPN

2012-07-11 Por tôpico Milton Bastos Henriquis Jr.
Bom dia Welvis!
Eu ia te responder pelo MSN, mas meu MSN não quer logar hoje

Então cara, essa prova te dá a certificação OCE (RAC e Grid Infra Adm.
Certified Expert),
e SE vc estiver trabalhando numa empresa que seja parceira da Oracle, daí
vc ganha
essa certificação OPN em conjunto com a empresa.

Eu entendo que individualmente (ou seja, pra você mesmo, pessoa física), o
que importa é
a certificação OCE!
Se algum dia vc trabalhar numa empresa que seja Oracle Partner (que é o meu
caso aqui),
daí quando vc atrelar o teu login da Oracle no CertView à empresa que é
parceira Oracle
daí ambos terão esse "título" de OPN.

Não é só pro OCE (no teu caso, RAC) que isso é válido... até mesmo a minha
certificação
OCA que fiz no começo do ano também me deu OPN por estar trabalhando aqui
numa Oracle Partner.

Respondendo mais diretamente tua última pergunta: vc como autônomo
infelizmente não tem o direito
a esse título, pois ele é realmente exclusivo para os parceiros Oracle...
Mas não acho isso nada relevante pra vc, como profissional, pois o que
importa pra vc é realmente o
OCE!


Abraço!



2012/7/11 Welvis Moretto 

> **
>
>
> Bom dia pessoal, tudos bem?
>
> Nesta segunda feira consegui
> realizar a prova de 1z0-058, depois de um longo período de estudo que
> ainda continua. na education.oracle.com diz que esta prova da o título
> de OPN Especialista. Pelo que vi no site, tenho que trabalhar em uma
> empresa Partner para receber esta certificação ou posso ter esta
> certificação mesmo eu sendo autonomo?
>
> Obrigado pela atenção...
>
> att,
> Welvis Douglas
> http://www.linkedin.com/profile/view?id=68321046
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Att,


[As partes desta mensagem que não continham texto foram removidas]





--
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
>Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
>http://www.oraclebr.com.br/  

 Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
oracle_br-unsubscr...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html