[[442731]]
NID 实用程序是具利在Oracle 10g中引入的。DBNEWID 是更改e工一个数据库实用程序,位于 $ORACLE_HOME/bin 目录中,具利可以更改操作数据库的更改e工内部数据库标识符 (DBID) 和数据库名称 (DBNAME)。在引入 DBNEWID 实用程序之前,具利我们曾经手动创建数据库的更改e工副本,并通过重新创建控制文件为其赋予新的具利数据库名称 (DBNAME)。但是更改e工,更改实例的具利内部数据库标识符 (DBID) 是不可能的。
DBID 是更改e工数据库的内部唯一标识符。由于恢复管理器 (RMAN)通过 DBID 区分数据库,具利因此您无法在同一个 RMAN 存储库中同时注册种子数据库和手动复制的更改e工数据库。DBNEWID 实用程序解决了这个问题。
NID 实用程序允许我们更改
更改数据库的 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 SFMv
备份脚本示例:
- [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
- SQL> SHUTDOWN IMMEDIATE
- SQL> STARTUP MOUNT
调用 DBNEWID (NID) 实用程序,使用具有 SYSDBA 权限的用户从命令行指定 DBNAME。
- $ nid TARGET=sys/password DBNAME=new_name LOGFILE =change_dbname.log
DBNEWID 实用程序在尝试对文件进行 I/O 之前在数据文件和控制文件的标头中执行验证。如果验证成功,则 DBNEWID 会提示您确认操作(除非您指定日志文件,在这种情况下它不会提示),更改所有数据文件中的 DBID,然后退出。数据库处于挂载状态,但尚不可用。
此实用程序不会更改 pfile 中的数据库名称,因此请手动更改 pfile 中的数据库名称 (DB_NAME) 并创建密码文件(如有必要)。
由于您已重置联机重做日志,因此旧的备份和归档日志在当前的数据库中不再可用。
在命令行上调用该实用程序;您必须同时指定 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
在命令行上调用该实用程序;不要指定 DBNAME。
- $ nid TARGET=SYS/password
如果操作成功,挂载数据库并用resetlogs打开。如果操作失败,要恢复更改,请再次运行 DBNEWID 实用程序,指定 REVERT 关键字。
- $ nid TARGET=SYS/password REVERT=YES LOGFILE=backout.log
责任编辑:姜华 来源: 今日头条 Oracle数据库后端开发
(责任编辑:休闲)
碧桂园服务(06098.HK)公布:拟收购蓝光嘉宝服务(02606.HK)64.62%股权 明日复牌
力合微(688589.SH)2020年归母净利2782.05万元 基本每股收益0.33元
前10个月安徽省重点项目完成投资15725亿 开工3235个