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
先說說文中的一些問題吧?
“我在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 编辑 ]