【Oracle Database 12c新特性】 In-Database Archiving数据库内归档

Oracle Database 12c中引入了 In-Database Archiving的新特性, 该特性允许用户通过对表上的数据行标记为inactive不活跃的,以归档数据。

这些inactive的数据行可以通过压缩进一部优化,且对应用来说默认不可见。    可以通过一个session级别的参数来控制数据的可见与否。

通过In-Database Archiving数据库内归档郑州电脑上门维修特性可以在单库中存放更长周期的数据, 而损耗很少的应用性能。 归档数据还可以通过压缩来进一步提升备份效能。

要管理一张表的In-Database Archiving,必须为表启用ROW ARCHIVAL  并操作ORA_ARCHIVE_STATE 这个隐藏字段 。 此外用户还可以指定session级别的 ROW ARCHIVAL VISIBILITY为ACTIVE  或者ALL。

下面为演示示例:

/* Set visibility to ACTIVE to display only active rows of a table.*/

ALTER SESSION SET ROW ARCHIVAL VISIBILITY = ACTIVE;

CREATE TABLE employees_indbarch

(employee_id NUMBER(6) NOT NULL,

first_name VARCHAR2(20), last_name VARCHAR2(25) NOT NULL,

email VARCHAR2(25) NOT NULL, phone_number VARCHAR2(20),

hire_date DATE NOT NULL, job_id VARCHAR2(10) NOT NULL, salary  NUMBER(8,2),

commission_pct NUMBER(2,2), manager_id NUMBER(6), department_id NUMBER(4)) ROW ARCHIVAL;

INSERT INTO employees_indbarch(employee_id, first_name, last_name, email,

hire_date, job_id, salary, manager_id, department_id)

VALUES (251, 'Scott', 'Tiger', 'scott.tiger@example.com', '21-MAY-2009',

'IT_PROG', 50000, 103, 60);

INSERT INTO employees_indbarch(employee_id, first_name, last_name, email,

hire_date, job_id, salary, manager_id, department_id)

VALUES (252, 'Jane', 'Lion', 'jane.lion@example.com', '11-JUN-2009',

'IT_PROG', 50000, 103, 60);

commit;

/* Show all the columns in the table, including hidden columns */

SELECT SUBSTR(COLUMN_NAME,1,22), SUBSTR(DATA_TYPE,1,20), COLUMN_ID AS COL_ID,

SEGMENT_COLUMN_ID AS SEG_COL_ID, INTERNAL_COLUMN_ID AS INT_COL_ID, HIDDEN_COLUMN, CHAR_LENGTH

FROM USER_TAB_COLS WHERE TABLE_NAME='EMPLOYEES_INDBARCH';

SELECT SUBSTR(COLUMN_NAME,1,22) NAME, SUBSTR(DATA_TYPE,1,20) DATA_TYPE, COLUMN_ID AS COL_ID,

SEGMENT_COLUMN_ID AS SEG_COL_ID, INTERNAL_COLUMN_ID AS INT_COL_ID, HIDDEN_COLUMN, CHAR_LENGTH

FROM USER_TAB_COLS WHERE TABLE_NAME='EMPLOYEES_INDBARCH';

NAME                   DATA_TYPE                COL_ID SEG_COL_ID INT_COL_ID HID CHAR_LENGTH

---------------------- -------------------- ---------- ---------- ---------- --- -----------

ORA_ARCHIVE_STATE      VARCHAR2                                 1          1 YES        4000

EMPLOYEE_ID            NUMBER                        1          2          2 NO            0

FIRST_NAME             VARCHAR2                      2          3          3 NO           20

LAST_NAME              VARCHAR2                      3          4          4 NO           25

EMAIL                  VARCHAR2                      4          5          5 NO           25

PHONE_NUMBER           VARCHAR2                      5          6          6 NO           20

HIRE_DATE              DATE                          6          7          7 NO            0

JOB_ID                 VARCHAR2                      7          8          8 NO           10

SALARY                 NUMBER                        8          9          9 NO            0

COMMISSION_PCT         NUMBER                        9         10         10 NO            0

MANAGER_ID             NUMBER                       10         11         11 NO            0

DEPARTMENT_ID          NUMBER                       11         12         12 NO            0

/* Decrease the ORA_ARCHIVE_STATE column size to improve formatting in queries */

COLUMN ORA_ARCHIVE_STATE FORMAT a18;

/* The default value for ORA_ARCHIVE_STATE is '0', which means active */

SELECT employee_id, ORA_ARCHIVE_STATE FROM employees_indbarch;

EMPLOYEE_ID ORA_ARCHIVE_STATE

----------- ------------------

251 0

252 0

/* Insert a value into ORA_ARCHIVE_STATE to set inactive */

UPDATE employees_indbarch SET ORA_ARCHIVE_STATE = '20' WHERE employee_id = 252;

/* Only active records are in the following query */

SELECT employee_id, ORA_ARCHIVE_STATE FROM employees_indbarch;

EMPLOYEE_ID ORA_ARCHIVE_STATE

----------- ------------------

251 0

/* Set visibility to ALL to display all records */

ALTER SESSION SET ROW ARCHIVAL VISIBILITY = ALL;

SELECT employee_id, ORA_ARCHIVE_STATE FROM employees_indbarch;

EMPLOYEE_ID ORA_ARCHIVE_STATE

----------- ------------------

251 0

252 20

SQL> desc employees_indbarch

Name                                      Null?    Type

----------------------------------------- -------- ----------------------------

EMPLOYEE_ID                               NOT NULL NUMBER(6)

FIRST_NAME                                         VARCHAR2(20)

LAST_NAME                                 NOT NULL VARCHAR2(25)

EMAIL                                     NOT NULL VARCHAR2(25)

PHONE_NUMBER                                       VARCHAR2(20)

HIRE_DATE                                 NOT NULL DATE

JOB_ID                                    NOT NULL VARCHAR2(10)

SALARY                                             NUMBER(8,2)

COMMISSION_PCT                                     NUMBER(2,2)

MANAGER_ID                                         NUMBER(6)

DEPARTMENT_ID                                      NUMBER(4)

1* select COLUMN_NAME,COLUMN_ID,DATA_TYPE from dba_tab_cols where table_name=upper('employees_indbarch')

SQL> /

COLUMN_NAME          COLUMN_ID DATA_TYPE

-------------------- --------- --------------------

DEPARTMENT_ID               11 NUMBER

MANAGER_ID                  10 NUMBER

COMMISSION_PCT               9 NUMBER

SALARY                       8 NUMBER

JOB_ID                       7 VARCHAR2

HIRE_DATE                    6 DATE

PHONE_NUMBER                 5 VARCHAR2

EMAIL                        4 VARCHAR2

LAST_NAME                    3 VARCHAR2

FIRST_NAME                   2 VARCHAR2

EMPLOYEE_ID                  1 NUMBER

ORA_ARCHIVE_STATE              VARCHAR2

SQL> select dump(ORA_ARCHIVE_STATE,16),dump(EMPLOYEE_ID,16),dbms_rowid.rowid_block_number(rowid),dbms_rowid.rowid_relative_fno(rowid)  from employees_indbarch;

DUMP(ORA_ARCHIVE_STA DUMP(EMPLOYEE_ID,16) DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID)

-------------------- -------------------- ------------------------------------ ------------------------------------

Typ=1 Len=1: 30      Typ=2 Len=3: c2,3,34                               109465                                    1

Typ=1 Len=2: 32,30   Typ=2 Len=3: c2,3,35                               109465                                    1

SQL> alter system flush buffer_cache;

System altered.

SQL> alter system dump datafile 1 block 109465;

System altered.

tl: 73 fb: --H-FL-- lb: 0x0  cc: 12

col  0: [ 1]  30

col  1: [ 3]  c2 03 34

col  2: [ 5]  53 63 6f 74 74

col  3: [ 5]  54 69 67 65 72

col  4: [23]

73 63 6f 74 74 2e 74 69 67 65 72 40 65 78 61 6d 70 6c 65 2e 63 6f 6d

col  5: *NULL*

col  6: [ 7]  78 6d 05 15 01 01 01

col  7: [ 7]  49 54 5f 50 52 4f 47

col  8: [ 2]  c3 06

col  9: *NULL*

col 10: [ 3]  c2 02 04

col 11: [ 2]  c1 3d

tab 0, row 1, @0x1ecc

tl: 70 fb: --H-FL-- lb: 0x2  cc: 12

col  0: [ 2]  32 30

col  1: [ 3]  c2 03 35

col  2: [ 4]  4a 61 6e 65

col  3: [ 4]  4c 69 6f 6e

col  4: [21]

6a 61 6e 65 2e 6c 69 6f 6e 40 65 78 61 6d 70 6c 65 2e 63 6f 6d

col  5: *NULL*

col  6: [ 7]  78 6d 06 0b 01 01 01

col  7: [ 7]  49 54 5f 50 52 4f 47

col  8: [ 2]  c3 06

col  9: *NULL*

col 10: [ 3]  c2 02 04

col 11: [ 2]  c1 3d

可以看到这里 ORA_ARCHIVE_STATE是实际存放在块里的row piece上的第一个字段,类型为varchar2(4000);
In-Database Archiving的限制:

§  ILM is not supported with OLTP table compression for in-database archiving. Segment-level ILM and compression is supported if partitioned on the ORA_ARCHIVE_STATE column.

ORA_ARCHIVE_STATE相关:

/* constants specifying ROW ARCHIVAL state */
archive_state_active constant varchar2(1) := ‘0’;
archive_state_archived constant varchar2(1) := ‘1’;

/*
* description – Given a value for the ORA_ARCHIVE_STATE column this
* function returns the mapping for the value.
*
* value – “0”, “1” or other values from the ORA_ARCHIVE_STATE column of
* a row archival enabled table
* returns either “archive_state_active” or “archive_state_archived”
*/

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

  1. Oracle Database 12c 新特性:RAC Cluster Hub Node 和 Leaf Node

    Oracle Database 12c 新特性:RAC Cluster Hub Node 和 Leaf Node 在 Oracle Database 12c 的 Cluster 中引入了很多新特性和新 ...

  2. oracle oem 13c新特性,Oracle Database 12c - 新特性实现的历程与13c的预测

    Oracle Database 12c - 新特性实现的历程与13c的预测 虽然Oracle Database 12c的新特性文档已经随处可见,但是Oracle仍然没有关于12c正式发布的准确日期,这 ...

  3. 12c oracle 修改内存_关于Oracle数据库12c 新特性总结

    概述 今天主要简单介绍一下Oracle12c的一些新特性,仅供参考. 参考: http://docs.oracle.com/database/121/NEWFT/chapter12102.htm#NE ...

  4. 【12c】新特性:Oracle 12c In-Database Archiving 数据库内归档

    通常,在应用程序开发中对表做设计时,不可避免的会对表中的数据做删除处理,如果直接使用硬删除,则不能有效的对已删除的数据进行追踪:如果采用软删除(例如表中增加了删除标记的字段delete_flag),虽 ...

  5. oracle12.2 redo 进程,【Oracle Database 12c新特性】TTnn TMON新的redo传输后台进程

    在Oracle 11g中 Data Guard的redo传输工作主要由以下3组后台进程实现: ARCi (FAL – archived redo shipping, ping, local only ...

  6. 【Oracle Database 12c新特性】ASM Scrubbing Disk Groups

    在12.1中Oracle ASM提供了一个改善可用性和可靠度的的新特性 称作Scrubbing Disk Groups, Disk Scrubbing通过检查数据的逻辑讹误,从而能够在Normal 或 ...

  7. Oracle 数据库12c 新特性总结

    1. 在线重命名和重新定位活跃数据文件 不同于以往的版本,在Oracle数据库12c R1版本中对数据文件的迁移或重命名不再需要太多繁琐的步骤,即把表空间置为只读模式,接下来是对数据文件进行离线操作. ...

  8. oracle中的orddata,【Oracle Database 12c新特性】ORACLE_MAINTAINED

    ORACLE_MAINTAINED是Oracle 12c中一系列视图的新增信息字段,该字段代表对象或用户是Oracle提供的脚本生成的,即Oracle-Supplied objects. ORACLE ...

  9. Oracle GoldenGate 12c 新特性

    针对Oracle 12c的专门优化: 针对Oracle数据库的集成交付模式:提升在oracle DB中目标端的交付速度: 针对非Oracle数据库的协调交付模式:降低非oracle DB中多线程配置的 ...

最新文章

  1. 第二十课.卡尔曼滤波器
  2. 【总结】IE和Firefox的Javascript兼容性总结
  3. 网络口协商_以太网端口协商解析
  4. python中的eval
  5. python的scrapy爬虫模块间进行传参_Python | Scrapy 爬虫过程问题解决(持续更新...)...
  6. html的canvas标签用法,html5中关于canvas标签用法(绘图)
  7. 使用jstat的JVM统计信息
  8. mysql复杂查询sql_mysql – 复杂的SQL查询,很多很多
  9. 移动端常见bug汇总001
  10. Python数据可视化库——Matplotlib
  11. z变换解差分方程例题_Z变换及差分方程的求解
  12. word目录缩进设置
  13. 机器人理论简介—— 台湾交通大学机器人学公开课(一)
  14. 一文读懂随机森林的解释和实现(附python代码)
  15. Linux网卡驱动pcnet32.c的注释(AM79C9*系列网卡的驱动)
  16. OSI 物理层(设备,技术)
  17. 笔画输入法教程――如何学习笔画输入法
  18. QGIS教程-2:数据的加载
  19. 关于佛教出家人衣食住行的问答交流贴19(转贴)
  20. PTA:7-15 计算圆周率 (15分)

热门文章

  1. kindle paperwhite3 android,Kindle Paperwhite3入手20天感受
  2. springboot+Rabit实战三:(springboot+rabbit 项目搭建)
  3. HTTP 错误 404.3 – Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
  4. centos8 合上笔记本盖子不休眠,不断网
  5. 计算机应用课程思政的应用,计算机类课程思政改革——以“Office高级应用”课程为例...
  6. 岩板铺地好吗_岩板铺客厅地面好吗 比800*800的瓷砖更美观又大气?
  7. 神经网络滤镜是啥功能,神经网络滤镜不能用
  8. SpringBoot(二): 使用Dokcer+SpringCloud+Consul+Fabio搭建微服务
  9. 全球及中国隐形眼镜护理液行业消费规模及投资竞争力分析报告2021-2027年
  10. python-华为路由器交换机批量处理ip与mac绑定