DBMS_BACKUP_RESTORE修改数据库dbid引发的一系列问题_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3105 | 回复: 0   主题: DBMS_BACKUP_RESTORE修改数据库dbid引发的一系列问题        下一篇 
yanghui
注册用户
等级:上尉
经验:584
发帖:92
精华:0
注册:2011-12-13
状态:离线
发送短消息息给yanghui 加好友    发送短消息息给yanghui 发消息
发表于: IP:您无权察看 2015-4-10 17:04:31 | [全部帖] [楼主帖] 楼主

数据库10.2.0.1 windows2003

SQL> select dbid from v$database;
DBID
----------
3925760997
SQL> show parameter db_name;
NAME                TYPE        VALUE
------------------------ ----------- ------------------------------
db_name              string      jyc
SQL> exec dbms_backup_restore.nidbegin('jyc','JYC','3935589514','3925760997',0,0,10)


PL/SQL 过程已成功完成。

SQL> select dbid from v$database;
DBID
----------
3925760997
SQL> variable a number;
SQL> variable b number;
SQL> variable c number;
SQL> exec dbms_backup_restore.nidprocessdf(0,0,:a,:b,:c);


PL/SQL 过程已成功完成。

SQL> print :a
A
----------
0
SQL> print :b
B
----------
1
SQL> print :c
C
----------
1
SQL> exec dbms_backup_restore.nidprocesscf(:a,:b);


PL/SQL 过程已成功完成。

SQL> print :a
A
----------
1
SQL> print :b
B
----------
1
SQL> print :c
C
----------
1
SQL> exec dbms_backup_restore.nidend;


PL/SQL 过程已成功完成。

SQL> select dbid from v$database;
DBID
----------
3935589514
SQL> show parameter sga;
NAME                  TYPE        VALUE
-------------------------- ----------- ------------------------------
lock_sga              boolean     FALSE
pre_page_sga           boolean     FALSE
sga_max_size           big integer 3672M
sga_target            big integer 0
SQL> show sga;
Total System Global Area 3850371072 bytes
Fixed Size                  1248020 bytes
Variable Size             374998252 bytes
Database Buffers         3466985472 bytes
Redo Buffers                7139328 bytes
SQL> shutdown immediate


ORA-03113: 通信通道的文件结束

================
*** DBNEWID utility started ***
DBID will be changed from 3925760997 to new DBID of 3935589514 for database JYC
DBNAME will be changed from JYC to new DBNAME of jyc
Starting datafile conversion
Wed Jun 04 10:55:13 2008
Setting recovery target incarnation to 1
Datafile conversion complete
Wed Jun 04 10:55:51 2008
Database name changed to jyc.
Modify parameter file and generate a new password file before restarting.
Database ID for database jyc changed to 3935589514.
All previous backups and archived redo logs for this database are unusable.
Database has been shutdown, open with RESETLOGS option.
Succesfully changed database name and ID.
*** DBNEWID utility finished succesfully ***
=================
======================
Errors in file d:\oracle\product\10.2.0\admin\jyc\bdump\jyc_lgwr_4080.trc:


ORA-00305: 日志 1 (用于线程 1) 不一致; 属于另一个数据库
ORA-00312: 联机日志 1 线程 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\JYC\REDO01.LOG'

Wed Jun 04 10:56:55 2008
Errors in file d:\oracle\product\10.2.0\admin\jyc\bdump\jyc_lgwr_4080.trc:


ORA-00305: 日志 1 (用于线程 1) 不一致; 属于另一个数据库
ORA-00312: 联机日志 1 线程 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\JYC\REDO01.LOG'

=====================
SQL> conn /as sysdba


已连接到空闲例程。

SQL> startup


ORACLE 例程已经启动。

Total System Global Area 3850371072 bytes
Fixed Size         1248020 bytes
Variable Size      374998252 bytes
Database Buffers    3466985472 bytes
Redo Buffers      7139328 bytes


数据库装载完毕。
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\JYC\TEMP01.DBF
SQL> alter database open resetlogs;
alter database open resetlogs
*


第 1 行出现错误:
ORA-01194: 文件 1 需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\JYC\SYSTEM01.DBF'

SQL> recover datafile 1;


ORA-00283: 恢复会话因错误而取消
ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成

SQL> recover database;


ORA-00283: 恢复会话因错误而取消
ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成

SQL> alter database open;
alter database open
*


第 1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

SQL> alter database open resetlogs;
alter database open resetlogs
*


第 1 行出现错误:
ORA-01194: 文件 1 需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\JYC\SYSTEM01.DBF'

SQL> archive log list;


数据库日志模式     非存档模式
自动存档        禁用
存档终点        USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列   47
当前日志序列      49

SQL> recover database using backup controlfile until cancel;


ORA-00279: 更改 1477755 (在 06/04/2008 09:00:15 生成) 对于线程 1 是必需的
ORA-00289: 建议:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\JYC\ARCHIVELOG\2008_06_04\O1_MF_1_4

9_%U_.ARC
ORA-00280: 更改 1477755 (用于线程 1) 在序列 #49 中

指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01194: 文件 1 需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\JYC\SYSTEM01.DBF'

ORA-01112: 未启动介质恢复

SQL> select * from v$log;
GROUP#    THREAD#  SEQUENCE#    BYTES    MEMBERS ARC STATUS     FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------------


   1        1      49   52428800       1 NO  CURRENT       1477755 04-6月 -08

   3        1      48   52428800       1 NO  INACTIVE       1451417 03-6月 -08

   2        1      47   52428800       1 NO  INACTIVE       1405648 02-6月 -08

SQL> recover database using backup controlfile until cancel;


ORA-00279: 更改 1477755 (在 06/04/2008 09:00:15 生成) 对于线程 1 是必需的
ORA-00289: 建议:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\JYC\ARCHIVELOG\2008_06_04\O1_MF_1_4

9_%U_.ARC
ORA-00280: 更改 1477755 (用于线程 1) 在序列 #49 中

指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
D:\ORACLE\PRODUCT\10.2.0\ORADATA\JYC\REDO01.LOG
ORA-00309: 日志属于错误的数据库
ORA-00334: 归档日志: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\JYC\REDO01.LOG'

ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01194: 文件 1 需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\JYC\SYSTEM01.DBF'

SQL> create pfile='d:\t.ora' from spfile;


文件已创建。

SQL>
SQL> create pfile='d:\t.ora' from spfile;


文件已创建。

*修改t.ora添加隐含参数:_allow_resetlogs_corruption=TRUE

SQL> shutdown immediate


ORA-01109: 数据库未打开

已经卸载数据库。
ORACLE 例程已经关闭。

SQL> startup pfile='d:\t.ora';


ORACLE 例程已经启动。

Total System Global Area 3850371072 bytes
Fixed Size                  1248020 bytes
Variable Size             374998252 bytes
Database Buffers         3466985472 bytes
Redo Buffers                7139328 bytes


数据库装载完毕。
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

SQL> show parameter corr;
NAME                     TYPE        VALUE
-------------------------------- ----------- ------------------------------
_allow_resetlogs_corruption       boolean     TRUE
SQL> alter database open resetlogs;
alter database open resetlogs
*


第 1 行出现错误:
ORA-01092: ORACLE 实例终止。强制断开连接

=============
日志报错:

Errors in file d:\oracle\product\10.2.0\admin\jyc\udump\jyc_ora_4188.trc:


ORA-00600: 内部错误代码, 参数: [2662], [0], [1477761], [0], [1481451], [4194313], [], []

Wed Jun 04 11:19:32 2008
Errors in file d:\oracle\product\10.2.0\admin\jyc\udump\jyc_ora_4188.trc:


ORA-00600: 内部错误代码, 参数: [2662], [0], [1477761], [0], [1481451], [4194313], [], []

Wed Jun 04 11:19:32 2008
Error 600 happened during db open, shutting down database
USER: terminating instance due to error 600
Wed Jun 04 11:19:32 2008
Errors in file d:\oracle\product\10.2.0\admin\jyc\bdump\jyc_pmon_4896.trc:
ORA-00600: ??????, ??: [], [], [], [], [], [], [], []
=============
SQL> conn /as sysdba


已连接到空闲例程。

SQL> startup


ORACLE 例程已经启动。

Total System Global Area 3850371072 bytes
Fixed Size                  1248020 bytes
Variable Size             374998252 bytes
Database Buffers         3466985472 bytes
Redo Buffers                7139328 bytes


数据库装载完毕。
数据库已经打开。

SQL> recover database;


ORA-00283: 恢复会话因错误而取消
ORA-01124: 无法恢复数据文件 1 - 文件在使用中或在恢复中
ORA-01110: 数据文件 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\JYC\SYSTEM01.DBF'

SQL> select dbid from v$database;
DBID
----------
3935589514
SQL> show parameter db_name;
NAME                 TYPE        VALUE
---------------------------- ----------- ------------------------------
db_name             string      jyc
SQL>


此时数据库已经可以正常起停,但报错如下:

Wed Jun 04 11:28:48 2008
Errors in file d:\oracle\product\10.2.0\admin\jyc\bdump\jyc_dbw0_5720.trc:
ORA-01186: ?? 201 ??????
ORA-01122: ????? 201 ????
ORA-01110: ???? 201: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\JYC\TEMP01.DBF'
ORA-01206: ???????????? - ??? ID ??
SQL> select status from dba_temp_files;
select status from dba_temp_files
*


第 1 行出现错误:
ORA-01187: 由于验证测试失败而无法从文件 201 读取
ORA-01110: 数据文件 201: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\JYC\TEMP01.DBF'
===================
重建临时表空间:

SQL> CREATE SMALLFILE
2   TEMPORARY TABLESPACE "TEMP2" TEMPFILE
3   'D:\ORACLE\PRODUCT\10.2.0\ORADATA\JYC\TEMP2.ora' SIZE 5M
4   EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;


表空间已创建。

SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE "TEMP2";


数据库已更改。

SQL> drop tablespace temp including contents and datafiles;


表空间已删除。

SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP2
SQL> select status from dba_temp_files;
STATUS
---------
AVAILABLE
SQL> alter tablespace temp2 rename to temp;


表空间已更改。

SQL> select status from dba_temp_files;
STATUS
---------
AVAILABLE
SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
SQL> select TEMPORARY_TABLESPACE from dba_users;
TEMPORARY_TABLESPACE
------------------------------
TEMP
TEMP
TEMP
TEMP
TEMP
TEMP
TEMP
TEMP
TEMP
TEMP


已选择10行。

SQL>


最后启动正常,无报错!

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论