Artarad_oracle_23c

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

 

 

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

 

منبع مستند.

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *