اوراکل 23ai – قابلیت staging table

همانطور که می دانید، استفاده از جداول staging در محیط Data Warehouse بسیار رایج است و کاربرد آن به زمان بارگذاری دیتا به دیتابیس Warehouse برمی گردد. معمولا در محیط Warehouse، داده های خام که از دیتابیسهای source دریافت می شوند در ابتدا به یک ناحیه موقت و یا همان جداول staging منتقل شده و بعد از فرایند پاکسازی داده های ناقض و ناسازگار و همچنین تبدیل داده ها به فرمت استاندارد، این داده ها در جداول نهایی و عملیاتی ذخیره می شوند.

علاوه بر بارگذاری اولیه، برای بروزرسانی هم از جداول staging استفاده می شود و گاها این جداول قبل از استفاده، truncate می شوند.

در اوراکل 23ai قابلیتی هر چند جزیی در این زمینه ارائه شد و از این نسخه می توانیم جداول از نوع staging ایجاد کنیم این کار با اضافه کردن عبارت FOR STAGING همراه با دستور CREATE TABLE قابل انجام است.

SQL> create table STGtbl (id number,name varchar2(100),address varchar2(1000)) FOR STAGING;
Table created.

به روش CTAS هم می توان این نوع از جداول را ایجاد کرد:

SQL> create table STGtbl for staging as select * from dual;
Table created.

در همین زمینه، ستون staging هم به dba_tables اضافه شد تا جداول staging را بتوان از طریق این ویو فیلتر کرد:

SQL> select table_name,staging from dba_tables where staging='YES';
TABLE_NAME STAGING
----------            -----------
STGTBL                     YES

قابلیت staging را می توانیم برای این جدول غیرفعال کنیم:

SQL> alter table STGtbl not for staging;
Table altered.
SQL> select table_name,staging from dba_tables where staging='YES';
no rows selected

همچنین جداولی که از قبل ایجاد شده اند را هم می توانیم به staging table تبدیل کنیم:

SQL> alter table STGtbl for staging;
Table altered.

امکان استفاده از قابلیت فشرده سازی برای این نوع از جداول وجود ندارد:

SQL> alter table STGtbl compress;
ORA-38500: Invalid operation on Staging Table

البته همراه با دستور create table می توانیم عبارتهای compress و  for staging را با هم استفاده کنیم ولی در عمل، compress نادیده گرفته می شود:

SQL> create table STGtbl (id number,name varchar2(100),address varchar2(1000)) FOR STAGING COMPRESS;
Table created.
SQL> select table_name,staging,compression from dba_tables where staging='YES';
TABLE_NAME STA COMPRESS
---------- --- --------
STGTBL         YES DISABLED

جداول staging امکان پارتیشن بندی هم دارند:

SQL>create table stgTBL
(
  id number,
  name varchar2(100),
  mydate    DATE
)
partition by range ( mydate )
interval ( numtoyminterval(1,'MONTH'))
(
 PARTITION p1 VALUES LESS THAN (TO_DATE('1-1-2010', 'DD-MM-YYYY'))
) 
for staging;
Table created.
SQL> insert into stgTBL values(1,'test1',sysdate);
1 row created.
SQL> insert into stgTBL values(1,'test1',sysdate-400);
1 row created.
SQL> insert into stgTBL values(1,'test1',sysdate-800);
1 row created.
SQL> commit;
Commit complete.
SQL> select TABLE_NAME,PARTITION_NAME from dba_tab_partitions where TABLE_NAME='STGTBL';
TABLE_NAME PARTITION_NAME
---------- --------------
STGTBL     P1
STGTBL     SYS_P471
STGTBL     SYS_P472
STGTBL     SYS_P473

عملیات متداول بر روی پارتیشنها(نظیر split، drop، merge) بر روی پارتیشنهای این نوع از جداول قابل انجام است:

SQL> alter table STGTBL drop partition SYS_P471;
Table altered.

آمارهای مربوط به این نوع از جداول lock هستند و امکان بروزرسانی دستی را در حالت پیش فرض وجود ندارد:

SQL> exec dbms_stats.gather_table_stats(null,’STGTBL’);
ORA-20005: object statistics are locked (stattype = ALL)
ORA-06512: at “SYS.DBMS_STATS”, line 42661
ORA-06512: at “SYS.DBMS_STATS”, line 41946
ORA-06512: at “SYS.DBMS_STATS”, line 9213
ORA-06512: at “SYS.DBMS_STATS”, line 10277
ORA-06512: at “SYS.DBMS_STATS”, line 41094
ORA-06512: at “SYS.DBMS_STATS”, line 42094
ORA-06512: at “SYS.DBMS_STATS”, line 42642
ORA-06512: at line 1

جداول staging در صورت حذف، به RECYCLEBIN منتقل نمی شوند:

SQL> show parameter recyclebin
NAME                                 TYPE        VALUE
---------------------    ----------- ------------------------
recyclebin                           string      on

SQL> drop table STGTBL;
Table dropped.

SQL> select * from dba_recyclebin;
no rows selected

 

 

ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور...................... تلفن: 09128110897 ایمیل:vahidusefzadeh@gmail.com

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

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