oracle参数控制日志三类文件

主要内容来源于<<oracle从入门到精通(视频实战版)>>
初始化参数文件用来约束实例的行为.
控制文件主要用来存放数据库的名字,数据文件的位置等信息.
日志文件主要用来存放数据库中数据变化的操作.


一.初始化参数文件:有文本pfile(init.ora或init<sid>.ora)和二进制spfile(spfile.ora或spfile<sid>.ora)形式.启动选取优先级:spfile<sid>.ora==>spfile.ora==>init<sid>.ora==> init.ora.查询是pfile还是spfile启库:SYS@ora11g>show parameter pfile ,value有值就可认为是spfile启动.


二.控制文件是一个二进制的文件,一个控制文件只属于一个数据库.控制文件在创建数据库时自动创建,当数据库的信息发生改变,控制文件也随之被改变,控制文件不能手动修改,只能由oracle数据库本身自己来修改.在数据库启动和关闭时都要使用控制文件,没控制文件,数据库将无法工作.数据字典是v$controlfile
控制文件:在创建一个数据库和增加或删除表空间等操作,控制文件都会自动更新.按照进程分工来看更新控制文件:日志写入进程(LGWR)负责把当前日志序列号记录到控制文件;检验占进程(CKPT)负责把核验点的信息记录到控制文件;归档进程负责把归档日志的信息记录到控制文件中.控制文件的路径保存在数据库初始化文件
数据库启动时使用那几个控制文件由初始化参数文件决定,查看:SYS@ora11g> select value from v$parameter where name='control_files';
如果是pfile方式启动库:关库->拷贝控制文件->修改pfile的control_files参数值->重新启库.
如果是spfile方式启动库:拷贝控制文件->确保数据库打开状态->运行命令alter system set control_files='文件路径1','文件路径2'...,'文件路径n' scope=spfile;->重启库
控制文件备份:
a.产生二进制文件:SQL> alter database backup controlfile to '/home/oracle/control.bak';
b.产生文本文件:SQL> alter database backup controlfile to trace as '/home/oracle/control.txt';
当控制文件全部损坏或要永久地修改数据库的参数设置时,才考虑手工创建控制文件.


三.日志文件当然也是二进制的,分重做日志文件和归档日志文件两种.重做日志文件主要记录数据库的操作过程.需要恢复数据库时,重做日志文件可以将日志从备份还原的数据库上再执行一遍,以达到数据库的最新状态.oracle运行时有归模式和非归档模式.在非归档模式下,所有的日志文件都写在重做日志文件中,如果重做日志文件写满了,那么就把前面的日志文件覆盖了.在归档模式下,如果重做日志文件全部写满后,就把第一个重做日志文件写入归档日志文件中,再把日志写到第一个重做日志文件中.数据字典v$database,例如:select name,log_mode from v$database;查看数据是不是归档模式来运行.
1.查询日志的存储信息:SQL> select * from v$logfile;
2.查看重做日志工作状态:SQL> select * from v$log;
CURRENT 当前 当前日志非常重要 若当前日志组丢失 系统崩溃恢复时将会丢失数据
UNUSED  未使用
ACTIVE  活动的 说明这组redo记录的条目里关联的脏块没写盘 或者说这组日志在实例恢复时需要
INACTIVE 表明日志条目里关联的脏块已经全部写盘 或者说这组日志实例恢复已经不需要了
3.手工切换日志:SQL> alter system switch logfile;(切换后,再查看重做日志工作状态)
4.查看日志切换信息:SQL> select to_char(FIRST_TIME,'YYYY-MM-DD HH24:MI:SS') FIRST_TIME FROM V$LOG_history;
5.增加日志组:SQL> alter database add logfile group 4 '/u01/app/oracle/oradata/orcl/redo04.log' size 50M;
为现在日志组增加成员:alter database add logfile member '/u01/app/oracle/oradata/orcl/redo05.log' to group 1;
6.删除日志组有以下限制:
a.一个数据库至少2个日志组,不能删除至少于2个日志组 
b.活动或当前日志组不允许删除
c.如果数据库运行在 ARCHIVELOG(归档)模式下,并且未将日志文件组归档,那么无法丢弃该组
d.当删除日志组时,文件没有正真的删除,需要人工删除(OS下去删) 
SQL> alter system checkpoint;
SQL> alter database drop logfile group 1;


删除日志组成员有如下限制:
current不能删,active可以删
最后一个有效成员不能删  
在删除联机重做日志成员时并未删除操作系统文件
SQL> alter database drop logfile member '/u01/oracle/oradata/ora10g/redo02a.log';

你可能感兴趣的:(oracle,控制文件,日志文件,参数文件)