kaiyun官方网站 Oracle 变嫌dbid和dbname器具利器|DBNEWID (NID)共享

发布日期:2023-12-09 13:44    点击次数:89

[[442731]]

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

TARGET输入用户名和密码,详确,该用户必须具有sysdba的权限。比喻target=sys/oracle,虽然,若是咱们是在操作系统土产货操作的话,可用反斜杠聚积,即target=/ REVERT指明一个失败的DBID操作是否需要回退。默许是NO。详确,若是数据库的DBID修改见效,该操作无法回退。该回退操作只针对失败的DBID修改操作。 DBNAME指定新的数据库名。 SETNAME默许是NO,则该数据库将同期修改DBID和DBNAME。若是指定为YES,则该数据库将只修改DBNAME LOGFILE日记文献,记载操作信息,默许是隐敝上个日记文献。若是APPEND设为YES的话,则此次操作信息将被追加到上个日记文献中。APPEND默许是NO。 HELP用来辅导DBNEWID的语法规定。默许为NO 一、变嫌 DBNAME & DBID 1、查询数据库的信息
SQL> kaiyun官方网站select dbid, name from v$database; DBID      NAME  ---------- ---------  1744662402 SFMv 
2、 备份数据库

备份剧本示例:

[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 MOUNT 
4、调用 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