Oracle 23ai با اضافه کردن دو ستون جدید به نمای ALL_TAB_PARTITIONS، فرآیند نمایش اطلاعات پارتیشنها را بسیار سادهتر و بهینهتر کرده است. این ستونها HIGH_VALUE_CLOB و HIGH_VALUE_JSON هستند که دسترسی به دادههای با ارزش بالا را راحتتر میکنند.
ما یک جدول پارتیشنبندی شده با چهار پارتیشن ایجاد میکنیم:
drop table if exists part_tab purge;
create table part_tab (
created_date date not null,
some_data varchar2(100) not null
)
partition by range (created_date) (
partition part_2021 values less than (to_date(‘2022-01-01′,’YYYY-MM-DD’)),
partition part_2022 values less than (to_date(‘2023-01-01′,’YYYY-MM-DD’)),
partition part_2023 values less than (to_date(‘2024-01-01′,’YYYY-MM-DD’)),
partition part_2024 values less than (to_date(‘2025-01-01′,’YYYY-MM-DD’))
);
برای بررسی مرزهای پارتیشنها، باید مقدار ستون HIGH_VALUE را از نمای USER_TAB_PARTITIONS جستجو کنیم:
set linesize 140 long 100 longchunksize 100
column partition_name format a20
column high_value format a85
select partition_name,
high_value
from user_tab_partitions
where table_name = ‘PART_TAB’
order by 1;
این روش در SQL*Plus به خوبی کار میکند، اما کار با انواع دادههای LONG میتواند مشکلساز باشد، چرا که از زمان Oracle8i 8.1.6 منسوخ شدهاند.
Oracle 23ai ستونهای HIGH_VALUE_CLOB و HIGH_VALUE_JSON را به نماهای {PDB|DBA|ALL|USER}_TAB_PARTITIONS اضافه کرده است. این کار دسترسی به دادههای با ارزش بالا را سادهتر کرده و استفاده برنامهریزی شده از آنها را راحتتر میکند.
ابتدا ستون HIGH_VALUE_CLOB را که یک نوع داده CLOB است پرس و جو میکنیم:
column high_value_clob format a85
select partition_name,
high_value_clob
from user_tab_partitions
where table_name = ‘PART_TAB’
order by 1;
سپس ستون HIGH_VALUE_JSON را که یک نوع داده JSON است، پرس و جو میکنیم:
column high_value_json format a40
select partition_name,
high_value_json
from user_tab_partitions
where table_name = ‘PART_TAB’
order by 1;
SQL*Plus میداند چگونه یک نوع داده JSON را مدیریت کند، اما برای ابزارهای دیگر ممکن است نیاز به سریالسازی دادههای JSON یا استخراج مقدار به عنوان یک نوع داده معتبر باشد. برای مثال، میتوانیم مقدار را استخراج کرده و به عنوان یک نوع داده DATE برگردانیم:
alter session set nls_date_format=’DD-MON-YYYY HH24:MI:SS’;
column high_value_json format a40
column high_value_date format a20
select partition_name,
json_serialize(high_value_json) as high_value_json,
json_value(high_value_json, ‘$.high_value’ returning date) as high_value_date
from user_tab_partitions
where table_name = ‘PART_TAB’
order by 1;
این تغییرات در Oracle 23ai باعث بهبود کارایی و سادهسازی مدیریت پارتیشنها شده و مشکلات ناشی از استفاده از دادههای LONG را برطرف کرده است. این بهروزرسانیها برای برنامهنویسان و مدیران پایگاه داده بسیار مفید است و به بهینهسازی فرآیندهای کاری کمک میکند.