zoukankan      html  css  js  c++  java
  • Oracle课程档案,第十六天

    restore:恢复文件


    recover: 恢复日志


    丢失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; unarchived:未归档
    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/password@rc 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/password@rc
    RMAN> create catalog;
    $ rman target sys/password@orcl catalog rcowner/password@rc

    $ rman target / catalog rcowner/password@rc
    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 闪回表 dept:部门
    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; enable:启用
    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; 失败

  • 相关阅读:
    去掉安装程序被挂起,要重新启动电脑
    为什么要关闭数据库连接,可以不关闭吗?
    读取Excel异常定义了过多字段的解决方法
    关于打开ILDASM的方法
    SQL Server数据类型
    C++的MFC,与C#的.NET
    javascript数据类型
    日志记录组件[Log4net]详细介绍
    Xml的读取
    yield让代码更加简洁
  • 原文地址:https://www.cnblogs.com/awdsjk/p/7391508.html
Copyright © 2011-2022 走看看