renomear tabelas e criar com o nome original

DBA Geral (instalação, configuração do banco, scripts do Sql*Plus, shell scripts, batch scripts, etc...)
Responder
marciob
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Qui, 17 Set 2009 3:47 pm
Localização: rio de janeiro

Informações do Ambiente:
* Versão do Oracle:9i
* Sistema Operacional: solaris 9

Estou querendo renomear e recriar tabelas com os nomes originais, mas gostaria de saber o que acontece com os indices e funções desta tabela renomeada.
pauloaleo
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 181
Registrado em: Qua, 09 Fev 2005 12:30 pm
Localização: SÃO BERNARDO DO CAMPO - SP

Ficam invalidos. No caso dos indices precisa recriar na tabela renomeada e no caso das funçoes , alterar o nome da tabela e recompilar
marciob
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Qui, 17 Set 2009 3:47 pm
Localização: rio de janeiro

Paulo,

Bem na verdade a minha preocupação são com as PK´s e FK´s o que acontecerá com elas? Perderei ou elas irão ficar apontadas para a nova tabela?

Lembrando que a nova tabela será criada com o mesmo nome da antiga
pauloaleo
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 181
Registrado em: Qua, 09 Fev 2005 12:30 pm
Localização: SÃO BERNARDO DO CAMPO - SP

Não entendi. Se você criar tabelas novas com os mesmos nomes das antigas , significa que você vai dropar as antigas e recria-las. Se for isso , quando você dropa as antigas as PK e FK somem. Quando você recria as mesmas novamente , você precisa definir as PK e FK´s. Não existe create or replace para tabelas.

O certo seria você gerar uma DLL das tabelas a recriar , fazer uam copia via create as select , e depois recriar as tabelas, que vão nascer sem dados.

E isso que você quer?
marciob
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Qui, 17 Set 2009 3:47 pm
Localização: rio de janeiro

paulo, na verdade eu queria renomear as tabelas e não dropar criando em seguida as novas com o mesmo nome. Isso seria possivel?
marciob
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Qui, 17 Set 2009 3:47 pm
Localização: rio de janeiro

paulo o comando que eu queria usar é o

Selecionar tudo

ALTER TABLE test RENAME TO test_new;
pauloaleo
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 181
Registrado em: Qua, 09 Fev 2005 12:30 pm
Localização: SÃO BERNARDO DO CAMPO - SP

Então. Se você renomear vamos supor uma tabela de teste para teste_new , todas as PKs e FKs da tabela teste vão para a teste_new. E todos os objetos referenciados a tabela teste ficam invalidos.
marciob
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Qui, 17 Set 2009 3:47 pm
Localização: rio de janeiro

Entendi Paulo obrigado pela ajuda .....te agrade de monte acho que a primeira alternativa que você me deu será a melhor....


Só para finalizar ao renomear um tabela as PK e FK irão ficar vinculadas a nova tabela, isto é se tenho umatabela teste e renomeio para teste_old todas as constraints irão para a teste_old. certo?

Obrigado
pauloaleo
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 181
Registrado em: Qua, 09 Fev 2005 12:30 pm
Localização: SÃO BERNARDO DO CAMPO - SP

Sim.

O que invalida são synonyms , triggers , pack , procedures , etc...
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante