(4) 生成spfile SQL> create spfile='+DATA' from pfile='/tmp/pfile.ora';
File created.
(5) 重启DB
(5) 检查验证 SQL> archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination +FRA Oldest online log sequence 39 Next log sequence to archive 40 Current log sequence 40
(5) 查看spfile SQL> show parameter spfile
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string +DATA/YFDB/PARAMETERFILE/spfile.279.1208438851 此时spfile的位置会发生变化
(6) 创建别名 ASMCMD> cd data/yfdb ASMCMD> mkalias +DATA/YFDB/PARAMETERFILE/spfile.279.1208438851 spfileorcl.ora ASMCMD> ls -l Type Redund Striped Time Sys Name Y ARCHIVELOG/ Y CONTROLFILE/ Y DATAFILE/ Y ONLINELOG/ Y PARAMETERFILE/ Y PASSWORD/ Y TEMPFILE/ PARAMETERFILE MIRROR COARSE AUG 06 13:00:00 N spfileyfdb.ora => +DATA/YFDB/PARAMETERFILE/spfile.279.1208438851
直接这样创建别名,重启DB, show parameter spfile仍然看到的路径是+DATA/YFDB/PARAMETERFILE/spfile.279.1208438851而不是+DATA/yfdb/spfileyfdb.ora
alter system set log_archive_dest_1='location=+DATA' scope=spfile sid='yfdb1'; alter system set log_archive_dest_1='location=+DATA' scope=spfile sid='*'; alter system set log_archive_dest_1='location=+DATA' scope=spfile;
注意: 这里的*是指所有实例 SQL> alter system set log_archive_dest_1='location=+DATA' scope=spfile sid='yfdb1';
System altered.
alter system set log_archive_dest_1='location=+DATA' scope=spfile sid='yfdb1';等于修改参数文件中的yfdb1.log_archive_dest_1='location=+FRA/arch' alter system set log_archive_dest_1='location=+DATA' scope=spfile sid='*';等于修改参数文件中的*.log_archive_dest_1='LOCATION=+DATA'
(3) 将操作系统中的文件复制到磁盘组: ASMCMD> rm -rf Current.256.948713911 ASMCMD> ls Backup.6949.1196070339 snapcf_yfdb.f ASMCMD> cp /tmp/Current.256.948713911 +FRA/yfdb/controlfile/Current.256.948713911 copying /tmp/Current.256.948713911 -> +FRA/yfdb/controlfile/Current.256.948713911 ASMCMD-8016: copy source '/tmp/Current.256.948713911' and target '+FRA/yfdb/controlfile/Current.256.948713911' failed ORA-15056: additional error message ORA-15046: ASM file name '+FRA/yfdb/controlfile/Current.256.948713911' is not in single-file creation form ORA-06512: at "SYS.X$DBMS_DISKGROUP", line 415 ORA-06512: at line 3 (DBD ERROR: OCIStmtExecute)
ASMCMD> cp /tmp/Current.256.948713911 +FRA/yfdb/controlfile/Current ASM只是在目标位置下保留了一个alias,真正的文件放在了ASM目录: ASMCMD> cp /tmp/Current.256.948713911 +FRA/yfdb/controlfile/Current copying /tmp/Current.256.948713911 -> +FRA/yfdb/controlfile/Current ASMCMD> ls -l Type Redund Striped Time Sys Name CONTROLFILE UNPROT FINE AUG 05 03:00:00 Y Backup.6949.1196070339 N Current => +FRA/ASM/CONTROLFILE/Current.256.1208354291 N snapcf_yfdb.f => +FRA/YFDB/CONTROLFILE/Backup.6949.1196070339 ASMCMD> pwd +fra/yfdb/controlfile (3) 将操作系统中的文件复制到磁盘组: ALTER DATABASE MOVE DATAFILE '/u00/data/users_01.dbf' TO '+DG_DATA';
[root@yfrac01 ~]# su - oracle [oracle@yfrac01 ~]$ rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Tue Aug 5 13:13:29 2025
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: YFDB (not mounted)
RMAN> restore controlfile to '+DATA' from '+FRA/yfdb/controlfile/current.256.948713911';
Starting restore at 05-AUG-25 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=6487 instance=yfdb1 device type=DISK
channel ORA_DISK_1: copied control file copy Finished restore at 05-AUG-25
RMAN> restore controlfile to '+DATA' from '+FRA/yfdb/controlfile/current.256.948713911';
Starting restore at 05-AUG-25 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=6349 instance=yfdb1 device type=DISK
channel ORA_DISK_1: copied control file copy Finished restore at 05-AUG-25
这里恢复两次,生成两个控制文件副本
查看控制文件: [grid@yfrac01 ~]$ asmcmd ASMCMD> cd data/yfdb/controlfile ASMCMD> ls Current.260.948713911 current.556.1208351711 current.557.1208352043
ASMCMD> pwd +data/yfdb/controlfile
5.修改spfile中控制文件路径
1 2 3
SQL> alter system set control_files='+DATA/yfdb/controlfile/current.556.1208351711','+DATA/yfdb/controlfile/current.557.1208352043' scope=spfile sid='*';