介绍
Oracle 从 19C 开始支持 混合分区表,融合外部分区和内部分区于一体,可以轻松的将内部和外部的数据集成到单个分区表中,同时也可以将非活跃数据移动到外部文件,降低存储成本的同时也更加方便数据交换。
记得点击 "DBA学习之路, 设为星标⭐
后台回复【进群】,申请加入数据库学习交流群
精心整理了一些福利资源合集(公众号回复以下代码获取):
1、52 本 Oracle 经典书籍:book
2、Oracle 安装包合集(含补丁):oraclesoft
3、Oracle 一键安装脚本:oracleshellinstall
4、Oracle 7~23ai 官方文档合集:oraclebook
5、OGG 安装包合集:oggsoft
适用于 ILM(Information Lifecycle Management)/Archiving。
-
用更便宜的/归档存储方式将数据提取到数据库之外,作为表的一部分,但仍可以访问整个表 -
将非活跃分区数据移动到外部文件,降低存储成本
混合分区表的适用场景:
-
19C 版本数据库 -
数据需要长期保存同时有在线查询需求的场景 -
数据增长较快,将冷数据放到外部存储 -
存储容量限制,讲冷数据放到外部存储 -
合并内部和外部分区
环境准备
测试环境使用 OracleShellInstall一键安装脚本[1] 安装:
./OracleShellInstall -lf enp0s5 `# local ip ifname`\
-n lucifer `# hostname`\
-o lucifer `# dbname`\
-ds AL32UTF8 `# database character`\
-ns UTF8 `# national character`\
-opd Y `# optimize db`
为了模拟混合分区表的创建以及维护,需要提前创建表空间,外部目录以及用户,以下为创建过程:
-- 配置 OMF
sys@lucifer 2023-07-10 14:30:33> show parameter db_create_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string /oradata
-- 创建外部数据存放目录
sys@lucifer 2023-07-11 13:24:16> ! mkdir -p /home/oracle/hybrid
sys@lucifer 2023-07-11 13:24:17> CREATE DIRECTORY HYBRID AS '/home/oracle/hybrid';
Directory created.
-- 创建表空间
sys@lucifer 2023-07-11 13:25:36> CREATE TABLESPACE hypt_ts1;
Tablespace created.
sys@lucifer 2023-07-11 13:25:44> CREATE TABLESPACE hypt_ts2;
Tablespace created.
-- 创建用户并授权目录
sys@lucifer 2023-07-11 13:26:17> CREATE USER hypt IDENTIFIED BY hypt;
User created.
sys@lucifer 2023-07-11 13:26:23> GRANT read, write ON DIRECTORY HYBRID TO hypt;
Grant succeeded.
sys@lucifer 2023-07-11 13:26:32> GRANT create session, create table, unlimited tablespace TO hypt;
Grant succeeded.
创建外部分区数据文件(ORACLE_LOADER 方式):
## 创建 hybrid18.dat
[oracle@lucifer-kylin10:/home/oracle]$ cat<<EOF>/home/oracle/hybrid/hybrid18.dat
101,01-Jan-1676
102,01-Jan-1615
103,01-Jan-1628
104,01-Jan-1637
105,01-Jan-1649
106,01-Feb-1659
107,01-Feb-1696
108,01-Feb-1697
109,01-Feb-1698
200,01-Feb-1698
EOF
## 创建 hybrid19.dat
[oracle@lucifer-kylin10:/home/oracle]$ cat<<EOF>/home/oracle/hybrid/hybrid19.dat
11,01-Jan-1876
12,01-Jan-1815
13,01-Jan-1828
14,01-Jan-1837
15,01-Jan-1849
16,01-Feb-1859
17,01-Feb-1896
18,01-Feb-1897
19,01-Feb-1898
20,01-Feb-1898
EOF
## 创建 hybrid20.dat
[oracle@lucifer-kylin10:/home/oracle]$ cat<<EOF>/home/oracle/hybrid/hybrid20.dat
1,01-Jan-1976
2,01-Jan-1915
3,01-Jan-1928
4,01-Jan-1937
5,01-Jan-1949
6,01-Feb-1959
7,01-Feb-1996
8,01-Feb-1997
9,01-Feb-1998
10,01-Feb-1998
EOF
[oracle@lucifer-kylin10:/home/oracle/hybrid]$ tree -N
.
├── hybrid18.dat
├── hybrid19.dat
└── hybrid20.dat
这一步是为了外部分区表准备数据。
创建混合分区表

