Oracle Database 12c中引入了 In-Database Archiving的新特性, 该特性允许用户通过对表上的数据行标记为inactive不活跃的,以归档数据。 这些inactive的数据行可以通过压缩进一部优化,且对应用来说默认不可见。该特性可以对现有代码做最少改动的情况下,实现了这种“标记删除”的功能和需求。

12c之前:
有些应用有“标记删除”的概念,即不是删除数据,而是数据依然保留在表中,只是对应用不可见而已。这种需求通常通过如下方法实现:
1)  给相关表增加一个另外的列,该列存储标志数据被删除的标记。
2)  给每个语句增加一个谓词,检查被删除行的状态,像:“WHERE deleted = 'N'”,以便排除被删除行。 谓词能被硬编码进SQL语句中,或动态应用类似VPD的安全策略。

12c之后:
1.   开启数据库内归档
ROW ARCHIVAL子句被用来开启数据库内归档。该子句可以用在创建表时用在CREATE TABLE中,也可以在表创建后用在ALTER TABLE中。

--创建表并开启数据库内归档特性
SQL>grant select on dba_objects to c##andy container=all;
SQL> conn c##andy/andy
Connected.
SQL>create table ida as select object_name,object_id from dba_objects where 1=2;
SQL>insert into ida select object_name,object_id from dba_objects order by object_id fetch first 10 percent rows only;
7281 rows created.
SQL> alter table ida ROW ARCHIVAL; 或者在建表的时候指定 create table (XXX) ROWARCHIVAL;
Table altered.
--检查表内容
SQL>SELECT COUNT(*) FROM ida;
  COUNT(*)
----------
      7281
SQL> desc ida;
 Name   Null?    Type
 ----------------------------------------- -------- ----------------------------
 OBJECT_NAME    VARCHAR2(128)
 OBJECT_ID    NUMBER

开启数据库内归档特性将会引起表另外增加一个叫做“ORA_ARCHIVE_STATE”系统隐藏列。
SQL>
COL column_name FORMAT A20;
COL data_type FORMAT A20;
SELECT column_id,
column_name,
data_type,
data_length,
hidden_column
FROM user_tab_cols
WHERE table_name = 'IDA'
ORDER BY column_id;
COLUMN_ID COLUMN_NAME DATA_TYPE    DATA_LENGTH HID
---------- -------------------- -------------------- ----------- ---
1 OBJECT_NAME VARCHAR2     128 NO
2 OBJECT_ID NUMBER      22 NO
  SYS_NC00003$ RAW     126 YES
  ORA_ARCHIVE_STATEVARCHAR2    4000 YES

默认的,该列的每行被填充为‘0’。
SQL>
COL ora_archive_state FORMAT A20;
SELECT ora_archive_state,COUNT(*)
FROM ida
GROUP BY ora_archive_state
ORDER BY ora_archive_state;
ORA_ARCHIVE_STATE      COUNT(*)
-------------------- ----------
0   7281

2.   归档(删除)的行
并非删除不需要的行,而是把ORA_ARCHIVE_STATE系统隐藏列的值更改为‘1’。这将导致应用看不到这些行。
SQL>
UPDATE ida
SET ora_archive_state ='1'
WHERE object_id>7000;
284 rows updated.
SQL>COMMIT;

SQL>SELECT COUNT(*) FROM ida; 
  COUNT(*)
----------
      6997  > 已经出现隐藏列了

3.   显示归档行
通过将ROW_ARCHIVAL_VISIBILITY设置为ALL,可以使得这些隐藏行对会话可见。将该参数设置回ACTIVE可以再次使这些行不可见。
--使归档的行可见
SQL>ALTER SESSION SET ROW ARCHIVAL VISIBILITY = ALL;
SQL>SELECT COUNT(*) FROM ida;
  COUNT(*)
----------

7281     > 隐藏行对会话可见

--使归档行再次不可见
SQL>ALTER SESSION SET ROW ARCHIVAL VISIBILITY = ACTIVE;

SQL>SELECT COUNT(*) FROM ida;
  COUNT(*)
----------
      6997    > 隐藏行对会话不可见

--禁用并重新开启数据库内归档特性
SQL>ALTER TABLE ida NO ROW ARCHIVAL;
SQL>ALTER TABLE ida ROW ARCHIVAL;

转载于:https://www.cnblogs.com/andy6/p/6832249.html

Oracle 12c 新特性之 数据库内归档(In-Database Archiving)相关推荐

  1. oracle12c 清理归档,Oracle 12c中数据删除(delete)新特性之数据库内归档功能

    有些应用有"标记删除"的概念,即不是删除数据,而是数据依然保留在表中,只是对应用不可见而已.这种需求通常通过如下方法实现: 1)  给相关表增加一个另外的列,该列存储标志数据被删除 ...

  2. Oracle 12c新特性-多租户的维护管理

    云和恩墨技术专家 现就职于云和恩墨,为某省电信公司数据库运维服务:在IT行业拥有10年以上的工作经历.擅长 ORACLE 数据库运维管理.shell 脚本开发:长期服务于电信.金融,政府行业:具有丰富 ...

  3. 【云和恩墨大讲堂】高凯 | Oracle 12c 新特性-多租户的维护管理

    "云和恩墨大讲堂" 线上课程周四晚继续开讲.本期我们邀请的嘉宾是云和恩墨西北区技术专家 - 高凯,在这里跟大家分享一下 Oracle 12c 新特性方面的主题.课程以图文形式在微信 ...

  4. Oracle 12c新特性--LREG进程专门负责注册实例服务

    Oracle 12c引入了一些大量的新特性,数据库隐藏参数12.2比11.2就多了2000多个, 同时对之前版本的结构也发生了一些变化,虽然不如有些特性像temporary undo\immemory ...

  5. oracle 12c undo,Oracle 12c 新特性之临时Undo--temp_undo_enabled

    Oracle 12c 新特性之临时Undo--temp_undo_enabled 每个 Oracle 数据库包含一组与系统相关的表空间,例如 SYSTEM , SYSAUX , UNDO&TE ...

  6. Oracle 21C 新特性:数据泵相关新特性汇总

    墨墨导读:本文来自墨天轮用户"JiekeXu"投稿,墨天轮主页:https://www.modb.pro/u/434,本文分享Oracle 21c 新特性:数据泵相关新特性汇总. ...

  7. Oracle 12C 新特性之扩展数据类型(extended data type)

    Oracle 12C 新特性-扩展数据类型,在12c中,与早期版本相比,诸如VARCHAR2, NAVARCHAR2以及 RAW这些数据类型的大小会从4K以及2K字节扩展至32K字节.只要可能,扩展字 ...

  8. oracle12c 新增维护时间窗口,ORACLE 12C新特性-自动维护全局索引 | 信春哥,系统稳,闭眼上线不回滚!...

    今天在网上看了一篇关于12C新特性-自动维护全局索引的帖子,经测试,貌似根本不是那么回事呀.如果对分区表进行分区DDL操作,如果不加update index字句,全局索引就会失效,下面先看一下是11. ...

  9. oracle12c asmfd,Oracle 12c新特性--ASMFD(ASM Filter Driver)特性

    1 说明 ASMFD 是 12.1 中就引入的新特性,它可以不用手动配置 ASM 磁盘,更重要的是它可以保护磁盘被其他非 Oracle 操作复写,例如 dd , echo 等命令. 更为详尽的介绍,请 ...

最新文章

  1. 将磁盘上的一个文本文件的内容复制到另一个文件中
  2. VC++ 显示对话框
  3. Vxworks信号量分析
  4. bzoj5324:[Jxoi2018]守卫
  5. ArcGIS Pro快速汉化方法-汉化GP
  6. el-menu实现路由跳转及当前页的导航
  7. 【Pre-Training】关于 Transformer 那些的你不知道的事
  8. 安卓手机管理_时间管理大师手机版下载-时间管理大师app下载v1.0.0 安卓最新版...
  9. yolov5火焰检测
  10. 怎么把ide改成ahci_怎么IDE改成AHCI
  11. lfs库下载_lua使用lfs.dll库进行文件操作
  12. React组件化开发
  13. ubuntu 校准时间_ubuntu server自动校正时间
  14. 接口测试第三课(HTTP协议简介) -- 转载
  15. mysql最后一步装不上_mysql安装最后一步 安装不上
  16. java LocalDateTime 加时间,计算两个时间的差
  17. Python | datetime与time模块
  18. sklearn中FastICA接口的使用方法
  19. 亳州的来历(地名的由来)
  20. win10显卡相关配置

热门文章

  1. Ratel不进行预测,一段时间后恢复正常
  2. 使用Jsp+Servlet的wlop官网(验证码登录+session自动登陆)
  3. 浅谈农批市场的信息化:发展现状、信息化动因和契入方向
  4. 二级MS Office高级应用--Excel常用函数
  5. firefox os : firefox os vs android
  6. 算法 - 判断一个数是不是2的n次幂
  7. 合利宝实际控制人即将易主:海科金集团接盘仁东控股
  8. 2018年春招实习面试经验总结
  9. pdf文件删除空白页技巧介绍
  10. 读书到什么程度才能算融会贯通?