NID 实用递次是在Oracle 10g中引入的。DBNEWID 是一个数据库实用递次,位于 $ORACLE_HOME/bin 目次中,不错改动操作数据库的里面数据库象征符 (DBID) 和数据库称呼 (DBNAME)。在引入 DBNEWID 实用递次之前,咱们已经手动创建数据库的副本,并通过从头创建罢休文献为其赋予新的数据库称呼 (DBNAME)。然而,改动实例的里面数据库象征符 (DBID) 是不能能的。
DBID 是数据库的里面惟一象征符。由于复原督察器 (RMAN)通过 DBID 辨别数据库,因此您无法在团结个 RMAN 存储库中同期注册种子数据库和手动复制的数据库。DBNEWID 实用递次惩处了这个问题。
NID 实用递次允许咱们改动
只须数据库的 DBID 只须数据库的 DBNAME 数据库的 DBNAME 和 DBID改动数据库的 DBID 是一个严肃的经过。当数据库的 DBID 改动时,该数据库的系数先前备份和归档日记将变得不能用。改动 DBID 后,必须使用 RESETLOGS 选项通达数据库,该选项会从头创建联机重做日记并将其序列重置为 1。因此,改动 DBID 后应立即备份系数这个词数据库。
在不改动 DBID 的情况下改动 DBNAME 不需要您使用 RESETLOGS 选项通达,因此数据库备份和归档日记不会失效。然而,改动 DBNAME 如实会产生影响。您必须在数据库称呼改动后改动 DB_NAME 开动化参数以响应新称呼。此外,您可能需要从头创建 Oracle密码文献. 淌若您复原罢休文献的旧备份(在称呼改动之前),那么您应该使用数据库称呼改动之前的开动化参数文献和密码文献。
NID 实用递次的参数(Oracle 10g 和Oracle 11g 中的参数疏通):
$ nid help=y
SQL> select dbid, name from v$database; DBID NAME ---------- --------- 1744662402 SFMv2、 备份数据库
备份剧本示例:
[localhost]$cat /oracle/ods_backup/bak0.sh #!/bin/bash export ORACLE_HOME=/oracle/ods/12201 export ORACLE_SID=orcl export DATE=`date +%F` export BACK_DIR='/oracle/ods_backup' mkdir -p $BACK_DIR/$DATE /oracle/ods/12201/bin/rman log=$BACK_DIR/$DATE/rman_backup_$DATE.log target / <<EOF run{ CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE autobackup format for device type disk to '$BACK_DIR/$DATE/CONTROLFILE.%F'; ALLOCATE CHANNEL disk1 DEVICE TYPE DISK FORMAT '$BACK_DIR/$DATE/full_%d_%T_%s.bak'; ALLOCATE CHANNEL disk2 DEVICE TYPE DISK FORMAT '$BACK_DIR/$DATE/full_%d_%T_%s.bak'; ALLOCATE CHANNEL disk3 DEVICE TYPE DISK FORMAT '$BACK_DIR/$DATE/full_%d_%T_%s.bak'; SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT'; BACKUP DATABASE SKIP INACCESSIBLE FILESPERSET 10 PLUS ARCHIVELOG FILESPERSET 20 DELETE ALL INPUT; SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT'; CROSSCHECK BACKUP; CROSSCHECK ARCHIVELOG ALL; DELETE NOPROMPT EXPIRED BACKUP; DELETE NOPROMPT EXPIRED ARCHIVELOG ALL; DELETE NOPROMPT OBSOLETE; RELEASE channel disk1; RELEASE channel disk2; RELEASE channel disk3; } EOF export EXPIRE_DATE=`date +%F -d '+7 day ago'` rm -rf $BACK_DIR/$EXPIRE_DATE exit
3、在干净关闭后挂载数据库
SQL> SHUTDOWN IMMEDIATE SQL> STARTUP MOUNT4、调用 DBNEWID (NID) 实用递次
调用 DBNEWID (NID) 实用递次,使用具有 SYSDBA 权限的用户从敕令行指定 DBNAME。
$ nid TARGET=sys/password DBNAME=new_name LOGFILE =change_dbname.log
DBNEWID 实用递次在尝试对文献进行 I/O 之前在数据文献和罢休文献的标头中实行考据。淌若考据到手,则 DBNEWID 会辅导您说明操作(除非您指定日记文献,在这种情况下它不会辅导),改动所罕有据文献中的 DBID,然后退出。数据库处于挂载情状,但尚不能用。
5、更新pfile文献并创建密码文献(如有必要)此实用递次不会改动 pfile 中的数据库称呼,因此请手动改动 pfile 中的数据库称呼 (DB_NAME) 并创建密码文献(如有必要)。
挂载数据库SQL> STARTUP MOUNT 以 RESETLOGS 形状通达数据库,复原平日使用SQL> ALTER DATABASE OPEN RESETLOGS; SQL> select dbid, name from v$database; DBID NAME---------- --------- 1748860243 SFM_DEV 6、进行新的数据库备份由于您已重置联机重做日记,因此旧的备份和归档日记在现时的数据库中不再可用。
二、Changing only DBNAME在敕令行上调用该实用递次;您必须同期指定 DBNAME 和 SETNAME 参数。
$ nid TARGET=SYS/password DBNAME=newname SETNAME=YES
DBNEWID 在尝试对文献进行 I/O 之前在罢休文献(不是数据文献)的头中实行考据。淌若考据到手,则 DBNEWID 会辅导说明,改动罢休文献中的数据库称呼,然后退出。DBNEWID 到手完成后,数据库仍处于挂载情状但尚不能用。
淌若操作到手,更新init文献后启动数据库。
淌若操作失败,要复原改动,请再次运行 DBNEWID 实用递次,指定 REVERT 关节字。
$ nid TARGET=SYS/password REVERT=YES LOGFILE= backout.log三、Changing only DBID
在敕令行上调用该实用递次;不要指定 DBNAME。
$ nid TARGET=SYS/password
淌若操作到手,挂载数据库并用resetlogs通达。淌若操作失败,要复原改动,请再次运行 DBNEWID 实用递次,指定 REVERT 关节字。
$ nid TARGET=SYS/password REVERT=YES LOGFILE=backout.log