中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

oracle 19c新特性混合分區(qū)表

發(fā)布于:2021-02-21 00:00:20

0

127

0

oracle oracle 19c 混合分區(qū)表 數(shù)據(jù)庫(kù)

在oracle12crelease2中,新特性之一是能夠在外部表上創(chuàng)建分區(qū)。

Oracle 19c中的新功能是我們可以創(chuàng)建一個(gè)混合分區(qū)表的功能,因此有些分區(qū)存在于數(shù)據(jù)庫(kù)中,有些分區(qū)托管在數(shù)據(jù)庫(kù)外部,可能在普通文件系統(tǒng)或ACFS甚至Hadoop文件系統(tǒng)上。

使用此功能,我們可能希望將表中較舊的非活動(dòng)分區(qū)移動(dòng)到數(shù)據(jù)庫(kù)外部托管的可能較便宜的存儲(chǔ)中,而活動(dòng)數(shù)據(jù)則托管在存儲(chǔ)在Oracle數(shù)據(jù)庫(kù)內(nèi)部的分區(qū)中。

現(xiàn)在我們有了外部分區(qū)和內(nèi)部分區(qū)的概念,混合分區(qū)表特性使我們能夠?qū)?nèi)部分區(qū)和外部分區(qū)集成在同一個(gè)表中!

對(duì)于這種混合分區(qū)表,分區(qū)可以駐留在Oracle數(shù)據(jù)庫(kù)的兩個(gè)表空間上,也可以駐留在外部源上,例如帶有逗號(hào)分隔值(CSV)記錄的Linux文件或帶有Java服務(wù)器的Hadoop分布式文件系統(tǒng)(HDFS)上的文件。

讓我們用一個(gè)例子來(lái)看看這個(gè)特性。

假設(shè)我們有一些2017年和2018年的銷售數(shù)據(jù),這些數(shù)據(jù)位于平面文件(sales_2017.dat和sales_2018.dat)中。

[oracle@host03 dpdump]$ cat sales_2017.dat
CUST_A 1001 100 20-JAN-2017
CUST_B 1001 110 20-JAN-2017
CUST_C 1001 200 21-JAN-2017
CUST_D 1000 108 22-JAN-2017
CUST_E 1002 10  24-JAN-2017

[oracle@host03 dpdump]$ cat sales_2018.dat
CUST_A 1001 1   20-JAN-2018
CUST_B 1001 110 20-JAN-2018
CUST_C 1001 300 21-JAN-2018
CUST_D 1000 108 22-JAN-2018
CUST_E 1002 90  24-JAN-2018

我們現(xiàn)在創(chuàng)建一個(gè)混合分區(qū)表,該表在列DATE_OF_SALES上進(jìn)行范圍分區(qū)。

2017年和2018年的分區(qū)是外部分區(qū),2019年的分區(qū)是內(nèi)部分區(qū)。

注意externallocation子句,它指示分區(qū)是一個(gè)外部分區(qū),并且數(shù)據(jù)包含在所提到的文件中。外部文件位于為目錄DATA_PUMP_DIR定義的目錄位置。

SQL> CREATE TABLE demo.sales
(cust_name varchar2(10),
prod_id number,
amount_sold number ,
date_of_sale date)
EXTERNAL PARTITION ATTRIBUTES (
TYPE oracle_loader
DEFAULT DIRECTORY data_pump_dir
ACCESS PARAMETERS
(RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY WHITESPACE)
)
PARTITION BY RANGE (date_of_sale)
(PARTITION sales_2017 VALUES LESS THAN (TO_DATE('01-JAN-2018','DD-MON-YYYY')) EXTERNAL LOCATION ('sales_2017.dat'),
PARTITION sales_2018 VALUES LESS THAN (TO_DATE('01-JAN-2019','DD-MON-YYYY')) EXTERNAL LOCATION ('sales_2018.dat'),
PARTITION sales_2019 VALUES LESS THAN (TO_DATE('01-JAN-2020','DD-MON-YYYY'))
)
;    

Table created.

SQL> select hybrid from dba_tables where table_name='SALES';

HYB
---
YES

讓我們對(duì)外部分區(qū)發(fā)出一些查詢,并在內(nèi)部分區(qū)中插入一些行。

SQL> select * from demo.sales
   partition (sales_2017);

CUST_NAME     PROD_ID AMOUNT_SOLD DATE_OF_S
---------- ---------- ----------- ---------
CUST_A 1001      100 20-JAN-17
CUST_B 1001      110 20-JAN-17
CUST_C 1001      200 21-JAN-17
CUST_D 1000      108 22-JAN-17
CUST_E 1002       10 24-JAN-17

SQL> select * from demo.sales
   partition (sales_2018);

CUST_NAME     PROD_ID AMOUNT_SOLD DATE_OF_S
---------- ---------- ----------- ---------
CUST_A 1001 1 20-JAN-18
CUST_B 1001      110 20-JAN-18
CUST_C 1001      300 21-JAN-18
CUST_D 1000      108 22-JAN-18
CUST_E 1002       90 24-JAN-18

SQL> insert into demo.sales
   values
   ('CUST_A',1003,50,'02-JAN-2019');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from demo.sales
   partition (sales_2019);

CUST_NAME     PROD_ID AMOUNT_SOLD DATE_OF_S
---------- ---------- ----------- ---------
CUST_A 1003       50 02-JAN-19