zoukankan      html  css  js  c++  java
  • [转]闪回数据归档测试

    一、测试环境准备:
     
    1、首先创建一个闪回数据归档的表空间,闪回数据归档由一个或多个表空间(或其中的几部分)组成。
    sys@TEST0924> create tablespace fla_tbs1
    2 datafile '/u01/app/oracle/oradata/test0924/fla_tbs01.dbf' size 10M
    3 reuse autoextend on next 640k maxsize 32767M
    4 nologging extent management local segment space management auto
    5 /
     
    Tablespace created.
     
    2、再创建一个undo表空间做测试用
    sys@TEST0924> create undo tablespace undotbs2
    2 datafile '/u01/app/oracle/oradata/test0924/undotbs02.dbf' size 105M
    3 reuse autoextend on next 5120k maxsize 32767M
    4 /
     
    Tablespace created.
     
    3、创建一个archive_admin用户,来作为归档管理员,默认表空间为fla_tbs1。
    sys@TEST0924> create user archive_admin profile default identified by archive_admin
    2 default tablespace fla_tbs1
    3 account unlock
    4 /
     
    User created.
    4、授予这个用户相应的权限
    sys@TEST0924> grant alter session to archive_admin;
     
    Grant succeeded.
     
    sys@TEST0924> grant create database link to archive_admin;
     
    Grant succeeded.
     
    sys@TEST0924> grant create sequence to archive_admin;
     
    Grant succeeded.
     
    sys@TEST0924> grant create session to archive_admin;
     
    Grant succeeded.
     
    sys@TEST0924> grant create synonym to archive_admin;
     
    Grant succeeded.
     
    sys@TEST0924> grant create view to archive_admin;
     
    Grant succeeded.
     
    sys@TEST0924> grant unlimited tablespace to archive_admin;
     
    Grant succeeded.
     
    sys@TEST0924> grant execute on sys.dbms_stats to archive_admin;
     
    Grant succeeded.
     
    sys@TEST0924> grant connect,resource to archive_admin;
     
    Grant succeeded.
     
    环境搭建完毕。
     
    二、授予archive_admin一些闪回数据归档的权限
    授予archive_admin用户管理权限以创建、维护和删除闪回数据归档,以sys用户授予
     
    sys@TEST0924> grant flashback archive administer to archive_admin;
     
    Grant succeeded.
     
    为归档管理员授予FLASHBACK ARCHIVE ADMINISTER系统权限,允许其执行下列语句:
    • CREATE FLASHBACK ARCHIVE
    • ALTER FLASHBACK ARCHIVE
    • DROP FLASHBACK ARCHIVE
     
    三、以archive_admin用户连接数据库
    sys@TEST0924> conn archive_admin/archive_admin
    Connected.
     
    四、创建闪回数据归档。
    archive_admin@TEST0924> create flashback archive fla1 tablespace fla_tbs1 quota 10M retention 1 year
    2 /
     
    Flashback archive created.
     
    使用CREATE FLASHBACK ARCHIVE语句创建闪回数据归档。
    • 可以为系统指定默认的闪回数据归档(可选)。如果省略此选项,则以后仍可以将此闪回数据归档指定为默认选项。
    • 需要提供闪回数据归档的名称。
    • 需要提供闪回数据归档的第一个表空间的名称。
    • 可以确定表空间中闪回数据归档可以使用的最大空间量。默认设置是不受限制。如果第一个表空间中的空间限额不是无限制的,则必须指定该值,否则会引发ORA-55621。
    • 需要提供保留时间(表的闪回数据归档数据的保留天数)。
     
    五、授予HR用户使用fla1归档的权限。
    archive_admin@TEST0924> grant flashback archive on fla1 to hr;
     
    Grant succeeded.
     
    要允许特定用户使用特定闪回数据归档,为归档用户授予对该闪回数据归档的FLASHBACK ARCHIVE对象权限。这样,归档用户可以使用特定闪回数据归档对表启用闪回归档。
    以归档管理员身份执行以下示例:
    GRANT FLASHBACK ARCHIVE ON FLA1 TO HR;
    用户很有可能会使用其它闪回功能。要允许在查询期间访问特定对象,授予对查询涉及的所有对象的FLASHBACK和SELECT权限。
    如果用户需要访问DBMS_FLASHBACK程序包,则需要为他们授予对此程序包的SELECT权限。这样,用户就可以使DBMS_FLASHBACK.ENABLE和DBMS_FLASHBACK.DISABLE过程来启用或禁用闪回数据归档。
     
    六、切换闪回归档用户角色,即HR用户,将employees表启用闪回数据归档。
    archive_admin@TEST0924> conn hr/hr
    Connected.
    hr@TEST0924> alter table employees flashback archive fla1;
     
    Table altered.
     
    七、查看Feeney先生的薪金并为其加薪三次,每次增加1000.
    hr@TEST0924> select employee_id,last_name,salary from employees
    2 where last_name='Feeney';
     
    EMPLOYEE_ID LAST_NAME SALARY
    ----------- ------------------------- ----------
    197 Feeney 3000
     
    hr@TEST0924>
    hr@TEST0924> update employees set salary=salary+1000 where last_name='Feeney';
     
    1 row updated.
     
    hr@TEST0924> commit;
     
    Commit complete.
     
    hr@TEST0924> update employees set salary=salary+1000 where last_name='Feeney';
     
    1 row updated.
     
    hr@TEST0924> commit;
     
    Commit complete.
     
    hr@TEST0924> update employees set salary=salary+1000 where last_name='Feeney';
     
    1 row updated.
     
    hr@TEST0924> commit;
     
    Commit complete.
     
    hr@TEST0924> select employee_id,last_name,salary from employees
    2 where last_name='Feeney';
     
    EMPLOYEE_ID LAST_NAME SALARY
    ----------- ------------------------- ----------
    197 Feeney 6000
     
    八、查询归档表的内部名称
    hr@TEST0924> select * from user_flashback_archive_tables;
     
    TABLE_NAME OWNER_NAME FLASHBACK_ARCHIVE_NAME ARCHIVE_TABLE_NAME STATUS
    ---------- ---------- -------------------- ------------------------- -------------
    EMPLOYEES HR FLA1 SYS_FBA_HIST_76277 ENABLED
     
    九、确保一下查询使用归档表而不是undo区,故将切换undo表空间并删除旧的表空间。
    以sys用户将undotbs2指定为当前表空间。
    hr@TEST0924> conn /as sysdba
    Connected.
    sys@TEST0924> alter system set undo_tablespace=UNDOTBS2;
     
    System altered.
     
    sys@TEST0924> drop tablespace UNDOTBS1;
     
    Tablespace dropped.
     
    十、以hr用户身份,选择在创建闪回数据库归档之后到执行错误DML之前这段时间内的一个时间。
    查看'Feeney'先生在该时间的雇员记录,用所选历史日期替换‘10’ minute,示例格式如下:‘50’ SECOND, ‘10’ DAY, ‘5’ MONTH):
    注意:如果指定了启动闪回数据归档之前的时间,将出现ORA-1466错误。缩短时间间隔,然后重试。
    如果仍然看到薪金为6000,就增加时间间隔再查询。
     
    hr@TEST0924> select employee_id,last_name,salary from employees
    2 as of timestamp (systimestamp - interval '20' minute)
    3 where last_name='Feeney';
     
    EMPLOYEE_ID LAST_NAME SALARY
    ----------- ------------------------- ----------
    197 Feeney 6000
     
    hr@TEST0924> select employee_id,last_name,salary from employees
    2 as of timestamp (systimestamp - interval '30' minute)
    3 where last_name='Feeney';
     
    EMPLOYEE_ID LAST_NAME SALARY
    ----------- ------------------------- ----------
    197 Feeney 3000
     
    十一、作为hr用户,最新的更新是错误的。要还原到所选历史日期的原始值(例如,三十分钟钱)
    hr@TEST0924> update employees
    2 set salary=(select salary from employees as of timestamp (systimestamp - interval '30' minute) where last_name='Feeney')
    3 where last_name='Feeney';
     
    1 row updated.
     
    hr@TEST0924> select salary from employees where last_name='Feeney';
     
    SALARY
    ----------
    3000
     
    hr@TEST0924> commit;
     
    Commit complete.
     
     
    十二、以sys用户连接数据库,查看可用的数据字典视图:
     
    sys@TEST0924> select table_name from dict where table_name like upper('%flashback_archive%');
     
    TABLE_NAME
    ------------------------------
    DBA_FLASHBACK_ARCHIVE
    DBA_FLASHBACK_ARCHIVE_TABLES
    DBA_FLASHBACK_ARCHIVE_TS
    USER_FLASHBACK_ARCHIVE
    USER_FLASHBACK_ARCHIVE_TABLES
     
    查看DBA_FLASHBACK_ARCHIVE
    sys@TEST0924> desc DBA_FLASHBACK_ARCHIVE
    Name Null? Type
    ----------------------------------------------------- -------- ------------------------------------
    OWNER_NAME VARCHAR2(30)
    FLASHBACK_ARCHIVE_NAME NOT NULL VARCHAR2(255)
    FLASHBACK_ARCHIVE# NOT NULL NUMBER
    RETENTION_IN_DAYS NOT NULL NUMBER
    CREATE_TIME TIMESTAMP(9)
    LAST_PURGE_TIME TIMESTAMP(9)
    STATUS VARCHAR2(7)
     
    sys@TEST0924> select OWNER_NAME,FLASHBACK_ARCHIVE_NAME,CREATE_TIME,STATUS,RETENTION_IN_DAYS from DBA_FLASHBACK_ARCHIVE;
     
    OWNER_NAME FLASHBACK_ARCHIVE_NAME CREATE_TIME STATUS RETENTION_IN_DAYS
    --------------- ------------------------- ----------------------------------- ------- -----------------
    ARCHIVE_ADMIN FLA1 01-OCT-13 05.09.38.000000000 PM 365
     
    查询DBA_FLASHBACK_ARCHIVE_TS
    sys@TEST0924> desc DBA_FLASHBACK_ARCHIVE_TS
    Name Null? Type
    ----------------------------------------------------- -------- ------------------------------------
    FLASHBACK_ARCHIVE_NAME NOT NULL VARCHAR2(255)
    FLASHBACK_ARCHIVE# NOT NULL NUMBER
    TABLESPACE_NAME NOT NULL VARCHAR2(30)
    QUOTA_IN_MB VARCHAR2(40)
     
    sys@TEST0924> select * from DBA_FLASHBACK_ARCHIVE_TS;
     
    FLASHBACK_ARCHIVE_NAME FLASHBACK_ARCHIVE# TABLESPACE_NAME QUOTA_IN_MB
    ------------------------- ------------------ ------------------------------ ---------------
    FLA1 1 FLA_TBS1 10
     
     
    查询DBA_FLASHBACK_ARCHIVE_TABLES
    sys@TEST0924> desc DBA_FLASHBACK_ARCHIVE_TABLES
    Name Null? Type
    ----------------------------------------------------- -------- ------------------------------------
    TABLE_NAME NOT NULL VARCHAR2(30)
    OWNER_NAME NOT NULL VARCHAR2(30)
    FLASHBACK_ARCHIVE_NAME NOT NULL VARCHAR2(255)
    ARCHIVE_TABLE_NAME VARCHAR2(53)
    STATUS VARCHAR2(13)
     
    sys@TEST0924> select * from DBA_FLASHBACK_ARCHIVE_TABLES;
     
    TABLE_NAME OWNER_NAME FLASHBACK_ARCHIVE_NAME ARCHIVE_TABLE_NAME STATUS
    ------------------------------ --------------- ------------------------- -------------------- -------------
    EMPLOYEES HR FLA1 SYS_FBA_HIST_76277 ENABLED
     
    以用户的身份来查询,同sys_*一样
    hr@TEST0924> select table_name from dict where table_name like '%FLASHBACK_ARCHIVE%';
     
    TABLE_NAME
    ------------------------------
    USER_FLASHBACK_ARCHIVE
    USER_FLASHBACK_ARCHIVE_TABLES
     
    十三、闪回数据归档维护
    以archive_admin用户来实验
    hr@TEST0924> conn archive_admin/archive_admin
    Connected.
    archive_admin@TEST0924>
     
    1、超过保留时间,将自动清除闪回数据归档中的数据。也可以使用以下命令来显示清除数据。
    清除两分钟以前的数据:
    archive_admin@TEST0924> alter flashback archive fla1 purge before timestamp(systimestamp - interval '2' minute);
     
    Flashback archive altered.
     
    2、添加另一个表孔家用于增加闪回数据归档空间
     
    archive_admin@TEST0924> conn /as sysdba
    Connected.
    sys@TEST0924> create tablespace fla_tbs2
    2 datafile '/u01/app/oracle/oradata/test0924/fla_tbs02.dbf'
    3 size 10M reuse autoextend on next 640K maxsize 32767M
    4 nologging extent management local segment space management auto
    5 /
     
    Tablespace created.
     
    3、作为archive_admin用户,将5MB的fla_tbs2表空间添加到fla1闪回数据归档。
    sys@TEST0924> conn archive_admin/archive_admin
    Connected.
    archive_admin@TEST0924> alter flashback archive fla1 add tablespace fla_tbs2 quota 5M;
     
    Flashback archive altered.
     
    4、一个特定闪回数据归档中的所有表都具有相同的保留时间。
    将fla1闪回数据归档的保留时间更改为2年。
    archive_admin@TEST0924> alter flashback archive fla1 modify retention 2 year;
     
    Flashback archive altered.
     
     
    十四、以 ARCHIVE_ADMIN 用户身份,删除 FLA1 闪回数据归档。
    注:删除闪回数据归档也会删除内部防篡改历史记录表。由于审计和安全的要求,无法直接删除此表。由于表空间可能包含其它数据,因此删除闪回数据归档不会删除它所在的表空间。
    archive_admin@TEST0924> DROP FLASHBACK ARCHIVE fla1;
    Flashback archive dropped.

    http://blog.csdn.net/rlhua/article/details/12222819

  • 相关阅读:
    DragDrop 注册失败的问题
    《精通.NET互操作:P/Invoke,C++ Interop和COM Interop》推荐的工具列表
    勇于探索,及时总结,拥有自信!个人工作感受总结篇……
    C#4.0新特性对.NET互操作的影响(转载)
    UCHome: IP控制
    UCHome: SQL注入式攻击
    Windows下Cygwin模拟GCC开发
    序列化和反序列化
    UCHome: 解读common.php(转)
    UCHome: 提交检查
  • 原文地址:https://www.cnblogs.com/gispf/p/3777812.html
Copyright © 2011-2022 走看看