Oracle11g温习-第七章:redo日志
2013年4月27日 星期六
10:33
|
1、redo (重做) log 的功能: 用于数据恢复 |
|||
|
2、redo log 特征: |
|||
日志组 和 日志文件的状态
日志切换: 1) 归档模式:将历史日志进行保存 ,并产生checkpoint,通知redo log 把对应的 dirty block 从data buffer写入到datafile,并且更新控制文件 2)非归档: 历史日志被覆盖【archive log list 可以查看数据库是否启用归档模式】 与日志相关的的数据字典 V$LOG 查看日志信息(从控制文件读取) V$LOGFILE 查看日志存放的位置
|
|||
|
3、redo 日志组 |
|||
|
1) 最少两组,最好每组有两个成员,并存放到不同的磁盘上,大小相同,互相镜像 2) 日志在写满时发生切换,或 手工切换:alter system switch logfile ; 3) 在归档模式,日志进行归档,并把相关的信息写入controlfile |
|||
|
4、添加日志组 |
|||
|
SQL> startup ORACLE instance started. Total System Global Area 251658240 bytes Fixed Size 1218820 bytes Variable Size 134219516 bytes Database Buffers 113246208 bytes Redo Buffers 2973696 bytes Database mounted. Database opened. SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- 2 1 7 10485760 1 NO CURRENT 381102 02-AUG-11 1 1 6 10485760 1 NO INACTIVE 357157 01-AUG-11 SQL> select group#, member from v$logfile; GROUP# MEMBER ---------- -------------------------------------------------- 2 /u01/app/oracle/oradata/cuug/redo02a.log 1 /u01/app/oracle/oradata/cuug/redo01a.log
SQL> select group#, member from v$logfile ; GROUP# MEMBER ---------- -------------------------------------------------- 2 /u01/app/oracle/oradata/cuug/redo02a.log 1 /u01/app/oracle/oradata/cuug/redo01a.log 3 /u01/app/oracle/oradata/cuug/redo03a.log SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- 1 1 6 10485760 1 NO INACTIVE 357157 01-AUG-11 3 1 0 10485760 1 YES UNUSED 0 ——刚创建的日志组,处于未使用状态,进行日志切换即可 2 1 7 10485760 1 NO CURRENT 381102 02-AUG-11 SQL> alter system switch logfile; 手工切换日志 SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME ---------- ---------- ---------- ---------- ---------- --------- ---------- ------------- ------------------- 1 1 7 104857600 1 NO INACTIVE 215301 2012-03-07 18:02:39 4 1 10 104857600 1 NO CURRENT 238364 2012-03-08 17:14:10 3 1 9 104857600 1 NO ACTIVE 237357 2012-03-08 16:49:45 2 1 8 104857600 1 NO INACTIVE 216223 2012-03-07 18:49:17 |
|||
|
5、添加日志组的成员 |
|||
SQL> select group#, member from v$logfile; GROUP# MEMBER ---------- -------------------------------------------------- 2 /u01/app/oracle/oradata/cuug/redo02a.log 1 /u01/app/oracle/oradata/cuug/redo01a.log 3 /u01/app/oracle/oradata/cuug/redo03a.log SQL> select group#, member from v$logfile order by 1; GROUP# MEMBER ---------- -------------------------------------------------- 1 /u01/app/oracle/oradata/cuug/redo01a.log 1 /disk1/cuug/oradata/redo01b.log 2 /disk1/cuug/oradata/redo02b.log 2 /u01/app/oracle/oradata/cuug/redo02a.log 3 /disk1/cuug/oradata/redo03b.log 3 /u01/app/oracle/oradata/cuug/redo03a.log |
|||
|
6、查看日志信息 |
|||
|
SYS@ prod>select SEQUENCE# ,FIRST_CHANGE#,NEXT_CHANGE# ,to_char(FIRST_TIME ,'yyyy-mm-dd- hh24:mi:ss') from v$log_history; SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# TO_CHAR(FIRST_TIME,' ---------- ------------- ------------ -------------------- 1 446075 474850 2013-01-09- 03:55:23 2 474850 496815 2013-01-09- 03:59:39 3 496815 497931 2013-01-09- 04:02:31 4 497931 497947 2013-01-09- 04:38:17 5 497947 497961 2013-01-09- 04:39:01 6 497961 497971 2013-01-09- 04:39:36 7 497971 497975 2013-01-09- 04:39:58 8 497975 497983 2013-01-09- 04:40:03 9 497983 497986 2013-01-09- 04:40:21 10 497986 498899 2013-01-09- 04:40:25 11 498899 499047 2013-01-09- 05:01:09 12 499047 499055 2013-01-09- 05:02:54 13 499055 531192 2013-01-09- 05:02:58 SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- 1 1 6 10485760 2 NO INACTIVE 357157 01-AUG-11 3 1 0 10485760 2 YES UNUSED 0 2 1 7 10485760 2 NO CURRENT 381102 02-AUG-11 SQL> alter system switch logfile; SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- 1 1 9 10485760 2 NO CURRENT 384007 02-AUG-11 3 1 8 10485760 2 NO ACTIVE 384005 02-AUG-11 2 1 7 10485760 2 NO ACTIVE 381102 02-AUG-11
----------查看生成的日志量 SQL> insert into scott.emp1 select * from scott.emp1; 28 rows created. SQL> insert into scott.emp1 select * from scott.emp1; 56 rows created. ——通过联合查询视图 v$statname ,v$mystat可以查看日志生成量 SYS @ prod >select a.name, b.value/1024/1024 "SIZE: M" from v$statname a,v$mystat b where b.statistic#=a.statistic# and a.name like '%redo size%'; NAME SIZE: M ---------------------------------------------------------------- ---------- redo size .019523621 |
|||
|
7、redo 日志成员重命名或迁移 【只能在mount状态下修改因为mount状态打开了控制文件】一定要确认新的位置有该文件否则报错 总之先改物理位置再改逻辑位置 无法修改日志文件的大小因为日志文件一旦建立就已经被格式化为oracle标准格式 所以无法修改 |
|||
|
SQL> select group#,member from v$logfile order by 1; GROUP# MEMBER ---------- -------------------------------------------------- 1 /u01/app/oracle/oradata/cuug/redo01a.log 1 /disk1/cuug/oradata/redo01b.log 2 /disk1/cuug/oradata/redo02b.log 2 /u01/app/oracle/oradata/cuug/redo02a.log 3 /disk1/cuug/oradata/redo03b.log 3 /u01/app/oracle/oradata/cuug/redo03a.log 6 rows selected. SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. [oracle@oracle ~]$ cp /u01/app/oracle/oradata/cuug/redo01a.log /disk2/cuug/oradata/ [oracle@oracle ~]$ cp /u01/app/oracle/oradata/cuug/redo02a.log /disk2/cuug/oradata [oracle@oracle ~]$ cp /u01/app/oracle/oradata/cuug/redo03a.log /disk2/cuug/oradata [oracle@oracle ~]$ !sql sqlplus '/as sysdba' SQL*Plus: Release 10.2.0.1.0 - Production on Tue Aug 2 05:08:35 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to an idle instance. SQL> startup mount ; ORACLE instance started. Total System Global Area 251658240 bytes Fixed Size 1218820 bytes Variable Size 125830908 bytes Database Buffers 121634816 bytes Redo Buffers 2973696 bytes Database mounted. SQL> select group# ,member from v$logfile order by 1; GROUP# MEMBER ---------- -------------------------------------------------- 1 /u01/app/oracle/oradata/cuug/redo01a.log 1 /disk1/cuug/oradata/redo01b.log 2 /disk1/cuug/oradata/redo02b.log 2 /u01/app/oracle/oradata/cuug/redo02a.log 3 /disk1/cuug/oradata/redo03b.log 3 /u01/app/oracle/oradata/cuug/redo03a.log SQL> alter database rename file '/u01/app/oracle/oradata/cuug/redo01a.log' to '/disk2/cuug/oradata/redo01a.log'; Database altered. SQL> alter database rename file '/u01/app/oracle/oradata/cuug/redo02a.log' to '/disk2/cuug/oradata/redo02a.log'; Database altered. SQL> alter database rename file '/u01/app/oracle/oradata/cuug/redo03a.log' to '/disk2/cuug/oradata/redo03a.log'; Database altered. SQL> select group# ,member from v$logfile order by 1; GROUP# MEMBER ---------- -------------------------------------------------- 1 /disk2/cuug/oradata/redo01a.log 1 /disk1/cuug/oradata/redo01b.log 2 /disk1/cuug/oradata/redo02b.log 2 /disk2/cuug/oradata/redo02a.log 3 /disk1/cuug/oradata/redo03b.log 3 /disk2/cuug/oradata/redo03a.log 6 rows selected. SQL> alter database open; Database altered. SQL> select group# ,member from v$logfile order by 1; GROUP# MEMBER ---------- -------------------------------------------------- 1 /disk2/cuug/oradata/redo01a.log 1 /disk1/cuug/oradata/redo01b.log 2 /disk1/cuug/oradata/redo02b.log 2 /disk2/cuug/oradata/redo02a.log 3 /disk1/cuug/oradata/redo03b.log 3 /disk2/cuug/oradata/redo03a.log 6 rows selected. SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- 1 1 9 10485760 2 NO INACTIVE 384007 02-AUG-11 3 1 8 10485760 2 NO INACTIVE 384005 02-AUG-11 2 1 10 10485760 2 NO CURRENT 385481 02-AUG-11 日志文件 clear 假如主机断电 数据库启动报错该日志组的日志文件损坏必须要保证该日志组的状态不是current Alter database clear logfile group 1; 清空损坏的日志组 就可以打开数据库了打开数据库以后oracle自行创建该组的日志成员 Alter database clear unarchived logfile group 2 ; 此乃当前日志组 报错 该日志组需要归档 |
|||
|
8、日志恢复 |
|||
|
1、多元化成员中,单个组成员丢失(不会影响到数据库的正常运行)(当前组和非当前组的都一样) 解决方法:复制一下就行
、非当前日志组所有成员丢失(数据库打不开,只丢失单个就没影响,全丢失了就无法正常打开数据库) 解决方法:alter database clear logfile group 2 清理该组的所有成员日志即可 (清理一下该日志组的文件信息,因为日志组的状态是inactive,所有的脏块已经写入数据库,这样在启动时就不会进行校验了,此时数据库可以正常启动,当使用到该日志组的时候会自动创建日志组成员)
3、当前日志组丢失(正常关库 shutdown immediate)
|
|||
|
drop |
|||
|
clear |
Oracle11g温习-第七章:redo日志的更多相关文章
- Oracle11g温习-第六章:控制文件
2013年4月27日 星期六 10:33 .控制文件的功能和特点 1) [定义数据库当前物理状态] 2) [维护数据的一致性] 如果控制文件中的检查点与数据文件中的一致,则说明数据一致,可以启动到 ...
- Oracle11g温习-第四章:手工建库
1.create database plan 1.库类型: OLTP : 在线事务处理系统 OLAP : 在线应用处理系统 DSS : 数据决策系统 2.数据库名字及字符集 3. ...
- Oracle11g温习-第八章:归档日志
2013年4月27日 星期六 10:36 1.归档和非归档的区别 1) 归档会在日志切换时,备份历史日志,用于OLTP(在线事务处理系统),可以进行冷备份和热备份,可以实现数据库完全恢复.不完全恢复 ...
- Oracle11g温习-第三章:instance实例管理
2013年4月27日 星期六 10:30 1.instance 功能: 用于管理和访问database. 2.init parameter files :管理实例相关启动参数.位置:$ORACLE ...
- Oracle11g温习-第十三章:索引
2013年4月27日 星期六 10:46 1.索引(Index)的功能:对记录进行排序,加快表的查询速度 2.索引的分类 1)B-tree 索引(默认) a.在一个大表上 b.建立在重复值比较少的 ...
- Oracle11g温习-第五章:数据字典
1.数据字典(Data dictionary)的功能 1) central of oracle database 每个oracle数据库的核心 2) descr ...
- Oracle11g温习-第十七章:权限管理
2013年4月27日 星期六 10:50 1.权限(privilege): [system privilege(系统权限):针对于database 的相关权限 object p ...
- Oracle11g温习-第十一章:管理undo
2013年4月27日 星期六 10:40 1.undo tablespace 功能 undo tablespace 功能:用来存放从datafiles 读出的数据块旧的镜像 [ ...
- perl5 第七章 控制结构
第七章 控制结构 by flamephoenix 一.条件判断二.循环: 1.while循环 2.until循环 3.for循环 4.针对列表(数组)每个元素的foreach循环 5. ...
随机推荐
- 护眼色的RGB值和颜色代码汇总
源: 网上流行护眼色的RGB值和颜色代码汇总 网上流行护眼色的RGB值和颜色代码 在搜索引擎搜“护眼色”,就会搜出一堆关于保护眼睛的屏幕颜色文章,说的统统是一种颜色,有点像绿豆沙的颜色.方法就是在屏幕 ...
- kafka生产者和消费者
在使用kafka时,有时候为验证应用程序,需要手动读取消息或者手动生成消息.这个时候可以借助kafka-console-consumer.sh和kafka-console-producer.sh 这两 ...
- SP211 PRIMIT - Primitivus recurencis(欧拉回路)
SP211 PRIMIT - Primitivus recurencis 欧拉回路 Warning: enormous Input/Output data 警告:巨大的输入/输出 经过若干(11)次提 ...
- P3498 [POI2010]KOR-Beads
P3498 [POI2010]KOR-Beads 题解 hash+hash表+调和级数 关于调和级数(from baidu百科): 调和级数发散的速度非常缓慢.举例来说,调和序列前10项的和还不足10 ...
- 20145322 Exp5 MS11_050
20145322 Exp5 MS11_050 实验过程 msfconsole命令进入控制台 使用命令search ms11_050查看针对MS11_050漏洞的攻击模块 使用命令 use exploi ...
- JS中的按位非(~)的使用技巧
按位非 按位非操作符由一个波浪线(~)表示,执行按位非的结果就是返回数值的反码 现在让我来看几个例子 例子1 console.log(4); console.log(~4); console.log( ...
- JavaScript:值类型 引用类型
JavaScript类型 (1)值类型:数值.布尔值.null.undefined. (2)引用类型:对象.数组.函数. 1.string var str="hongda"; v ...
- newcode wyh的吃鸡(优势队列+BFS)题解
思路: 要用优势队列,因为有的+2,有的+1,所以队列中的步长是不单调的,所以找到一个答案但不一定最小,所以用优势队列把小的放在队首. 要记录状态,所以开了三维,题目和昨天做的那道小明差不多 vis开 ...
- yum第三方安装-软件包没签名及更新错误
yum安装时 后面加 --nogpgcheck 阿里云源文件:http://mirrors.aliyun.com/repo/Centos-7.repo epel repo源:http://mirror ...
- Wireshark无法解析OpenFlow配置协议 解决方法
在使用wireshark对OpenFlow交换机与FlowVisor的通信过程进行抓包分析的时候,在其选项中有openflow_v1选项,但Wireshark竟无法解析OpenFlow协议. 在查阅相 ...