平台:
# showrev
Hostname: niceHostid: 10543b38Release: 5.10Kernel architecture: i86pcApplication architecture: i386Hardware provider: Domain: Kernel version: SunOS 5.10 Generic_118844-26数据库版本:
SQL> select version from v$instance;
VERSION
-----------------10.2.0.2.0======================================
查看控制文件的相关信息:
select value from v$parameter where name='control_files';
VALUE
--------------------------------------------------------------------------------/u01/app/oracle/oradata/nice/control01.ctl,/u01/app/oracle/oradata/nice/control02.ctl,/u01/app/oracle/oradata/nice/control03.ctl也可以用
select name from v$controlfile;
NAME
--------------------------------------------------------------------------------/u01/app/oracle/oradata/nice/control01.ctl/u01/app/oracle/oradata/nice/control02.ctl
/u01/app/oracle/oradata/nice/control03.ctl
三个控制文件都在同一个硬盘的同一个目录中;
计划只使用两个控制文件,并将control02.ctl放在另外一块硬盘的/u03/app/oracle/下。
1.查看数据库中的所有文件信息
SQL> archive log list;
Database log mode No Archive ModeAutomatic archival DisabledArchive destination USE_DB_RECOVERY_FILE_DESTOldest online log sequence 10Current log sequence 12-----------
SQL> select name from v$datafile
2 union 3 select name from v$controlfile 4 union 5 select member from v$logfile;2.根据当前系统使用的spfile创建一个pfile文件
create pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initnice.ora' from spfile;
3.进行冷备(一致性备份)
shutdown immediate
将所有的datafile,controlfile,logfile复制到/u02/oradata/nice目录下,将spfilenice.ora也复制到/u02/oradata/nice目录下。
4.修改刚创建的pfile文件的control_files='/u01/app/oracle/oradata/nice/control01.ctl','/u03/app/oracle/control02.ctl'
5.将'/u01/app/oracle/oradata/nice/目录下的control02文件移到'/u03/app/oracle/目录下,并将control03.ctl删除。
6.尝试使用刚修改过的pfile文件启动数据库
startup pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initnice.ora'
7.成功启动数据
查看控制文件信息:
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------/u01/app/oracle/oradata/nice/control01.ctl/u03/app/oracle/control02.ctl达到预期效果。
8.创建一个新的spfile。
create spfile from pfile;
9.备份一个controlfile,再重新冷备一份数据库。
alter database backup controlfile to ‘/u02/app/oracle/control.ctl';
10.一点思考:
对控制文件的管理,关键在于对参数文件中control_files项的设置,以及设置后,相对应目录中的控制文件的存在。
在oracle文档上强烈建议将使用多个控制文件并放置在不同的硬盘上。这样的建议和架构对控制文件的保护上没错,但是在实际的生产系统中这样的架构似乎并不合理。加入放在两个硬盘上,那么两块硬盘中有故障的概率要比一块硬盘大。而在oracle系统中,无论哪个contorlfile失效都会导致系统宕掉。这可能到增加了系统故障的可能。所以达不到高可用的要求。而一些实际的系统架构是依赖于硬件的冗余,比如raid1或者raid5/raid6的配置来保证系统的高可用运行和controlfile在硬盘出现故障时不会丢失。
另外,对controlfile的备份也需要重视。