先看看我的操作步骤:
1.利用数据字典select * from v$controlfile;获取了现有的控制文件名;
2.修改了spfile: alter system set control_files =
                'D:\DISK3\CONTROL01.CTL',
                'D:\DISK6\CONTROL02.CTL',
                'D:\DISK9\CONTROL03.CTL' SCOPE=SPFILE;
3.shutdown immediate数据库
4.把新的控制文件名添加到了参数文件CONTROL_FILES参数中
   control_files=("D:\DISK3\CONTROL01.CTL", "D:\DISK6\CONTROL02.CTL", "D:\DISK9\CONTROL03.CTL")
5.把现有的控制文件复制到了制定的DISK3,6,9位置
6.重新启动了ORACLE数据库:SQL> startup 
                        ORACLE 例程已经启动。                           Total System Global Area  595591168 bytes
                        Fixed Size                  1250356 bytes
                        Variable Size             163580876 bytes
                        Database Buffers          427819008 bytes
                        Redo Buffers                2940928 bytes
                        数据库装载完毕。
                           ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
7.查看控制文件也是正确的:
STATUS  NAME                 IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- -------------------- --- ---------- --------------
        D:\DISK3\CONTROL01.C NO       16384            430
        TL        D:\DISK6\CONTROL02.C NO       16384            430
        TL        D:\DISK9\CONTROL03.C NO       16384            430
        TL这些步骤我都一步一步的照到书上做的,网上也查了,但一直不对,重复了N次了,还是那样,麻烦各位回答一下!谢谢
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

解决方案 »

  1.   

    SQL> select * from scott.dept;
    select * from scott.dept
                        *
    第 1 行出现错误:
    ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
      

  2.   

    你在数据库打开时备份控制文件,这造成了备份控制文件不同步。所以你重新打开时数据库时要resetlogs这样做可不用resetlogs:
    1.shutdown数据库后,操作系统命令备份控制文件;
    2.在 startup nomount时,改控制文件参数。
      

  3.   

    因为控制文件里面的scn和日志里面的scn不一样造成的
    SQL> startup mount
    SQL> alter database open resetlogs;
    之前之后做好备份,启动后就可以删除归档日志了,resetlogs后归档日志就没有用了