oracle数据库的文件是以文件的头64个字节标识文件的属性,并不是以文件名的扩展名为标识的。
控制文件记录了数据库所有的物理信息的二进制文件。
控制文件的本质是所有数据文件头的信息的2倍;
1. 很小的二进制
2. 预先留好固定空间
3. 位置由参数文件中的control_files决定
4. 1-8个 最少1个 一般都是多个 镜像关系
5. 多个镜像关系,容灾,并行读写
6. Mount读
7. Open一直在用
8. 如果坏了必须修复
9.记录数据库的属性和结构
//查看控制文件信息
select TYPE,RECORD_SIZE,RECORDS_TOTAL,RECORDS_USED from v$controlfile_record_section;
//查看控制文件的信息
select * from v$controlfile;
//查询版本号修改控制文件先要清楚的两点:
1、查看参数文件使用的是pfile还是 spfile
方式一:
SQL> select distinct isspecified from v$spparameter; //true使用的是spfile,false使用的是pfile
方式二:
SQL> show parameter spfile //value有值 说明使用spfile,否则使用的是pfile
2、是修改动态还是修改静态参数(control关键字的参数)
SQL> select name,issys_modifiable from v$system_parameter where name like '%control%';
练习1.增加控制文件
control_files参数是静态参数
1. 改参数文件
2. 关库
3. 拷贝正确的控制文件到新的位置
4. 启库
5. 验证
spfile 文件时
第一步:在线修改参数control_files,增加一个新指针!
sys@YIDB>
alter system set control_files='/u01/app/oracle/oradata/demo/control01.ctl','/u01/app/oracle/oradata/demo/control02.ctl' scope=spfile;
第二步:正常停止数据库:
shutdown immediate
第三步:使用现有的控制文件复制出新的控制文件
注:数据库没有关闭时,请不要复制控制文件,否则控制文件的版本会不一致,导致数据库不能开启
cp /u01/app/oracle/oradata/demo/control01.ctl /u01/app/oracle/oradata/demo/control02.ctl
第四步:启动数据库
startup
pfile文件时
第一步:正常停止数据库:
第二步:修改参数文件,添加指针;复制新的控制文件
第三步:启动数据
练习2.减少控制文件
步骤:
1. 修改参数文件中control_files;
2. 关库
3. 开库
确保是二进制
spfile
第一步:在线修改指针
SQL> alter system set control_files='/export/home/oracle/orcl/oradata/demo/control01.ctl' scope=spfile;
第二步:重启后生效
pfile
第一步:关闭数据库
第二步:修改pfile文件
练习3.移动控制文件
--步骤与增加控制文件一样
练习4.控制文件改名
--步骤与增加控制文件一样
练习5:创建控制文件
第一步:获取数据文件、日志文件的路径
SQL> startup mount
SQL> select name from v$datafile;
SQL> select member from v$logfile;
方式一:数据文件和联机日志文件都存在的情况下
SQL> startup nomount
SQL>
create controlfile reuse database demo noresetlogs
maxinstances 8
maxloghistory 1
maxlogfiles 16
maxlogmembers 3
maxdatafiles 100
datafile
'/u01/app/oracle/oradata/demo/system01.dbf',
'/u01/app/oracle/oradata/demo/undotbs01.dbf',
'/u01/app/oracle/oradata/demo/sysaux01.dbf'
logfile
group 1 '/u01/app/oracle/oradata/demo/redo01.log' size 50m,
group 2 '/u01/app/oracle/oradata/demo/redo02.log' size 50m
character set zhs16gbk;
SQL> select status from v$instance; //此时的状态为mount状态
SQL> alter database open;
SQL> alter tablespace temp add tempfile '/u01/app/oracle/oradata/demo/temp01.dbf' reuse;
方式二:数据文件存在,但联机日志文件丢失
SQL> startup nomount
SQL>
create controlfile reuse database demo resetlogs
maxinstances 8
maxloghistory 1
maxlogfiles 16
maxlogmembers 3
maxdatafiles 100
datafile
'/u01/app/oracle/oradata/demo/system01.dbf',
'/u01/app/oracle/oradata/demo/undotbs01.dbf',
'/u01/app/oracle/oradata/demo/sysaux01.dbf'
logfile
group 1 '/u01/app/oracle/oradata/demo/redo01.log' size 50m,
group 2 '/u01/app/oracle/oradata/demo/redo02.log' size 50m
character set zhs16gbk;
SQL> alter database open resetlogs;
SQL> alter tablespace temp add tempfile '/u01/app/oracle/oradata/demo/temp01.dbf' reuse;
alter database backup controlfile to trace as '/home/oracle/1.sql';
导出控制文件
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30024909/viewspace-1344129/ ,如需转载,请注明出处,否则将追究法律责任。