xq8995209 发表于 2018-9-13 10:32:54

oracle更改控制文件位置

  平台:
  # showrev
  Hostname: nice
  Hostid: 10543b38
  Release: 5.10
  Kernel architecture: i86pc
  Application architecture: i386
  Hardware 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 Mode
  Automatic archival             Disabled
  Archive destination            USE_DB_RECOVERY_FILE_DEST
  Oldest online log sequence   10
  Current log sequence         12
  -----------
  SQL> select name from v$datafile
  2union
  3select name from v$controlfile
  4union
  5select 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的备份也需要重视。

页: [1]
查看完整版本: oracle更改控制文件位置