1、 系统从log buffer将日志写出到redo文件的触发条件有哪几种?
1,每三秒钟超时(timeout):
2.阀值的达到:
Redolog buffer 1/3满;
Redolog buffer 拥有 1MB 的脏数据;
参数_log_io_size的设置很重要,一般为log_buffer的1/3大小
3.用户提交:
当一个transaction提交的时候,
4.在DBWR写之前:
2、查询系统undo表空间
SQL> show parameter undo_tablespace
NAME TYPE VALUE
------------------------------------ ----------- -------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
3、创建一个undo表空间,名称为undo2
create undo tablespace undo2 datafile'
undotbs2.dbf' size 100M;
4、将系统undo表空间设置成undo2
alter system set undo_tablespace=undotbs2;
5、查询undo数据默认保留时间
show parameter undo_retention
6、设置undo数据保留时间为1800
altersystem set undo_retention =1800;
7、强制保留undo,如何设置
alter tablespace undo_samll(undo表空间名称) retention guarantee;
8、检查点作用是什么
checkpoint主要2个作用:
1. 保证数据库的一致性,这是指将脏数据写入到硬盘,保证内存和硬盘上的数据是一样的;
2. 缩短实例恢复的时间,实例恢复要把实例异常关闭前没有写出到硬盘的脏数据通过日志进行恢复。如果脏块过多,实例恢复的时间也会很长,检查点的发生可以减少脏块的数量,从而提高实例恢复的时间。
9、有几种检查点,触发条件都是什么?
完全检查点(Normal checkpoint)
· 日志切换,通过ALTER SYSTEM SWITCH LOGFILE。
· DBA发出checkpoint命令,通过ALTER SYSTEMcheckpoint。
· 对数据文件进行热备时,针对该数据文件的checkpoint也会进行,ALTER TABLESPACE TS_NAME BEGIN BACKUP/END BACKUP。
· 当运行ALTER TABLESPACE/DATAFILE READ ONLY的时候。
· SHUTDOWN命令发出时(除去Abort)。
增量检查点(Incremental checkpoint)
· 3秒(只记录DBWR进度,而不记录DBWR写)
· alter tablespace tablespace_name begin backup
altertablespace tablespace_name end backup
· alter tablespace tablespace_name read only;
altertablespace tablespace_name offline normal;
10、如何设置增量检查点
alter system set fast_start_mttr_target=10; meantime to recover
11、如何查询数据库、数据文件和数据文件头记录的检查点的scn号
select checkpoint_change# from v$database
selectcheckpoint_change#,last_change# from v$datafile;
select checkpoint_change# fromv$datafile_header;
12、数据库启动如何判断是否需要恢复,什么情况需要实例恢复,什么情况需要介质恢复?
实例恢复:
查看数据文件头记的数据文件检查点号与数据文件的stop scn是否一致,如果
不一致需要做实例恢复
介质恢复:
查看系统检查点号与数据文件头记的数据文件检查点号是否一致,如果不一致需要做介质恢复
13、查询数据库归档模式
select log_mode from v$database;
14、将数据库置成归档模式
alter database archivelog;
15、如果数据文件损坏,用备份的数据文件恢复,如何判断恢复需要哪些日志文件。
select sequence#,archive_namefrom v$recovery_log;
16、不完全恢复的操作步骤是什么?
1)关闭数据库
shutdown immediate
2)备份
备份数据文件、控制文件和参数文件
3)启动数据库
startup
4)模拟变化
create table test(id number)tablespace users;
insert into test values(100);
commit;
假设scn 10000
insert into test values(200);
commit;
假设scn号 11000
5)关闭数据库
shutdown immediate
6)还原备份的文件
拷贝数据文件
7)做不完全恢复
recover database until change10000;
8)打开数据库
alter database open resetlogs;
17、恢复单个表空间的步骤是什么?
假设users表空间损坏怎么恢复,要求不能关闭数据库。
1) 修改表空间,置成offline
2)还原旧数据文件
3)恢复
4)修改表空间,置成online
SQL> alter tablespace usersoffline;
表空间已更改。
SQL> alter tablespace usersonline;
alter tablespace users online
*
第 1 行出现错误:
ORA-01113: 文件 4 需要介质恢复
ORA-01110: 数据文件 4:'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS0
SQL> recover datafile 4;
完成介质恢复。
SQL> alter tablespace users online;
18、自定义的表空间数据文件损坏且没有备份,如何恢复?
6、数据文件丢失,没有备份
create tablespace test1 datafile
'C:\oracle\product\10.2.0\oradata\orcl\test1.dbf'
size 5M;
create table test1(id number) tablespace test1;
insert into test1 values(100);
commit;
模拟文件丢失,恢复
shutdown immediate
删除test1.dbf
startup
新创建文件
alter database create datafile
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST1.DBF'
as 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST1.DBF' ;
recover datafile 6;
alter database open;
如果文件恢复不了,如何处理
alter database datafile 6 offline drop;
SQL> alter database open;
数据库已更改。
SQL> drop tablespace test1 including contents;
19、闪回分几种?
1、闪回查询(查询过去的某个时间点表中的数据)
2、闪回数据(恢复删除掉的数据)
3、闪回删除(恢复被drop掉的表)
4、闪回版本查询查询表的数据修改(和事务相关)
20、闪回查询语法是什么?模拟练习
从undo读旧数据,
SQL> show parameter undo
undo_retention 900
alter tablespace undotbs1retention guarantee;
create table test(id number);
select sysdate from dual;2011-6-15 9:22:35
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
608248
insert into test values(100);
commit;
GET_SYSTEM_CHANGE_NUMBER
------------------------
608263
insert into test values(200);
commit;
select * from test;
select * from test as of scn 608263;
select * from test as of timestamp
to_timestamp('2011-6-15 9:22:35','yyyy-mm-dd hh24:mi:ss');
21、闪回数据语法是什么?模拟练习
GET_SYSTEM_CHANGE_NUMBER
------------------------
608570
delete from test;
commit;
alter table testenable row movement;
flashback table test to scn 608570;
flashback table test to timestamp xxx;
select * from test;
22、闪回删除语法是什么?模拟练习
drop table test;
select * from recyclebin;
{
--如果使用purge语句,表不在回收站中,不能恢复
purge table test;
drop table test purge;
}
flashback table test to before drop;
select * from test;