- Este tópico contém 14 respostas, 2 vozes e foi atualizado pela última vez 19 anos, 2 meses atrás por Anônimo.
-
AutorPosts
-
4 de novembro de 2005 às 3:53 am #74765Anônimo
Ol? amigos, preciso saber qual ou quais tabelas foram alteradas ( Inclus?o de colunas, altera??o de tipos … )
Algu?m sabe como fa?o isso, via SQL ?4 de novembro de 2005 às 3:06 pm #74766Anônimovc pode executar o seguinte SQL :
select object_name, created, last_ddl_time
from dba_objects a
where a.OBJECT_TYPE = ‘TABLE’4 de novembro de 2005 às 4:35 pm #74769Anônimo[quote=”Anonymous”:2axrs5ef]vc pode executar o seguinte SQL :
select object_name, created, last_ddl_time
from dba_objects a
where a.OBJECT_TYPE = ‘TABLE'[/quote]Ol? amigo, muito obrigado pela resposta.
Mas qual a diferen?a entre CREATED ( CTIME ), LAST_DDL_TIME ( MTIME ) E TIMESTAMP ( STIME ) ?
Eu tenho como saber quais colunas da tabela foram criadas, alteradas ou incluidas ?
4 de novembro de 2005 às 5:34 pm #74770Anônimocreated — data em que a tabela foi criada
last_ddl_time — data da ?ltima altera??o na tabela : cria??o nova coluna, altera??o ou elimina??o de coluna…
timestamp ? o mesmo que created s? que em formato AAAA-MM-DD HH:MI:SS
usando a coluna LAST_DDL_TIME podemos descobrir as tabelas que sofreram altera??o.
o seguinte SQL tras as tabelas que sofrem altera??es nos ?ltimos 5 dias:
select *
from dba_objects a
where a.OWNER = ‘USUARIOBANCO’
and a.OBJECT_TYPE = ‘TABLE’
and a.LAST_DDL_TIME >= sysdate-5assim que descobrir uma maneira de trazer QUAIS colunas foram alteradas te aviso
4 de novembro de 2005 às 6:55 pm #74771AnônimoMuito obrigado pela ajuda.
Se descobrir como fa?o pra saber quais colunas foram alteradas, poste aqui. okValeu 😆
4 de novembro de 2005 às 9:16 pm #74772Marcio68AlmeidaParticipanteEssa informa??o n?o tem no Oracle…
O que voc? poderia fazer, mas n?o ? recomendado, ? colocar uma trigger na tabela DBA_TAB_COLUMNS (ou algo parecido) onde, quando houvesse alguma atualiza??o inserisse em uma outra tabela…
? poss?vel que isso seja uma view, ent?o teria que procurar qual a tabela de origem para inserir a trigger…4 de novembro de 2005 às 9:40 pm #74773AnônimoAchei alguma coisa no Google falando sobre auditoria DE TABELAS ( AUDIT ), mas n?o entendi muito bem o que ?, e como aplicar.
Ser? que poderia dar certo ?4 de novembro de 2005 às 10:33 pm #74774Marcio68AlmeidaParticipanteEssa auditoria se refere a mudan?a de estrutura ou a consultas e mudan?a de conte?do ???
A que eu conhe?o se refere a consultas e mudan?as de conte?do…4 de novembro de 2005 às 10:38 pm #74775Anônimo? para mudan?a de estrutura.
Vou explicar o que quero fazer:
Tenho as mesmas tabelas em bancos diferentes, gostaria de saber quais tabelas e colunas foram alteradas ( Estrutura ) em um banco para alterar as outras dos outros bancos.5 de novembro de 2005 às 4:21 am #74777Anônimovoc? consegue criar um dblink entre os bancos que vc quer comparar ??
se vc conseguir, podemos fazer uma query usando a view DBA_TAB_COLUMNS de ambos os bancos e comparar os registro que tem em um e n?o tem no outro. Tamb?m ? poss?vel determinar as diferen?as de estruturas das tabelas…
j? fiz isso algumas vezes… s? precisa do dblink
5 de novembro de 2005 às 6:24 pm #74778AnônimoAi eh q ta o problema.
Um banco est? aqui e o outro l? em outra cidade.
O q est? aqui “deveria” ser c?pia do q est? l?, mas n?o eh.7 de novembro de 2005 às 1:56 am #74779Anônimovamos assumir ent?o que vc n?o tem acesso remoto ao outro banco. Existe algu?m l? capaz de gerar um ‘export’pra vc ??
se sim, pe?a para tal pessoa criar uma tabela com o conte?do da dba_tab_columns :
create table colunas as select * from dba_tab_columns
depois, pe?a para exportarem a tabela e enviarem a vc por e-mail…n?o deve ficar t?o grande assim…
num pr?ximo passo vc deve import?-la no seu schema e ent?o comparar com a sua dba_tab_columns … ? 1/2 lusitano, concordo, mas n?o consegui pensar em algo mais f?cil…
Agora, se l? n?o existir ningu?m que possa fazer isso, nem vc instruindo por telefone… complicou tudo…
7 de novembro de 2005 às 2:53 am #74780AnônimoFiz um programinha que varre todas as tabelas alteradas, gra?as a ajuda do sql acima.
Este programa varre o banco e gera um arquivo com todas as tabelas criadas e alteradas e tamb?m suas colunas.
Assim a pessoa do outro lado s? roda ele e ele compara o arquivo gerado com o banco e faz as atualiza??es.
O problema ? q o banco eh grande e tenho tabelas com v?rias colunas, a varredura e atualiza??o t? demorando pra caramba.
Se al?m de saber quais tabelas foram alteradas eu soubesse quais colunas foram alteradas ficaria bem mais r?pido.
Este ? meu problema. 🙁7 de novembro de 2005 às 3:23 am #74781Anônimose vc conseguir criar a tabela anterior como te passei ser? poss?vel descobrir as colunas alteradas + ou – assim :
select * from dba_tab_columns a
where not exists (select 0 from colunas b where b.owner =a.owner
and b.table_name = a.table_name and b.column_name = a.column_name )
and a.owner = ‘NOMEUSUARIOBANCO’com esse SQL voc? conseguir? ver as tabelas que foram alteradas – colunas eliminadas ou inseridas.
para saber as que tabelas que tiveram colunas alteradas
vc pode usar o seguinte :select a.OWNER, a.TABLE_NAME, a.COLUMN_NAME, a.DATA_TYPE,
b.OWNER, b.TABLE_NAME, b.COLUMN_NAME, b.DATA_TYPE
from dba_tab_columns a, colunas b
where a.OWNER = b.OWNER
and a.TABLE_NAME = b.TABLE_NAME
and a.COLUMN_NAME = b.COLUMN_NAME
and ( a.DATA_TYPE b.DATA_TYPE or a.DATA_LENGTH a.DATA_LENGTH )
and a.OWNER = ‘NOMEUSUARIOBANCO’esse select tr?s pra vc as colunas das tabelas que est?o diferentes nos 2 bancos…
eu rodei comparando bancos com 65000 colunas e foi r?pido 2.43 segundos
se vc conseguir que algu?m exporte a tabela dba_tab_columns como surgeri, crie um ?ndice por owner, table_name e column_name depois que vc importar… assim ai ficar bem mais r?pida a compara??o…
andei analisando o dicin?rio do Oracle e n?o encontrei nenhuma informa??o que internamente ele mant?m sobre aletra??es de colunas…
10 de novembro de 2005 às 5:53 pm #74803AnônimoN?o consegui achar nenhum registro de colunas alteradas.
Vou usar este exemplo q vc me passou, testei aqui e ficou bem r?pido.
Vai resolver, Muito obrigado 😀 -
AutorPosts
- Você deve fazer login para responder a este tópico.