8月17

在Oracle数据库中,有一种日志文件叫做重做日志文件,他就是大家俗称的:redolog。在redolog中又分为两种:在线重做日志与归档日志。 ONLINE Redo log 在线重做日志(online redo log )主要用于:Oracle数据库所在服务器突然掉电、突然重启或者执行shutdown abort等命令使得在服务器重新启动之后,Oracle数据库没有办法正常的启动实例。此时,在线重做日志就派上了用场,Oracle会使用在线重做日志,把数据库恢复到服务器掉电前的那一个时刻,从而使得数据库能正常的启动起来 。 在Oracle数据库中,默认情况下,至少会有两个重做日志组,而且每个组里面至少包含了一个重做日志文件。日志组不会自动增加,在一个写满之后,会自动去写下一个。在下一个被写满之后会又从第一个开始写起。 Archive redo log 归档日志(archive log)主要用于硬件级别的错误:磁盘的坏道导致无法读写、写入的失败、磁盘受损导致数据库数据丢失。这就要使用归档日志文件,通过归档日志文件,把数据库恢复到归档日志所在的时间点上然后再通过在线重做日志文件把数据库恢复到当前的时间点上。 对于归档日志文件,可以理解为在线重做日志文件的备份。即当一个重做日志文件被填满了之后,归档日志文件就会把其备份保留一份。(因为上面说了,在线重做日志文件会自动的覆盖)所以,归档日志文件就是旧的在线日志文件的备份。

CURRENT:LGWR当前正在向该重做日志组写入重做数据。 ACTIVE:不再向该重做日志组写入数据,但是恢复实例时仍然需要它。 INACTIVE:不再向该重做日志组写入数据,且恢复实例时也不再需要它。 UNUSED:未被使用的日志组。

alter database clear logfile ... 当日志文件不需要实例恢复也不需要介质恢复也不需要归档 alter database clear unarchived logfile ...  需要归档

alter database clear unarchived logfile ... unrecoverable datafile 需要归档需要恢复

redo log   日志文件

丢失一个成员:

SQL> select GROUP#, MEMBERS from v$log;

SQL> select GROUP#, MEMBER from v$logfile;

SQL> alter database add logfile member ‘/home/oracle/redo01b.log‘ to group 1;

SQL> alter database add logfile member ‘/home/oracle/redo02b.log‘ to group 2;

SQL> alter database add logfile member ‘/home/oracle/redo03b.log‘ to group 3;

SQL> alter system switch logfile;

SQL> alter system switch logfile;

SQL> alter system switch logfile;

故障:

SQL> select group#, status from v$log; 确认current组

$ rm -f /home/oracle/redo02b(当前组是几删几).log 删除current组成员

SQL> alter system switch logfile;

$ vi /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log     查看警告日志。

恢复:

SQL> alter database drop logfile member ‘/home/oracle/redo02b.log‘;

SQL> alter database add logfile member ‘/home/oracle/redo02b.log‘ reuse to group 2;

如果是当前日志组,不能删除成员,只能先切换再修改

丢失inactive日志组:

故障:

SQL> alter system checkpoint;

SQL> select group#, status from v$log; 确认inactive组

SQL> shutdown abort

$ rm -f /home/oracle/redo03b.log /u01/app/oracle/oradata/orcl/redo03.log

$ startup 报错

恢复:

SQL> startup mount

SQL> select group#, status, archived from v$log;

SQL> alter database clear logfile group 3;

SQL> alter database open;

如果日志未归档:

SQL> alter database clear unarchived logfile group 3;

做数据库的全备份

丢失current日志组(正常关闭数据库):

故障:

SQL> select group#, status from v$log; 确认current组

SQL> shutdown immediate

$ rm -f /home/oracle/redo02b.log /u01/app/oracle/oradata/orcl/redo02.log

SQL> startup 报错

恢复:

SQL> startup mount

SQL> select group#, status , archived from v$log;

SQL> alter database clear unarchived logfile group 2;

SQL> alter database open;

做数据库的全备份

丢失current日志组(非正常关闭数据库):一定会丢数据

故障:

RMAN> backup database;

SQL> create table t1(x varchar2(50));

SQL> insert into t1 values (‘after backup, before archived‘);

SQL> commit;

SQL> alter system switch logfile;

SQL> insert into t1 values (‘after backup, after archived, current‘);

SQL> commit;

SQL> insert into t1 values (‘after backup, after archived, current, uncommitted‘);

SQL> alter system checkpoint;

SQL> shutdown abort

$ rm -f /home/oracle/redo03b.log /u01/app/oracle/oradata/orcl/redo03.log

SQL> startup 报错

SQL> select group#, sequence#, status, archived from v$log; 确认日志序号

恢复:

RMAN> run {

startup force mount;

set until sequence 10;

restore database;

recover database;

alter database open resetlogs;}

SQL> select * from t1; 丢失数据

丢失active日志组:

恢复数据块

故障:

SQL> create tablespace tbs01 datafile ‘/home/oracle/tbs01.dbf‘ size 5M;

SQL> create table t1 tablespace tbs01 as select * from dba_objects where rownum<=30000;

RMAN> backup tablespace tbs01;

SQL> alter system flush buffer_cache;

$ dd of=/home/oracle/tbs01.dbf bs=8k conv=notrunc seek=300<<EOF

SQL> select count(*) from t1; 报错

$ dbv file=‘/home/oracle/tbs01.dbf‘     数据库校验    进行检查

恢复:

SQL> select file#, block# from v$database_block_corruption;

RMAN> recover datafile 6 block 300;      块级别的恢复

RMAN> recover corruption list;      恢复损坏列表

DBMS_REPAIR包隔离数据块

rman恢复目录

SQL> show parameter control_file_record_keep_time

用dbca创建数据库rc(不配置em、fra,200M内存,字符集unicode)

或者:

用netca创建主机连接字符串rc指向自身。

rc:

$ sqlplus sys/[email protected] as sysdba

SQL> create tablespace rc_tbs datafile ‘/home/oracle/rc_tbs.dbf‘ size 50M;

SQL> create user rcowner identified by password default tablespace rc_tbs quota unlimited on rc_tbs;

SQL> grant recovery_catalog_owner to rcowner;

$ rman catalog rcowner/[email protected]

RMAN> create catalog;

$ rman target sys/[email protected] catalog rcowner/[email protected]

$ rman target / catalog rcowner/[email protected]

RMAN> register database;

dbca删除rc

Flashback    闪回

功能 依赖组件 相关参数 典型错误

query undo tbs undo_retention dml

version query undo tbs undo_retention dml

flashback table undo tbs undo_retention dml

flashback drop recyclebin recyclebin, freespace drop table

transaction query supplemental log dml

fda flashback archive dml

database flashback log db_flashback_retention_target ddl

sys不允许闪回,创建新用户

SQL> create user user01 identified by password;

SQL> grant dba to user01;

SQL> conn user01/password

flashback query     闪回查询

user01:

SQL> create table t1(x int);

SQL> create index t1_x_idx on t1(x);

SQL> insert into t1 values (1);

SQL> commit;

SQL> select sysdate from dual;

SQL> select dbms_flashback.get_system_change_number from dual;

SQL> delete t1;

SQL> commit;

SQL> select * from t1;

SQL> select * from t1 as of scn 1446069;

SQL> select * from t1 as of timestamp to_timestamp(‘2015-10-28 10:31:54‘, ‘yyyy-mm-dd hh24:mi:ss‘);

SQL> truncate table t1;或alter table t1 move;或收缩数据文件

SQL> select * from t1 as of scn 1446069; 物理结构变化,闪回失败

logminer

flashback version query       版本查询

SQL> create table t1(x int);

SQL> insert into t1 values (1);

SQL> commit;

SQL> update t1 set x=2;

SQL> commit;

SQL> update t1 set x=3;

SQL> commit;

SQL> update t1 set x=4;

SQL> commit;

SQL> select versions_starttime, versions_endtime, versions_xid, versions_operation, x

from t1

versions between scn minvalue and maxvalue

order by versions_starttime;

versions between timestamp to_timestamp(‘2015-10-28 9:00:00‘, ‘yyyy-mm-dd hh24:mi:ss‘) and to_timestamp(‘2015-10-28 10:00:00‘, ‘yyyy-mm-dd hh24:mi:ss‘)

SQL> truncate table t1; 物理结构改变,查询失败

flashback table

SQL> conn user01/password

SQL> create table my_dept(deptno int primary key, dname varchar2(20));

SQL> create table my_emp(empno int primary key, deptno int references my_dept);

SQL> insert into my_dept values (10, ‘sales‘);

SQL> insert into my_emp values (100, 10);

SQL> commit;

SQL> select dbms_flashback.get_system_change_number from dual;

SQL> delete my_emp;

SQL> delete my_dept;

SQL> commit;

SQL> alter table my_dept enable row movement;     行移动功能

SQL> alter table my_emp enable row movement;

SQL> flashback table my_emp to scn 1451706; 失败

SQL> flashback table my_dept to scn 1451706;

SQL> flashback table my_emp to scn 1451706;

SQL> select INDEX_NAME, STATUS from user_indexes where table_name=‘MY_EMP‘;自动维护索引

SQL> select INDEX_NAME, STATUS from user_indexes where table_name=‘MY_DEPT‘;

SQL> truncate table my_emp;

SQL> flashback table my_emp to scn 1451706; 失败

时间: 2024-08-13 12:40:51

8月17的相关文章

【旅行】2月17日 南京 - 日照 451公里自驾过年

一. 行程安排 1. 2月15日 - 16日,出发前准备工作 2. 2月17日 05:00 AM,南京市江宁区太平花苑 出发 - 预计当日13:00 PM抵达 山东省日照市东港区.如下图:     3. 如特殊情况,例如路上堵车,天气情况等,考虑在淮安住宿一晚.2月18日返家. 二. 行程    早上5点半左右出发,离开南京收费站,前方是南京长江四桥.早上路上空荡荡.    路上有大雾,行驶2小时后来到盱眙服务区休息.等待雾小些,同时发现了高速公路提供的Wifi,打发下时间.    春运?  

2017年3月17日下午日志

2017年3月17日下午复习了高等数学,继续观看了张宇高等数学第十二讲教学视频高等数学部分计算题题型数列极限的计算原则和方法,深入学习了夹逼准则题型和解决方法,也叫哪里跑准则,认识了很重要的数学家费马和罗尔极其相关数学史,初步学到费马定理.完成英语单词的背诵.

北京Uber优步司机奖励政策(4月17日)

滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfryf/p/4612609.html 优步奖励低/不挣钱/怎么办?看这里:http://www.cnblogs.com/mfryf/p/4642173.html 打豪车应用:uber详细攻略(附100元优惠码:DL8T6):http://www.cnblogs.com/mfryf/p/4752167.h

2014年8月17日

这周我们在后半周,学习了SASS LESS和Jquery 学习了jquery之后才发现他的强大之处,可以将我们之前使用JS时候,多行代码缩短至几行代码,并且不用考虑兼容性问题,IE  谷歌等浏览器都可以支持, 可是可能是由于新接触jquery,对于jquery还不能熟练的掌握,需要慢慢练习才能熟能生巧. 还有就是自己代码命名和排列太随意了,这个以后要改正,命名不能随意,太随意容易让自己和别人在阅读代码时候,有些不明白代码的含义. 2014年8月17日,布布扣,bubuko.com

Python学习日志9月17日 一周总结

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px "PingFang SC"; color: #000000 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px "Helvetica Neue"; color: #000000; min-height: 12.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; fo

5月17日上午学习日志

2017年5月17日上午把昨天记忆的英语单词的多种词意用自己组句的方法联系起来再记忆一遍,然后再联系真题学10个考研高频词汇,然后再复习昨天的词汇,听外教讲授Eclipse 的课程老师在课堂上给我们展示了第一代计算机的VCR,其实包括计算机的构造,工作原理和运作及其功能等 ,增长了我的见识.再完成扇贝四级单词的打卡.

10月17日的疑问

***10月17日疑难问答*** (1)void和int有什么区别? void代表不返回任何值;int会返回一个整型的值; (2)怎么记录输入时换行的次数? #include<stdio.h> int main( ){ int nc=0; char c; while((c=getchar( )) != EOF) { if(c == '\n') nc++; } printf("%d\n", nc); return 0;} 补充:注:'\0'为终止符,' '为空格,'\n'为换

成都Uber优步司机奖励政策(4月17日)

滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfryf/p/4612609.html 优步奖励低/不挣钱/怎么办?看这里:http://www.cnblogs.com/mfryf/p/4642173.html 打豪车应用:uber详细攻略(附100元优惠码:DL8T6):http://www.cnblogs.com/mfryf/p/4752167.h

滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(4月17日)

滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfryf/p/4612609.html 优步奖励低/不挣钱/怎么办?看这里:http://www.cnblogs.com/mfryf/p/4642173.html 打豪车应用:uber详细攻略(附100元优惠码:DL8T6):http://www.cnblogs.com/mfryf/p/4752167.h

高级学员:2015年10月17日作业

高级学员:2015年10月17日作业: 1.要约.要约邀请.承诺的定义,及你的理解: 2.项目配置管理的任务.P319 3.配置项版本号规则是什么.15.5.2 4.写论文,按要求,摘要不超过400字,正文不超过2750字,请写以下2篇之一:范围管理.成本管理.请任写一篇,另一篇写提纲. 1.要约.要约邀请.承诺的定义,及你的理解: 要约是希望和他人订立合同的意思表示,该意思表示应当符合下列规定:(一)内容具体确定:(二)表明经受要约人承诺,要约人即受该意思表示约束.(投标文件属于要约,乙方想和