بررسی قابلیت تغییر نام segment های LOB در پایگاه داده Oracle 23c
این مقاله نحوه تغییر نام یک بخش LOB را در Oracle 23c نشان می دهد.
برای مشاهده نحوه نصب و راه اندازی Oracle 23C اینجا کلیک کنید.
آماده کردن محیط تست :
مثالهای این مقاله به جدول زیر نیاز دارند که شامل یک ستون LOB است.
drop table if exists t1 purge;
create table t1 (
id number generated always as identity primary key,
blob_data blob);
مشکل (MOVE):
نام فعلی بخش LOB را برای ستون BLOB_DATA بررسی می کنیم.
column table_name format a15
column column_name format a15
column segment_name format a30
column tablespace_name format a15
select table_name,
column_name,
segment_name,
tablespace_name
from user_lobs
where table_name = ‘T1’;
TABLE_NAME COLUMN_NAME SEGMENT_NAME TABLESPACE_NAME
————— ————— —————————— —————
T1 BLOB_DATA SYS_LOB0000089326C00002$$ USERS
SQL>
در نسخه های قبلی پایگاه داده برای تغییر نام بخش lob مجبور بودیم آن را منتقل کنیم.
alter table t1 move lob(blob_data) store as t1_blob_data_segment online;
می بینیم که lob segmentما به عنوان بخشی از عملیات حرکت تغییر نام داده است.
select table_name,
column_name,
segment_name,
tablespace_name
from user_lobs
where table_name = ‘T1’;
TABLE_NAME COLUMN_NAME SEGMENT_NAME TABLESPACE_NAME
————— ————— —————————— —————
T1 BLOB_DATA T1_BLOB_DATA_SEGMENT USERS
SQL>
به خوبی انجام شد، اما برای یک segment LOB بزرگ می تواند کار زیادی را نشان دهد. برای رسیدن به این هدف، پایگاه داده باید نسخه جدیدی از segment LOB را بسازد.
راه حل (RENAME):
در پایگاه داده Oracle 23c می توانیم یک segment LOB را تغییر نام دهیم.
alter table t1 rename lob(blob_data) t1_blob_data_segment to t1_blob_data_new_segment;
همانطور که انتظار می رفت، segment LOB تغییر نام داده است.
select table_name,
column_name,
segment_name,
tablespace_name
from user_lobs
where table_name = ‘T1’;
TABLE_NAME COLUMN_NAME SEGMENT_NAME TABLESPACE_NAME
————— ————— —————————— —————
T1 BLOB_DATA T1_BLOB_DATA_NEW_SEGMENT USERS
SQL>
از آنجایی که این یک تغییر متا داده است، نیازی به بازسازی کل segment LOB ندارد و تغییر نام یک segment LOB را برای LOB های بزرگ ساده می کند.
عملیات تغییر نام برای Partition ها و Subpartition ها نیز امکان پذیر است.
— Table
alter table table_name rename lob(column_name) old_segment_name to new_segment_nane;
— Partition
alter table table_name rename lob(column_name) partition old_segment_name to new_segment_nane;
— Subpartition
alter table table_name rename lob(column_name) subpartition old_segment_name to new_segment_nane;
جهت دریافت خدمات مشاوره، آموزش و نگهداری پایگاه داده اوراکل با ما در تماس باشید.
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.