Oracle控制文件

控制文件的作用

  • 控制文件是一个存储Oracle实例信息、数据文件和日志文件信息的内部二进制文件,如果启用了RMAN备份,还会存储RMAN备份的信息。
  • 控制文件一般在Oracle系统安装时自动创建,控制文件所存放的路径由服务器参数文件SPFILEsid.ora的control_files参数值来确定。
  • 由于控制文件存放有数据文件、日志文件等信息,因此,Oracle实例在启动时必须访问控制文件
  • Oracle数据库系统出于安全考虑,在安装Oracle数据库或者创建实例时,系统会自动创建2个或
    3个控制文件,每个控制文件记录相同的信息。这样可确保在数据库运行时,如果某个控制文件损坏,
    Oracle会自动使用另外一个控制文件,当所有控制文件都损坏时,系统将不能工作。
  • 为了Oracle系统的安全,建议在系统安装时指定多个控制文件,并将它们存放在不同的磁盘路径
    上。如果一个数据库实例的控制文件太少,建议数据库管理员创建新的控制文件。

下面的例子是查询数据库实例所包含的控制文件路径信息。

select * from v$controlfile;
或者
show parameter CONTROL_FILE
或者
select * from v$parameter where name='control_files';


# 可以看到控制文件默认存在$ORACLE_BASE/安装时设置数据文件存放目录/实例名/ 和 $ORACLE_BASE/安装时设置flash recovery目录/实例名/ 下
SQL> show parameter CONTROL_FILE;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     7
control_files                        string      /data/u01/app/oracle/oradata/z
                                                 ktime/control01.ctl, /data/u01
                                                 /app/oracle/flash_recovery_are
                                                 a/zktime/control02.ctl


添加多个控制文件(多路复用)

方法一(只能在初始化时设置)

通过init.ora文件增加多个不同路径的存储控制文件

vim $ORACLE_HOME/dbs/init.ora


编辑:
control_files = (ora_control1, ora_control2)

control_files = ('/data/u01/app/oracle/oradata/orcl/control01.ctl',
'/data/u01/app/oracle/flash_recovery_area/orcl/control02.ctl',
'/swq/control_file_dir/control03.ctl')



关闭数据库
shutdown immediate


复制一份控制文件

重启实例

方法二(推荐)

sqlplus / as sysdba

SQL> alter system set control_files=
  2  '/data/u01/app/oracle/oradata/orcl/control01.ctl',
  3  '/data/u01/app/oracle/oradata/orcl/control02.ctl',
  4  '/data/u01/app/oracle/oradata/orcl/control03.ctl',
  5  '/data/u01/app/oracle/oradata/orcl/control04.ctl' scope=spfile;
  
-- 里面关闭数据库
SQL> shutdown immediate

# 开一个新的终端,复制一份控制文件为control04.ctl
cp /data/u01/app/oracle/oradata/orcl/control01.ctl /data/u01/app/oracle/oradata/orcl/control04.ctl

# 重新启动数据库
SQL> startup

备份控制文件

alter database backup controlfile to 'PATH'

给控制文件留出足够的硬盘空间

控制文件除了存放数据库信息、数据文件和重做日志等,还存储了大量与管理相关的信息。

比如当oracle 11g中配置了rman并使用,控制文件会存储于备份历史有关的信息。

随着时间推移会不断增长。

控制控制文件的拓展限制参数:

SQL> show parameter control_file_reco;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     7


该参数用于设置控制文件记录RMAN历史备份信息的天数。

posted @ 2023-07-17 12:10  蕝戀  阅读(142)  评论(0编辑  收藏  举报