Oracle 培训笔记 8.27 redo undo checkpoint
来源:互联网 发布:excel数据分析pdf 编辑:程序博客网 时间:2024/05/17 05:00
1、redo
--查看日志组
select * from v$log;
members: 日志组成员数
archived: 归档,写满的日志的备份
status:
active:实例恢复需要
inactive:实例恢复不需要
current:当前正在用的
unused:还没有使用到的
first_change#
表示系统从哪个点开始日志记录在这个文件
scn:system change number
select current_scn from v$database;
select dbms_flashback.get_system_change_number from dual;
--查看日志
select * from v$logfile;
STATUS 列的常见值:
INVALID 表明该文件不可访问。
STALE 表明该文件内容不完全,例如正在添加一个日志文件成员。
DELETED 表明该文件已不再使用。
In general, the stale status of a redo log member should not be a cause
for great concern, unless you observe that this happens frequently or
systematically. Keep in mind that a stale log is not necessarily an
invalid log, but more of an "in-doubt" one. Once the corresponding redo
group becomes the current one again, the stale status will go away by
itself.
--查看日志历史
select * from v$log_history;
日志操作
--删除日志组
select * from v$log;
alter database drop logfile group 1;
--增加日志组
alter database add logfile group 1
('E:\oracle\product\10.2.0\oradata\mydb\redo0101.log','E:\oracle\product\10.2.0\oradata\mydb\redo0102.log') size 20M;
--删除增加第2组
alter database drop logfile group 2;
alter database add logfile group 2
('E:\oracle\product\10.2.0\oradata\mydb\redo0201.log','E:\oracle\product\10.2.0\oradata\mydb\redo0202.log') size 2000M;
--删除增加第3组
手动切换日志
alter system switch logfile;
手动触发检查点
alter system checkpoint;
alter database drop logfile group 3;
alter database add logfile group 3
('E:\oracle\product\10.2.0\oradata\mydb\redo0301.log','E:\oracle\product\10.2.0\oradata\mydb\redo0302.log') size 20M;
--redo日志缓冲区刷新
1)日志内容满1M
2)日志内容满日志缓冲区1/3
3)每3秒
4)有提交
2、undo
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ----------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
alter system set undo_tablespace=xxx;
alter tablespace xxxx retention guarantee;
select * from v$undostat; 每10分钟
select max(undoblks)*900*8/600 from v$undostat;
3、logminer
数据库保护
dataguard
stream
参数设置
shutdown immediate
startup mount
alter database force logging;
alter database add supplemental log data;
alter system set utl_file_dir='d:\logmnr' scope=spfile;
alter database open;
--创建表
create table t01(id number);
--生成数据字典
begin
dbms_logmnr_d.build(dictionary_filename =>'dict.ora',dictionary_location =>'d:\logmnr');
end;
--增加要挖掘的日志
select * from v$log;
begin
--dbms_logmnr.remove_logfile(LogFileName => 'E:\oracle\product\10.2.0\oradata\mydb\redo0101.log');
dbms_logmnr.add_logfile(LogFileName => 'E:\oracle\product\10.2.0\oradata\mydb\redo0101.log');
end;
select * from v$logmnr_logs;
--挖掘日志
alter system switch logfile;
alter system switch logfile;
begin
dbms_logmnr.start_logmnr(DictFileName =>'d:\logmnr\dict.ora');
end;
--结束
begin
dbms_logmnr.end_logmnr;
end;
--查看
select * from v$logmnr_contents where table_name='T01'
--模拟数据变化
insert into t01 values(100);
commit;
4、checkpoint检查点
select checkpoint_change# from v$database; //781185
select checkpoint_change#,last_change# from v$datafile;
781185,
上两个视图信息来源于控制文件
select checkpoint_change# from v$datafile_header;
781185
上两个视图信息来源于数据文件
数据库启动
1)判断控制文件中数据文件检查点号与数据文件中记录的检查点号是否一致,
数据库认为数据文件是旧的,需要介质恢复
2)判断控制文件中数据文件检查点号与控制文件中记录的数据文件的最后改变号
是否一致,需要实例恢复
练习:
正常关闭数据库,启动到mount状态,看上述3个查询信息
异常关闭数据库,启动到mount状态,看上述3个查询信息
检查点分类
1)完全检查点
发生条件:关闭数据库(shutdown abort除外)
alter system checkpoint;
2)部分检查点
部分数据文件发生检查点。
alter tablespace users offline;
alter tablespace users read only;
alter tablespace users begin backup;
3)增量检查点
select * from v$log;
--增加大日志
alter database add logfile group 1
('E:\oracle\product\10.2.0\oradata\mydb\redo01.log') size 1000M;
alter database add logfile group 2
('E:\oracle\product\10.2.0\oradata\mydb\redo02.log') size 1000M;
alter database add logfile group 3
('E:\oracle\product\10.2.0\oradata\mydb\redo03.log') size 1000M;
--创建大表,模拟大量操作
drop table t01 purge;
create table t01 tablespace users as select * from dba_objects;
insert into t01 select * from t01;
commit;
select * from v$log;
update t01 set object_name='kkkkkkkkkkkkkkkkkkkk';
--观察v$log
15:56:58 SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- --------------
1 1 32 1048576000 1 NO ACTIVE
802578 27-8月 -11
2 1 33 1048576000 1 NO ACTIVE
885334 27-8月 -11
3 1 34 1048576000 1 NO CURRENT
982930 27-8月 -11
当出现2个active和1个current, 异常关闭数据库,观察启动需要时间
shutdown abort
set time on
startup
--设置增量检查点参数
SQL> show parameter fast_start
NAME TYPE VALUE
------------------------------------ ----------- --------
fast_start_mttr_target integer 0
SQL> alter system set fast_start_mttr_target=15;
--查询相关视图
select * from v$instance_recovery;
select * from v$mttr_target_advice;
--模拟大量操作,观察日志状态
当current变为active,观察停留时间
异常关闭数据库,观察启动需要时间
shutdown abort
set time on
startup
确认启动时间和参数fast_start_mttr_target值
检查点进程:ckpt
作用:通知dbwr写数据;更新控制文件和数据文件头。
--查看日志组
select * from v$log;
members: 日志组成员数
archived: 归档,写满的日志的备份
status:
active:实例恢复需要
inactive:实例恢复不需要
current:当前正在用的
unused:还没有使用到的
first_change#
表示系统从哪个点开始日志记录在这个文件
scn:system change number
select current_scn from v$database;
select dbms_flashback.get_system_change_number from dual;
--查看日志
select * from v$logfile;
STATUS 列的常见值:
INVALID 表明该文件不可访问。
STALE 表明该文件内容不完全,例如正在添加一个日志文件成员。
DELETED 表明该文件已不再使用。
In general, the stale status of a redo log member should not be a cause
for great concern, unless you observe that this happens frequently or
systematically. Keep in mind that a stale log is not necessarily an
invalid log, but more of an "in-doubt" one. Once the corresponding redo
group becomes the current one again, the stale status will go away by
itself.
--查看日志历史
select * from v$log_history;
日志操作
--删除日志组
select * from v$log;
alter database drop logfile group 1;
--增加日志组
alter database add logfile group 1
('E:\oracle\product\10.2.0\oradata\mydb\redo0101.log','E:\oracle\product\10.2.0\oradata\mydb\redo0102.log') size 20M;
--删除增加第2组
alter database drop logfile group 2;
alter database add logfile group 2
('E:\oracle\product\10.2.0\oradata\mydb\redo0201.log','E:\oracle\product\10.2.0\oradata\mydb\redo0202.log') size 2000M;
--删除增加第3组
手动切换日志
alter system switch logfile;
手动触发检查点
alter system checkpoint;
alter database drop logfile group 3;
alter database add logfile group 3
('E:\oracle\product\10.2.0\oradata\mydb\redo0301.log','E:\oracle\product\10.2.0\oradata\mydb\redo0302.log') size 20M;
--redo日志缓冲区刷新
1)日志内容满1M
2)日志内容满日志缓冲区1/3
3)每3秒
4)有提交
2、undo
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ----------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
alter system set undo_tablespace=xxx;
alter tablespace xxxx retention guarantee;
select * from v$undostat; 每10分钟
select max(undoblks)*900*8/600 from v$undostat;
3、logminer
数据库保护
dataguard
stream
参数设置
shutdown immediate
startup mount
alter database force logging;
alter database add supplemental log data;
alter system set utl_file_dir='d:\logmnr' scope=spfile;
alter database open;
--创建表
create table t01(id number);
--生成数据字典
begin
dbms_logmnr_d.build(dictionary_filename =>'dict.ora',dictionary_location =>'d:\logmnr');
end;
--增加要挖掘的日志
select * from v$log;
begin
--dbms_logmnr.remove_logfile(LogFileName => 'E:\oracle\product\10.2.0\oradata\mydb\redo0101.log');
dbms_logmnr.add_logfile(LogFileName => 'E:\oracle\product\10.2.0\oradata\mydb\redo0101.log');
end;
select * from v$logmnr_logs;
--挖掘日志
alter system switch logfile;
alter system switch logfile;
begin
dbms_logmnr.start_logmnr(DictFileName =>'d:\logmnr\dict.ora');
end;
--结束
begin
dbms_logmnr.end_logmnr;
end;
--查看
select * from v$logmnr_contents where table_name='T01'
--模拟数据变化
insert into t01 values(100);
commit;
4、checkpoint检查点
select checkpoint_change# from v$database; //781185
select checkpoint_change#,last_change# from v$datafile;
781185,
上两个视图信息来源于控制文件
select checkpoint_change# from v$datafile_header;
781185
上两个视图信息来源于数据文件
数据库启动
1)判断控制文件中数据文件检查点号与数据文件中记录的检查点号是否一致,
数据库认为数据文件是旧的,需要介质恢复
2)判断控制文件中数据文件检查点号与控制文件中记录的数据文件的最后改变号
是否一致,需要实例恢复
练习:
正常关闭数据库,启动到mount状态,看上述3个查询信息
异常关闭数据库,启动到mount状态,看上述3个查询信息
检查点分类
1)完全检查点
发生条件:关闭数据库(shutdown abort除外)
alter system checkpoint;
2)部分检查点
部分数据文件发生检查点。
alter tablespace users offline;
alter tablespace users read only;
alter tablespace users begin backup;
3)增量检查点
select * from v$log;
--增加大日志
alter database add logfile group 1
('E:\oracle\product\10.2.0\oradata\mydb\redo01.log') size 1000M;
alter database add logfile group 2
('E:\oracle\product\10.2.0\oradata\mydb\redo02.log') size 1000M;
alter database add logfile group 3
('E:\oracle\product\10.2.0\oradata\mydb\redo03.log') size 1000M;
--创建大表,模拟大量操作
drop table t01 purge;
create table t01 tablespace users as select * from dba_objects;
insert into t01 select * from t01;
commit;
select * from v$log;
update t01 set object_name='kkkkkkkkkkkkkkkkkkkk';
--观察v$log
15:56:58 SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- --------------
1 1 32 1048576000 1 NO ACTIVE
802578 27-8月 -11
2 1 33 1048576000 1 NO ACTIVE
885334 27-8月 -11
3 1 34 1048576000 1 NO CURRENT
982930 27-8月 -11
当出现2个active和1个current, 异常关闭数据库,观察启动需要时间
shutdown abort
set time on
startup
--设置增量检查点参数
SQL> show parameter fast_start
NAME TYPE VALUE
------------------------------------ ----------- --------
fast_start_mttr_target integer 0
SQL> alter system set fast_start_mttr_target=15;
--查询相关视图
select * from v$instance_recovery;
select * from v$mttr_target_advice;
--模拟大量操作,观察日志状态
当current变为active,观察停留时间
异常关闭数据库,观察启动需要时间
shutdown abort
set time on
startup
确认启动时间和参数fast_start_mttr_target值
检查点进程:ckpt
作用:通知dbwr写数据;更新控制文件和数据文件头。
- Oracle 培训笔记 8.27 redo undo checkpoint
- oracle redo checkpoint
- oracle redo undo
- oracle redo 和undo
- Oracle Redo and Undo
- ORACLE UNDO和REDO
- Oracle Undo & Redo
- oracle redo undo
- Oracle redo undo
- 《Oracle编程艺术》学习笔记(18)-REDO和UNDO
- 《Oracle编程艺术》学习笔记(18)-REDO和UNDO
- Oracle Core 学习笔记一 -- Redo 和 Undo 机制详解
- Oracle Core 学习笔记一 -- Redo 和 Undo 机制详解
- oracle笔记整理2——redo与undo
- oracle 的redo和undo
- oracle 的redo和undo
- Oracle undo和redo浅析
- Oracle的REDO和UNDO
- pku3294-后缀树组-3
- 用.Net开发Windows服务初探
- oracle中判断一个字符串是否全部为数字的函数-translate
- C#的基本概念
- 远程加载与卸载DLL
- Oracle 培训笔记 8.27 redo undo checkpoint
- windows下安装,配置gcc编译器
- oracle 培训笔记 约束
- js操作dom
- linux中模块的编写
- java线程机制
- FIFO 两个进程同时写同一个FIFO
- IOS拉伸圆角图片
- 缩略图算法