最近要接手公司的Oracle (ERP EBS)系统,项目小组给了几个日常运维的课题,让我去完成。于是就想着能不能尝试写点东西,来完善下自己的知识库,此第一个课题包括oracle控制文件的各种管理方法 ,包括查看控制文件,增加控制文件,移动控制文件,还原控制文件,删除控制文件等
1、查看控制文件,目前公司的生产环境,开发环境,uat 环境,各种环境启动参数的方法各不相同
有些通过spfile管理,有些通过 init.ora管理 , 首先确认下环境的启动参数方式,不通的启动方式,控制文件的管理也不尽相同
通过init.ora方式 测试环境
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string
通过spfile方式 生产环境
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/prod/db/12.1.0/dbs/spfile
PROD.ora
查看目前控制文件的情况
SQL> show parameter control_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u01/test/db/data/cntrl01.dbf,
/u01/test/db/data/cntrl02.dbf
, /u01/test/db/data/cntrl03.db
f
1、增加控制文件
如果是init.ora控制,则直接在init.ora 上添加
control_files = /u01/test/db/data/cntrl01.dbf,/u01/test/db/data/cntrl02.dbf,/u01/test/db/data/cntrl03.dbf,/u01/test/db/data/cntrl04.dbf
在关闭 数据库的情况下,cp 一个新的控制文件 cntrl04.dbf
cp /u01/test/db/data/cntrl03.dbf /u01/test/db/data/cntrl04.dbf
然后启动数据库 ,查看控制文件是否添加 成功
SQL> startup
SQL> show parameter control_file
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u01/test/db/data/cntrl01.dbf,
/u01/test/db/data/cntrl02.dbf
, /u01/test/db/data/cntrl03.db
f, /u01/test/db/data/cntrl04.d
bf
采用spfile方式的数据库,则通过
SQL> alter system set control_files='/u01/test/db/data/cntrl01.dbf','/u01/test/db/data/cntrl02.dbf','/u01/test/db/data/cntrl03.dbf,'/u01/test/db/data/cntrl04.dbf' scope=spfile;
关闭数据库
SQL> shutdown immediate
也需要cp 新的控制文件 , cp控制文件需要在关数据库的时候操作
$ cp /u01/test/db/data/cntrl03.dbf /u01/test/db/data/cntrl04.dbf
删除、移动控制文件和增加控制文件很类似,无非就是alter 或修改init.ora到不同的值和位置
控制文件的还原操作 之我的理解
一般控制文件会采用自动备份的方式 ,其中需要更新下rman的配置,这样在每次控制文件变更的时候,oracle就会自动为系统备份好控制文件
确认下备份配置
SQL> host rman target / #连接到rman
Recovery Manager: Release 12.1.0.2.0 - Production on Wed Jun 10 17:25:26 2020
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
connected to target database: TEMP
查看目前rman 的备份配置
RMAN> show all;
using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name TEMP are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'HIGH' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE;
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/test/db/12.1.0/dbs/snapcf_TEMP.f'; # default
配置自动备份选项
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; #对,就这个命令
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored
不过这样配置后, 需要恢复的时候, 需要启动到nomount状态 再执行 restore controlfile from autobackup; 恢复控制文件, 就是这么操作
有错误的话,希望留言指正