Alterar DBname via NID

Em alguns casos podemos querer alterar o nome de uma instância.

Existem duas formas de alterar o nome da instância, uma seria recriando os controlfiles, a outra por uma ferramenta da ORACLE chamada “nid” A diferença da ferramenta nid é que você pode alterar o nome da instância sem alterar o seu DBID.

Alguns softwares marcam o DBID da instância na sua licença, logo, se você alterar o DBID da instância você não poderá mais ter tal software.

Um exemplo disso é o RMAN que registra no seu catalogo o DBID.

Segue abaixo os procedimentos para alterar o nome de uma instancia pelo nid.

-bash-3.1$ sqlplus

SQL*Plus: Release 11.2.0.2.0 Production on Tue Sep 27 23:32:24 2011

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

Enter user-name: / as sysdba
Connected to an idle instance.

SQL> startup;
ORACLE instance started.

Total System Global Area  451964928 bytes
Fixed Size                  1344812 bytes
Variable Size             218106580 bytes
Database Buffers          226492416 bytes
Redo Buffers                6021120 bytes
Database mounted.
Database opened.
SQL> select DBID,NAME from v$database;

      DBID NAME
---------- ---------
 983866351 LANA

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area  451964928 bytes
Fixed Size                  1344812 bytes
Variable Size             218106580 bytes
Database Buffers          226492416 bytes
Redo Buffers                6021120 bytes
Database mounted.
SQL> exit
Disconnected from Oracle Database 11g Release 11.2.0.2.0 - Production

Até agora apenas levantamos o Oracle para verificar o DBname e também o DBID.

Depois baixamos o oracle e startamos no modo mount. Agora vamos executar o nid conforme abaixo.

-bash-3.1$ nid TARGET=sys/lana@lana dbname=lana1 SETNAME=YES

DBNEWID: Release 11.2.0.2.0 - Production on Tue Sep 27 23:34:24 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to database LANA (DBID=983866351)

Connected to server version 11.2.0

Control Files in database:
    /u01/app/oracle/oradata/lana/control01.ctl
    /u01/app/oracle/oradata/lana/control02.ctl
    /u01/app/oracle/oradata/lana/control03.ctl

Change database name of database LANA to LANA1? (Y/[N]) => Y

Proceeding with operation
Changing database name from LANA to LANA1
    Control File /u01/app/oracle/oradata/lana/control01.ctl - modified
    Control File /u01/app/oracle/oradata/lana/control02.ctl - modified
    Control File /u01/app/oracle/oradata/lana/control03.ctl - modified
    Datafile /u01/app/oracle/oradata/lana/system01.db - wrote new name
    Datafile /u01/app/oracle/oradata/lana/sysaux01.db - wrote new name
    Datafile /u01/app/oracle/oradata/lana/undotbs01.db - wrote new name
    Datafile /u01/app/oracle/oradata/lana/users01.db - wrote new name
    Datafile /u01/app/oracle/oradata/lana/TEIKO.db - wrote new name
    Datafile /u01/app/oracle/oradata/lana/lana_LOB.DB - wrote new name
    Datafile /u01/teste.db - wrote new name
    Datafile /u01/leolana1.db - wrote new name
    Datafile /u01/app/oracle/oradata/lana/temp01.db - wrote new name
    Control File /u01/app/oracle/oradata/lana/control01.ctl - wrote new name
    Control File /u01/app/oracle/oradata/lana/control02.ctl - wrote new name
    Control File /u01/app/oracle/oradata/lana/control03.ctl - wrote new name
    Instance shut down

Database name changed to LANA1.
Modify parameter file and generate a new password file before restarting.
Succesfully changed database name.
DBNEWID - Completed succesfully.

No procedimento acima utilizei o nid para alterar o nome da instância lana para lana1, mas vamos observar abaixo que o DBID continua o mesmo.

-bash-3.1$ sqlplus

SQL*Plus: Release 11.2.0.2.0 Production on Tue Sep 27 23:34:51 2011

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

Enter user-name: / as sysdba
Connected to an idle instance.

SQL> startup pfile=initlana1.ora
ORACLE instance started.

Total System Global Area  451964928 bytes
Fixed Size                  1344812 bytes
Variable Size             218106580 bytes
Database Buffers          226492416 bytes
Redo Buffers                6021120 bytes
Database mounted.
Database opened.
SQL> select DBID,NAME from v$database;

      DBID NAME
---------- ---------
 983866351 LANA1

Observe que o DBID é o mesmo mas o nome da instancia mudou.

Observe também que levantei a instância com um pfile.

O requisito do pfile deve ser aplicado pois no spfile ou pfile antigo ainda estará com o parâmetro “db_name” antigo e deverá ser renomeado para a base correta.

Na verdade o aplicativo da oracle “nid” foi criado para alterar o DBID do banco e o mesmo pode ser efetuado sem que você utilize a sintaxe “SETNAME=YES”

%name Alterar DBname via NID

Autor: Leandro Lana

Trabalho com banco de dados Oracle desde 2006, já trabalhei com as plataformas 9i, 10G, 11G, 12C, 18C, 19C e 21(ainda em testes).

Trabalhando atualmente como consultor Oracle na MigraTI Soluções em TI como administrador de banco de dados Oracle, SQL-Server, MySQL e Postgresql.

Contato: leandro.lana@migrati.com.br

Fone: (47) 9191-6052 / (47) 3328 0996

Certificações:

OCA 10G.

OCP 10G.

OCE Linux.

OCE RAC/Cluster.

MCP SQL-Server 2008.

MCITP SQL-Server 2008.

DB2 Fundamentals.

Comentários

6 respostas a “Alterar DBname via NID”

  1. Avatar de MyTraceLog

    Olá Leandro!

    Artigo interessante! Uma pergunta, a estrutura de diretórios ficará como LANA ainda né ? Ou o nid é inteligente suficiente para renomear para LANA1 ?

    Exemplo: /u01/app/oracle/oradata/lana/ -> /u01/app/oracle/oradata/lana1/

    Minha dúvida é que temos vários servidores com a instância padrão orcl. Pensando em ter que restaurar um backup do RMAN, de um servidor para o outro, vai dar problema pois o restore vai acabar matando a outra instância devido ambas ter o nome orcl.

    Att,

    Sakamoto

    MyTraceLog – Registro de um DBA
    http://mytracelog.blogspot.com

    1. A estrutura continuará igual.
      Caso você desejar mudar sugiro efetuar um rename datafiles.

      Se você for utilizar o rman para fazer um restore você deve utilizar a clausula set new name para cada datafile.

      Ainda não temos nenhum artigo sobre recover de Rman, mas em breve teremos.

      E criaremos um tópico especifico para esses recovers com “set newname”

    2. https://oraclehome.com.br/2011/09/29/alterar-dbname-via-controlfile/
      Com esta forma de mudar o nome da instancia você consegue fazer a mudança de diretórios como você deseja.

      Pois o processo é bem manual.

  2. […] postei um artigo sobre como alterar o dbname de uma instância com o NID, hoje vou escrever um artigo de como fazer este mesmo processo recriando seu […]

  3. […] que ele tenha Lido meus dois post’s sobre isso. “Via NID” e “Via […]

  4. […] o DBID sem acesso ao database OPEN, de como alterá-lo via DBNEWID (NID) artigo: Alterar DBname via NID, mas nunca de como podemos mudá-lo para um valor aleatório(de nossa […]

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Connect with Facebook