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

  • 相关阅读:
    .NET实现Excel文件的读写 未测试
    权限管理设计
    struts1中配置应用
    POJ 2139 Six Degrees of Cowvin Bacon(floyd)
    POJ 1751 Highways
    POJ 1698 Alice's Chance
    POJ 1018 Communication System
    POJ 1050 To the Max
    POJ 1002 4873279
    POJ 3084 Panic Room
  • 原文地址:https://www.cnblogs.com/gispf/p/3777812.html
Copyright © 2011-2022 走看看