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 e 12C.

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

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.