数据库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>
最后启动正常,无报错!
--转自