blog menu1

Change DBID or DB NAME

Change DBID or DB NAME


DBNEWID Utility


DBNEWID is a database utility that can change the internal database identifier (DBID) and the database name (DBNAME) for an operational database.

What Is the DBNEWID Utility?
Prior to the introduction of the DBNEWID utility, you could manually create a copy of a database and give it a new database name (DBNAME) by re-creating the control file. However, you could not give the database a new identifier (DBID). The DBID is an internal, unique identifier for a database. Because Recovery Manager (RMAN) distinguishes databases by DBID, you could not register a seed database and a manually copied database together in the same RMAN repository. The DBNEWID utility solves this problem by allowing you to change any of the following:

  • Only the DBID of a database
  • Only the DBNAME of a database
  • Both the DBNAME and DBID of a database

Ramifications of Changing the DBID and DBNAME
Changing the DBID of a database is a serious procedure. When the DBID of a database is changed, all previous backups and archived logs of the database become unusable. After you change the DBID, you must open the database with the RESETLOGS option, which re-creates the online redo logs and resets their sequence to 1. Consequently, you should make a backup of the whole database immediately after changing the DBID.
Changing the DBNAME without changing the DBID does not require you to open with the RESETLOGS option, so database backups and archived logs are not invalidated. However, changing the DBNAME does have consequences. You must change the DB_NAME initialization parameter after a database name change to reflect the new name. Also, you may have to re-create the Oracle password file. If you restore an old backup of the control file (before the name change), then you should use the initialization parameter file and password file from before the database name change.
Changing the DBID and DBNAME of a Database
This section contains these topics:
Changing the DBID and Database Name
The following steps describe how to change the DBID of a database. Optionally, you can change the database name as well.

  1. Ensure that you have a recoverable whole database backup.
  2. Ensure that the target database is mounted but not open, and that it was shut down consistently prior to mounting. For example:[[code format="CE1"]]
    SHUTDOWN IMMEDIATE
    STARTUP MOUNT

  3. Invoke the DBNEWID utility on the command line, specifying a valid user with the SYSDBA privilege.

If you specify that only the database name should be changed (and not the DBID), then the validation process is the same as for a DBID change except that DBNEWID checks only the control files. It does not read the datafiles. If the validation encounters a problem, then the database is left mounted.

It is possible for validation to succeed, but for the actual database name change to fail. The possible failure scenarios depend on how many control files are in the database, as follows:

  • if you have one or more control files and DBNEWID fails on the first control file, then the database name is not changed in the control file. You can either try the operation again or open the database and resume normal database use.
  • if you have more than one control file and DBNEWID fails on the second control file or on any one thereafter, then some control files will have the old DBNAME and some will have the new DBNAME. In this case, you must either manually copy the first changed control file to all CONTROL_FILES locations, or revert by copying the unchanged control files to all CONTROL_FILES locations.

DBNEWID Syntax



Table below describes the parameters in the DBNEWID syntax.

Table Parameters for the DBNEWID Utility

ParameterDescription
TARGETSpecifies the username and password used to connect to the database. The user must have the SYSDBA privilege. If you are using operating system authentication, then you can connect with the slash (/). If the $ORACLE_HOME and $ORACLE_SID variables are not set correctly in the environment, then you can specify a secure (IPC or BEQ) service to connect to the target database. A target database must be specified in all invocations of the DBNEWID utility.
REVERTSpecify YES to indicate that a failed change of DBID should be reverted (default is NO). The utility signals an error if no change DBID operation is in progress on the target database. A successfully completed change of DBID cannot be reverted. REVERT=YES is only valid when a DBID change failed.
DBNAME=new_db_nameChanges the database name of the database. You can change the DBID and the DBNAME of a database at the same time. To change only the DBNAME, also specify the SETNAMEparameter.
SETNAMESpecify YES to indicate that DBNEWID should change the database name of the database but should not change the DBID (default is NO). When you specify SETNAME=YES, the utility only writes to the target database control files.
LOGFILE=logfileSpecifies that DBNEWID should write its messages to the specified file. By default the utility overwrites the previous log. If you specify a log file, then DBNEWID does not prompt for confirmation.
APPENDSpecify YES to append log output to the existing log file (default is NO).
HELPSpecify YES to print a list of the DBNEWID syntax options (default is NO).
 
The DBNEWID utility has the following restrictions:
* The utility is available only on the UNIX and Windows NT operating systems.
* The nid executable file should be owned and run by the Oracle owner because it needs direct access to the datafiles and control files. If another user runs the utility, then set the user ID to the owner of the datafiles and control files.
* The DBNEWID utility must access the datafiles of the database directly through a local connection. Although DBNEWID can accept a net service name, it cannot change the DBID of a nonlocal database.
* You must open the database with the RESETLOGS option after changing the DBID. Note that you do not have to open with the RESETLOGS option after changing only the database name.
* To change the DBID of a database, the database must be mounted and must have been shut down consistently prior to mounting. In the case of an Oracle Real Application Clusters database, the database must be mounted in NOPARALLEL mode. * No other process should be running against the database when DBNEWID is executing. If another session shuts down and starts the database, then DBNEWID aborts.
* All read-only tablespaces must be accessible and made writable at the operating system level prior to invoking DBNEWID. If these tablespaces cannot be made writable (for example, they are on a CD-ROM), then you must unplug the tablespaces using the transportable tablespace feature and then plug them back in the database before invoking the DBNEWID utility.
* All online datafiles should be consistent without needing recovery. * Normal offline datafiles should be accessible and writable. If this is not the case, you must drop these files before invoking the DBNEWID utility. * You can only specify REVERT when changing only the DBID.   Examples of Using DBNEWID - Changing Only the DBID -   The following example connects with operating system authentication and changes only the DBID: % nid TARGET=/
 

Changing the DBID and Database Name -

The following example connects as user SYS and changes the DBID and also changes the database name to test2:
% nid TARGET=SYS/oracle@test1 DBNAME=test2
 

Changing Only the Database Name -



The following example connects as user SYSTEM and changes only the database name, and also specifies a log file for the output:

% nid TARGET=SYSTEM/manager@test2 DBNAME=test3 SETNAME=YES LOGFILE=dbid.out


No comments:

Post a Comment