system数据文件问题库起不来,当家帮忙看看

[复制链接]
查看11 | 回复9 | 2009-11-6 23:12:33 | 显示全部楼层 |阅读模式
我的环境:
1 windows xp3
2 db:
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE10.2.0.1.0Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

我在E:\oracle\product\10.2.0\oradata\test下把SYSTEM01.DBF剪切后粘贴到其他硬盘下:

这里我的操作:
SQL> archive log list;
数据库日志模式
存档模式
自动存档
启用
存档终点
USER_DB_RECOVERY_FILE_DEST
最早的联机日志序列 39
下一个存档日志序列 41
当前日志序列 41

SQL> startup force mount
ORACLE 例程已经启动。
Total System Global Area612368384 bytes
Fixed Size
1250428 bytes
Variable Size
360713092 bytes
Database Buffers
243269632 bytes
Redo Buffers
7135232 bytes
数据库装载完毕。
SQL> host copy E:\oracle\product\10.2.0\backup\backupuserman\SYSTEM01.DBF E:\oracle\product\10.2.0\oradata\test\SYSTEM01.DBF
已复制 1 个文件。
SQL> alter database rename file 'E:\oracle\product\10.2.0\backup\backupuserman\SYSTEM01.DBF' to 'E:\oracle\product\10.2.0\oradata\test\SYSTEM01.DBF';
alter database rename file 'E:\oracle\product\10.2.0\backup\backupuserman\SYSTEM01.DBF' to 'E:\oracle\product\10.2.0\oradata\test\SYSTEM01.DBF'
*
第 1 行出现错误:
ORA-01511: 重命名日志/数据文件时出错
ORA-01516: 不存在的日志文件, 数据文件或临时文件 "E:\oracle\product\10.2.0\backup\backupuserman\SYSTEM01.DBF"

SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01190: 控制文件或数据文件 1 来自最后一个 RESETLOGS 之前
ORA-01110: 数据文件 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF'

之后重建控制文件了(NORESETLOGS)之后

SQL> select * from dual;
ADDR INDXINST_ID D
-------- ---------- ---------- -
0366CD54
0
1 X
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE10.2.0.1.0Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
SQL> select count(*) from user_objects;
select count(*) from user_objects

*
第 1 行出现错误:
ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
SQL> shutdown immediate
ORA-01109: 数据库未打开

已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area612368384 bytes
Fixed Size
1250428 bytes
Variable Size
360713092 bytes
Database Buffers
243269632 bytes
Redo Buffers
7135232 bytes
数据库装载完毕。
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

SQL> alter database open resetlogs
2;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01190: 控制文件或数据文件 1 来自最后一个 RESETLOGS 之前
ORA-01110: 数据文件 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF'

SQL> alter database open noresetlogs;
alter database open noresetlogs
*
第 1 行出现错误:
ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成

SQL> recover database using backup controlfile;
ORA-00283: 恢复会话因错误而取消
ORA-19909: 数据文件 1 属于孤立的原型
ORA-01110: 数据文件 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF'

SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01190: 控制文件或数据文件 1 来自最后一个 RESETLOGS 之前
ORA-01110: 数据文件 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF'

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

SQL> recover database using backup controlfile;
ORA-00283: 恢复会话因错误而取消
ORA-19909: 数据文件 1 属于孤立的原型
ORA-01110: 数据文件 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF'

SQL> recover database using backup controlfile;
ORA-00283: 恢复会话因错误而取消
ORA-19909: 数据文件 1 属于孤立的原型
ORA-01110: 数据文件 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF'

SQL> recover database using backup controlfile until cancel;
ORA-00283: 恢复会话因错误而取消
ORA-19909: 数据文件 1 属于孤立的原型
ORA-01110: 数据文件 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF'

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

SQL>recover database using backup controlfile until cancel;
ORA-00283: 恢复会话因错误而取消
ORA-19909: 数据文件 1 属于孤立的原型
ORA-01110: 数据文件 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF'

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

------------------------------------------------------------------------------
数据文件状态:
STATUS FILE# NAME
------- ---------- -----------------------------------------------------
SYSTEM 1 E:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBFONLINE 2 E:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS01.DBF
ONLINE 3 E:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSAUX01.DBF
ONLINE 4 E:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS01.DBF
ONLINE 5 E:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\EXAMPLE01.DBF
[ 本帖最后由 yyp2009 于 2011-6-12 15:01 编辑 ]
回复

使用道具 举报

千问 | 2009-11-6 23:12:33 | 显示全部楼层
我猜你在做这些操作之前 SYSTEM 的文件应该是:'E:\oracle\product\10.2.0\oradata\test\SYSTEM01.DBF'吧。
由于system坏了或者是实验需求,你想把你备份的文件拷过去,也就是 'E:\oracle\product\10.2.0\backup\backupuserman\SYSTEM01.DBF' ,
然后引起这一系列的问题, 不知道我的猜测是否准确?
回复

使用道具 举报

千问 | 2009-11-6 23:12:33 | 显示全部楼层
嗯 'E:\oracle\product\10.2.0\oradata\test\SYSTEM01.DBF'这个是库里的位置路径

'E:\oracle\product\10.2.0\backup\backupuserman\SYSTEM01.DBF' 这个是备份路径
回复

使用道具 举报

千问 | 2009-11-6 23:12:33 | 显示全部楼层
究竟想验证什么结论?
回复

使用道具 举报

千问 | 2009-11-6 23:12:33 | 显示全部楼层
先說說文中的一些問題吧?
“我在E:\oracle\product\10.2.0\oradata\test下把USERS01.DBF剪切后粘贴到其他硬盘下:”
------這裡是不是system01.dbf?
“alter database rename file 'E:\oracle\product\10.2.0\backup\backupuserman\SYSTEM01.DBF' to 'E:\oracle\product\10.2.0\oradata\test\SYSTEM01.DBF';”
------這又是什麼意思?你的庫在test下,為什麼要從backupuserrman rename to test?
好,占且認為你的system01.dbf已經還原到test目錄下了,你recover提示resetlogs斷點
10g可以跨resetlogs斷點的
出現這個問題原因是,LZ大概有執行過多次resetlogs,估計是這麼個情形(假設執行過兩次resetlogs)
1、system01.dbf是來自第一次resetlogs之後,其它數據文件是第二次resetlogs之後的,控制文件也是第二次resetlogs之後的
2、system01.dbf是來自這兩次resetlogs之前的,其它文件是第一次resetlogs之後的,控制文件也是第二次resetlogs之後的
理解10g跨resetlogs斷點的INCARNATION就好理解了;
選擇合適的備份,合適的數據文件,最重要的一點,不論任務理由,首先考慮數據一致性;
SELECT * FROM V$DATABASE_INCARNATION;

可以很肯定的說,10g可以跨resetlogs斷點;只要resetlogs前的datafile和resetlogs後的datafile在一個生命周期內
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01190: control file or data file 1 is from before the last RESETLOGS
ORA-01110: data file 1: '+DATA/rac/datafile/system.262.751776415'
SQL> recover database;
......
Log applied.
Media recovery complete.
SQL>
SQL> alter database open;
Database altered.
[ 本帖最后由 jdw618 于 2011-6-11 13:41 编辑 ]
回复

使用道具 举报

千问 | 2009-11-6 23:12:33 | 显示全部楼层
楼主想验证什么呢
回复

使用道具 举报

千问 | 2009-11-6 23:12:33 | 显示全部楼层
原帖由 yyp2009 于 2011-6-10 23:39 发表
嗯 'E:\oracle\product\10.2.0\oradata\test\SYSTEM01.DBF'这个是库里的位置路径

'E:\oracle\product\10.2.0\backup\backupuserman\SYSTEM01.DBF' 这个是备份路径

所以你的下面一句命令明显是你自己的逻辑问题了。
SQL> alter database rename file 'E:\oracle\product\10.2.0\backup\backupuserman\SYSTEM01.DBF' to 'E:\oracle\product\10.2.0\oradata\test\SYSTEM01.DBF';
而且从你测试的这些步骤中,也能发现,你备份目录里面的 system 文件和你现在的数据库根本就不在同一个生命期内,你这样的恢复当然是不行的。
就从总体而言,你实验过程中的逻辑并不是很清晰 。


回复

使用道具 举报

千问 | 2009-11-6 23:12:33 | 显示全部楼层

哥们
SHUTDOWN IMMEDIATE后再做你的实验
不用用 STARTUP MOUNT FORCE
那样没发完全检查点
回复

使用道具 举报

千问 | 2009-11-6 23:12:33 | 显示全部楼层
没有自己测试库,折腾不起来了
没想着验证什么
回复

使用道具 举报

千问 | 2009-11-6 23:12:33 | 显示全部楼层
你备份目录里面的 system 文件和你现在的数据库根本就不在同一个生命期内--------?怎么说,都搞晕了都
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行