39.控制文件用于记录和维护数据库的物理结构。当启动例程并打开数据库时,Oracle会根据初始化参数control_files在例程和数据库之间建立关联。
装载数据库(MOUNT状态)时,Oracle会按照初始化参数control_files定位并打开控制文件。
打开数据库时,Oracle会根据控制文件所记载的数据文件和重做日志信息,打开所有数据文件和重做日志。
控制文件主要记载了以下信息:
数据库名称
数据文件名称和位置
重做日志名称和位置
表空间名称
当前日志序列号
检查点信息
日志历史信息
RMAN信息
40.控制文件中永久参数
maxinstances:最大例程个数
maxdatafiles:最大数据文件个数
maxlogfiles:最大日志组个数
maxlogmembers:最大日志成员个数
maxloghistory:可记载日志历史的最大个数
使用RMAN执行备份操作时,RMAN备份信息会被记载到控制文件中。初始化参数control_file_record_keep_time指定了RMAN备份信息在控制文件中的
保留时间,其默认值为7.
41.多元化控制文件
使用PFILE多元化控制文件
利用数据字典v$controlfile来获取现有控制文件名字。
正常关闭Oracle数据库,如shutdown或shutdown immediate。
将新的控制文件名添加到参数文件的CONTROL_FILES参数中(pfile文件)。
使用操作系统的复制命令将现有控制文件复制到指定位置。
启动Oracle数据库。
利用数据字典v$controlfile来验证新的控制文件名字是否正确。
使用SPFILE多元化控制文件
利用数据字典v$controlfile来获取现有控制文件的名字。
修改SPFILE,使用alter system set control_files命令来改变控制文件的位置。
正常关闭数据库,如shutdown或shutdown immediate。
使用操作系统的复制命令将现有控制文件复制到指定位置。
启动Oracle数据库。
利用数据字典v$controlfile来验证新的控制文件名字是否正确。
42.备份控制文件
alter database backup controlfile to '/u01/oracle/controlfile.ctl.bk';
alter database backup controlfile to trace;启动一个追踪备份。路径为参数user_dump_des控制的。
基本的格式为sid_ora_pid.trc;---ls -alt;以时间格式显示trc文件
43.建立控制文件
建立控制文件时,要求例程必须处于NOMOUNT状态。正确设置了初始化参数control_files后,启动到nomount状态,并检查初始化参数control_files设置是否正确。建立控制文件时必须提供正确的数据文件和重做日志清单。
create controlfile database demo noresetlogs
logfile
group 1 ‘…redo01.log’ size 10m,
group 2 ‘…redo02.log’ size 10m,
group 3 ‘…redo03.log’ size 10m
datafile
'…system01.dbf’,
'…sysaux01.dbf’,
'…undotbs01.dbf’
character set zhs16gbk;
alter database open;
如果建立控制文件时指定了RESETLOGS选项,那么打开数据库时必须带有该选项。
alter database open resetlogs.
增加临时文件
alter tablespace temp add tempfile ‘…temp.dbf’ size 10485760 reuse autoextend off;
为了修改永久参数DB_NAME、MAXINSTANCES、MAXLOGMEMBERS、MAXLOGFILES、MAXLOGMEMBERS、MAXLOGHISTORY,DBA必须重新建立控制文件。
CREATE CONTROLFILE REUSE DATABASE “DEMO” NORESETLOGS
MAXLOGFILES 10
…..
如果建立控制文件时指定了RESETLOGS选项,那么打开数据库时必须带有该选项。
alter database open resetlogs.
增加临时文件
alter tablespace temp add tempfile ‘…temp.dbf’ size 10485760 reuse autoextend off;
44.修改数据库名称有两种方法:
第一种方法是使用CREATE CONTROLFILE命令重建控制文件。
第二种方法是使用DBNEWID改变数据库名。
建立PFILE文件:SQL>CREATE PFILE FROM SPFILE;
编辑PFILE修改初始化参数DB_NAME
建立临时的SPFILE
CREATE SPFILE='$ORACLE_HOME/dbs/spfiletemp.ora'
from PFILE='$ORACLE_HOME/dbs/initdemo.ora';
关闭Oracle数据库。
启动例程用新spfile。
建立控制文件。因为要修改数据库名称,建立控制文件时必须指定SET DATABASE选项和RESETLOGS选项,因为原有控制文件仍然存在,必须指定REUSE选项覆盖控制文件。
CREATE CONTROLFILE REUSE SET DATABASE “example” RESETLOGS
MAXLOGFILES 16
….
打开数据库ALTER DATABASE OPEN RESETLOGS;
添加临时文件alter tablespace temp add tempfile ‘…temp.dbf’ size 10485760 reuse autoextend off.
通过查询动态性能视图v$controlfile_record_section可以获得控制文件所记载的各部分信息和永久参数设置。
select type,record_size,records_total,records_used from v$controlfile_record_section;