مسعود سلطانی راد
مسعود سلطانی راد
خواندن ۲ دقیقه·۱ سال پیش

بررسی قابلیت تغییر نام 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;

جهت دریافت خدمات مشاوره، آموزش و نگهداری پایگاه داده اوراکل با ما در تماس باشید.

منبع مستند.

oracle ۲۳اوراکلoracle databaseمشاوره اوراکلمسعود سلطانی راد
چند سالی هست در حوزه داده ها ( نگهداری و تحلیل آنها) فعالیت دارم و همیشه سعی کردم آموخته هایم رو به اشتراک بگذارم soltanirad@artarad.ir www.artarad.ir
شاید از این پست‌ها خوشتان بیاید