大数跨境
0
0

第 59 天:Oracle 转换分区表之混合分区表

第 59 天:Oracle 转换分区表之混合分区表 DBA学习之路
2025-05-01
0

介绍

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

这一步是为了外部分区表准备数据。

创建混合分区表

【声明】内容源于网络
0
0
DBA学习之路
Oracle ACE,墨天轮社区 MVP,CSDN 全站前50,活跃于各大技术社区论坛,全网粉丝 20w+,专注于各种数据库、Linux 等后端技术,分享各种干货实战文!目前运营两个公众号:Lucifer三思而后行、DBA学习之路
内容 200
粉丝 0
DBA学习之路 Oracle ACE,墨天轮社区 MVP,CSDN 全站前50,活跃于各大技术社区论坛,全网粉丝 20w+,专注于各种数据库、Linux 等后端技术,分享各种干货实战文!目前运营两个公众号:Lucifer三思而后行、DBA学习之路
总阅读162
粉丝0
内容200