[20200407]nid修改DBID还原.txt

来源:这里教程网 时间:2026-03-03 15:26:39 作者:

[20200407]nid修改DBID还原.txt --//别人问的问题,改错dbid是否可以修改回来。 $  nid DBNEWID: Release 11.2.0.4.0 - Production on Tue Apr 7 11:36:23 2020 Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved. Keyword     Description                    (Default) ---------------------------------------------------- TARGET      Username/Password              (NONE) DBNAME      New database name              (NONE) LOGFILE     Output Log                     (NONE) REVERT      Revert failed change           NO ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SETNAME     Set a new database name only   NO APPEND      Append to output log           NO HELP        Displays these messages        NO --//nid有一个REVERT参数可以反转,看看是否有效。 1.环境: SCOTT@book> @ ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production SCOTT@book> select name,open_mode,dbid,db_unique_name from v$database; NAME OPEN_MODE        DBID DB_UNIQUE_NAME ---- ---------- ---------- --------------- BOOK READ WRITE 1337401710 book --//dbid= 1337401710 2.使用nid修改dbid --//关闭数据库启动到mount状态。 SYS@book> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SYS@book> startup mount ORACLE instance started. Total System Global Area  643084288 bytes Fixed Size                  2255872 bytes Variable Size             205521920 bytes Database Buffers          427819008 bytes Redo Buffers                7487488 bytes Database mounted. $ nid TARGET=/ DBNEWID: Release 11.2.0.4.0 - Production on Tue Apr 7 11:43:18 2020 Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved. Connected to database BOOK (DBID=1337401710) Connected to server version 11.2.0 Control Files in database:     /mnt/ramdisk/book/control01.ctl     /mnt/ramdisk/book/control02.ctl Change database ID of database BOOK? (Y/[N]) => y Proceeding with operation Changing database ID from 1337401710 to 1477856022     Control File /mnt/ramdisk/book/control01.ctl - modified     Control File /mnt/ramdisk/book/control02.ctl - modified     Datafile /mnt/ramdisk/book/system01.db - dbid changed     Datafile /mnt/ramdisk/book/sysaux01.db - dbid changed     Datafile /mnt/ramdisk/book/undotbs01.db - dbid changed     Datafile /mnt/ramdisk/book/users01.db - dbid changed     Datafile /mnt/ramdisk/book/example01.db - dbid changed     Datafile /mnt/ramdisk/book/tea01.db - dbid changed     Datafile /mnt/ramdisk/book/temp01.db - dbid changed     Control File /mnt/ramdisk/book/control01.ctl - dbid changed     Control File /mnt/ramdisk/book/control02.ctl - dbid changed     Instance shut down Database ID for database BOOK changed to 1477856022. All previous backups and archived redo logs for this database are unusable. Database is not aware of previous backups and archived logs in Recovery Area. Database has been shutdown, open database with RESETLOGS option. Succesfully changed database ID. DBNEWID - Completed succesfully. 3.检查验证: SYS@book> startup mount ORACLE instance started. Total System Global Area  643084288 bytes Fixed Size                  2255872 bytes Variable Size             205521920 bytes Database Buffers          427819008 bytes Redo Buffers                7487488 bytes Database mounted. SYS@book> select name,open_mode,dbid,db_unique_name from v$database; NAME OPEN_MODE       DBID DB_UNIQUE_NAME ---- --------- ---------- -------------- BOOK MOUNTED   1477856022 book --//dbid = 1477856022 $ nid TARGET=/ REVERT=YES DBNEWID: Release 11.2.0.4.0 - Production on Tue Apr 7 11:45:44 2020 Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved. Connected to database BOOK (DBID=1477856022) NID-00128: Cannot revert change of database, change not in progress Reversion of database changes failed during validation - database is intact. DBNEWID - Completed with validation errors. --//已经无法该会。我估计如果的当时保存控制文件还在,也许可以改会。 4.只能使用bbed修改。 BBED> p /d dba 1,1 kcvfh.kcvfhhdr.kccfhdbi ub4 kccfhdbi                                @28       1477856022 $ seq 6 | xargs -IQ echo "p /d dba Q,1 kcvfh.kcvfhhdr.kccfhdbi" | rlbbed  | grep kccfhdbi BBED> ub4 kccfhdbi                                @28       1477856022 BBED> ub4 kccfhdbi                                @28       1477856022 BBED> ub4 kccfhdbi                                @28       1477856022 BBED> ub4 kccfhdbi                                @28       1477856022 BBED> ub4 kccfhdbi                                @28       1477856022 BBED> ub4 kccfhdbi                                @28       1477856022 --//OK正确。 $ seq 6 | xargs -IQ echo " assign dba Q,1 kcvfh.kcvfhhdr.kccfhdbi = 1337401710 "  assign dba 1,1 kcvfh.kcvfhhdr.kccfhdbi = 1337401710  assign dba 2,1 kcvfh.kcvfhhdr.kccfhdbi = 1337401710  assign dba 3,1 kcvfh.kcvfhhdr.kccfhdbi = 1337401710  assign dba 4,1 kcvfh.kcvfhhdr.kccfhdbi = 1337401710  assign dba 5,1 kcvfh.kcvfhhdr.kccfhdbi = 1337401710  assign dba 6,1 kcvfh.kcvfhhdr.kccfhdbi = 1337401710 --//执行以上脚本。注意如果通过pipe,必须在第1,2行之间插入1行,内容为Y。 $ seq 6 | xargs -IQ echo " sum apply  dba Q,1 "  sum apply  dba 1,1  sum apply  dba 2,1  sum apply  dba 3,1  sum apply  dba 4,1  sum apply  dba 5,1  sum apply  dba 6,1 --//执行以上脚本。 5.验证看看: --//重建控制文件: SYS@book> alter database backup controlfile to trace  ; Database altered. --//抽取执行脚本: STARTUP NOMOUNT CREATE CONTROLFILE REUSE DATABASE "BOOK" NORESETLOGS FORCE LOGGING ARCHIVELOG     MAXLOGFILES 16     MAXLOGMEMBERS 3     MAXDATAFILES 100     MAXINSTANCES 8     MAXLOGHISTORY 292 LOGFILE   GROUP 1 '/mnt/ramdisk/book/redo01.log'  SIZE 50M BLOCKSIZE 512,   GROUP 2 '/mnt/ramdisk/book/redo02.log'  SIZE 50M BLOCKSIZE 512,   GROUP 3 '/mnt/ramdisk/book/redo03.log'  SIZE 50M BLOCKSIZE 512 -- STANDBY LOGFILE --   GROUP 4 '/mnt/ramdisk/book/redostb01.log'  SIZE 50M BLOCKSIZE 512, --   GROUP 5 '/mnt/ramdisk/book/redostb02.log'  SIZE 50M BLOCKSIZE 512, --   GROUP 6 '/mnt/ramdisk/book/redostb03.log'  SIZE 50M BLOCKSIZE 512, --   GROUP 7 '/mnt/ramdisk/book/redostb04.log'  SIZE 50M BLOCKSIZE 512 DATAFILE   '/mnt/ramdisk/book/system01.dbf',   '/mnt/ramdisk/book/sysaux01.dbf',   '/mnt/ramdisk/book/undotbs01.dbf',   '/mnt/ramdisk/book/users01.dbf',   '/mnt/ramdisk/book/example01.dbf',   '/mnt/ramdisk/book/tea01.dbf' CHARACTER SET ZHS16GBK ; -- Configure RMAN configuration record 1 VARIABLE RECNO NUMBER; EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','ON'); -- Configure RMAN configuration record 2 VARIABLE RECNO NUMBER; EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('DEVICE TYPE','DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET'); -- Configure RMAN configuration record 3 VARIABLE RECNO NUMBER; EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('DEFAULT DEVICE TYPE TO','DISK'); --//执行以上内容。 -- Commands to re-create incarnation table -- Below log names MUST be changed to existing filenames on -- disk. Any one log file from each branch can be used to -- re-create incarnation records. -- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/archivelog/book/1_1_896605872.dbf'; -- Recovery is required if any of the datafiles are restored backups, -- or if the last shutdown was not normal or immediate. RECOVER DATABASE -- All logs need archiving and a log switch is needed. ALTER SYSTEM ARCHIVE LOG ALL; -- Database can now be opened normally. ALTER DATABASE OPEN; -- Commands to add tempfiles to temporary tablespaces. -- Online tempfiles have complete space information. -- Other tempfiles may require adjustment. ALTER TABLESPACE TEMP ADD TEMPFILE '/mnt/ramdisk/book/temp01.dbf' REUSE; -- End of tempfile additions. -- -- -- ---------------------------------------------------------- SYS@book> select name,open_mode,dbid,db_unique_name from v$database; NAME OPEN_MODE       DBID DB_UNIQUE_NAME ---- --------- ---------- -------------- BOOK MOUNTED   1337401710 SYS@book> alter database open ; Database altered. SYS@book> ALTER TABLESPACE TEMP ADD TEMPFILE '/mnt/ramdisk/book/temp01.dbf' REUSE; Tablespace altered. SYS@book> archive log list Database log mode              Archive Mode Automatic archival             Enabled Archive destination            /u01/app/oracle/archivelog/book/ Oldest online log sequence     927 Next log sequence to archive   929 Current log sequence           929 SYS@book> select name,open_mode,dbid,db_unique_name from v$database; NAME OPEN_MODE        DBID DB_UNIQUE_NAME ---- ---------- ---------- --------------- BOOK READ WRITE 1337401710 --//有点奇怪的是这样恢复的DB_UNIQUE_NAME是空。 SYS@book> show parameter DB_UNIQUE_NAME NAME           TYPE   VALUE -------------- ------ ------ db_unique_name string book --//估计建立的控制文件一些信息没有填充,我记忆里面第1次启动要改写控制文件内容写入DB_UNIQUE_NAME,也许重启数据库就ok了。 SYS@book> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SYS@book> startup mount ORACLE instance started. Total System Global Area  643084288 bytes Fixed Size                  2255872 bytes Variable Size             205521920 bytes Database Buffers          427819008 bytes Redo Buffers                7487488 bytes Database mounted. SYS@book> select name,open_mode,dbid,db_unique_name from v$database; NAME OPEN_MODE       DBID DB_UNIQUE_NAME ---- --------- ---------- -------------- BOOK MOUNTED   1337401710 book --//OK.实际上这个问题就在于一台服务器运行多个实例,登录会话之间切来切去,很容易搞乱。 --//在执行前小心验证就不会出现这个情况了。建立standby redo。 -- The following script can be used on the standby database -- to re-populate entries for a standby controlfile created -- on the primary and copied to the standby site. ---------------------------------------------------------- ALTER DATABASE ADD STANDBY LOGFILE '/mnt/ramdisk/book/redostb01.log' SIZE 50M BLOCKSIZE 512 REUSE; ALTER DATABASE ADD STANDBY LOGFILE '/mnt/ramdisk/book/redostb02.log' SIZE 50M BLOCKSIZE 512 REUSE; ALTER DATABASE ADD STANDBY LOGFILE '/mnt/ramdisk/book/redostb03.log' SIZE 50M BLOCKSIZE 512 REUSE; ALTER DATABASE ADD STANDBY LOGFILE '/mnt/ramdisk/book/redostb04.log' SIZE 50M BLOCKSIZE 512 REUSE;

相关推荐