قابلیت Sessionless Transaction در اوراکل 23ai(23.6)

در پایگاه داده اوراکل، transaction به طور سنتی به session وابسته است و زمانی که یک session بسته می شود، transaction مرتبط با آن session هم خاتمه می‌یابد. از اوراکل 23ai (از 23.6 به بعد)، ویژگی Sessionless Transactions این امکان را فراهم می‌کند که این وابستگی بین session و transaction از بین برود و تراکنشها این امکان را داشته باشند که به حالت تعلیق درآیند و در session دیگری از سر گرفته شوند. 

به عبارتی دیگر، در قابلیت Sessionless Transactions، به هر تراکنش یک شناسه منحصربه‌فرد اختصاص داده می‌شود و حتی اگر sessionای که تراکنش را شروع کرده، بسته شود، تراکنش در پایگاه داده باقی می‌ماند و session دیگری میتواند آن را با استفاده از “شناسه منحصربه‌فرد آن” از سر بگیرد و ادامه دهد.

(بیشتر…)

DBMS_DEVELOPER در اوراکل 23ai(23.7)

در پایگاه داده اوراکل، برای استخراج متادیتای اشیا، می‌توانیم از پکیج DBMS_METADATA استفاده کنیم. این پکیج شامل بسیاری از توابع و روال‌های مفید است، مانند GET_DDL، GET_DEPENDENT_DDL و SET_TRANSFORM_PARAM. علاوه بر این، برخی ابزارها مانند SQLcl روش‌های خاص خود را برای استخراج متادیتا ارائه می‌دهند—به عنوان مثال، دستور DDL در ابزار SQLcl.

از نسخه 23.7 به بعد، اوراکل روش دیگری برای استخراج متادیتای اشیا معرفی کرده است. در این نسخه، می‌توانیم از DBMS_DEVELOPER در کنار DBMS_METADATA استفاده کنیم. DBMS_DEVELOPER کاربرپسند است و خروجی را در قالب JSON تولید می‌کند. این پکیج در حال حاضر تنها از TABLE، INDEX و VIEW پشتیبانی می‌کند، در حالی که DBMS_METADATA بسیار قدرتمندتر است و تقریباً از همه انواع اشیا پشتیبانی می‌کند.

DBMS_DEVELOPER تنها یک تابع به نام GET_METADATA دارد:

(بیشتر…)

Shrinking Smallfile Tablespaces in Oracle 23.7

As you may know, starting from Oracle 23ai, we can shrink permanent tablespaces. However, that was limited to bigfile tablespaces, and shrinking smallfile tablespaces was not possible. Although, by default, tablespaces are created as bigfile tablespace.

Now, in Oracle 23.7, shrinking smallfile tablespaces is possible and we can shrink these tablespaces using the dbms_space.tablespace_shrink procedure. This procedure executes familiar commands such as ‘alter table move online’ and ‘alter index rebuild’ to shrink smallfile tablespaces.

PROCEDURE SHRINK_TABLESPACE
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 TS_NAME                        VARCHAR2                IN
 SHRINK_MODE                    NUMBER                  IN     DEFAULT
 TARGET_SIZE                    NUMBER                  IN     DEFAULT
 SHRINK_RESULT                  CLOB                    OUT
 ITERATIONS                     NUMBER                  IN     DEFAULT  

(بیشتر…)

اوراکل 23ai – مشاهده سابقه دسترسی به جداول

از اوراکل 23ai ویوی جدیدی به نام [dba|all|user]_table_access_stats ارائه شد که بر اساس آن می توان سابقه دستیابی به جداول و پارتیشنها را مشاهده کرد. هر جدول و یا پارتیشن در هر instance چند بار scan شده و تاریخ آخرین دسترسی به جدول در چه زمانی بوده است.

SQL> create table jadval(id number,name varchar2(100), last_name varchar2(100));
Table created.
SQL> insert into jadval values(1,'payan','rafat');
1 row created.
SQL> select TABLE_NAME,PARTITION_NAME,INSTANCE_ID,READ_COUNT,LAST_ACCESSED_TIME from user_table_access_stats;
no rows selected
SQL> select * from jadval;
        ID NAME    LAST_NA
---------- ------- -------
         1 payan   rafat
SQL> select TABLE_NAME,PARTITION_NAME,INSTANCE_ID,READ_COUNT,LAST_ACCESSED_TIME from user_table_access_stats;
TABLE_NAME PARTITION_NAME  INSTANCE_ID READ_COUNT LAST_ACCESSED_TIME
---------- --------------- ----------- ---------- -------------------------
JADVAL                               1          2 01-JAN-25 08.27.33 AM
SQL> select * from jadval;
        ID NAME    LAST_NA
---------- ------- -------
         1 payan   rafat
SQL> select TABLE_NAME,PARTITION_NAME,INSTANCE_ID,READ_COUNT,LAST_ACCESSED_TIME from user_table_access_stats;
TABLE_NAME PARTITION_NAME  INSTANCE_ID READ_COUNT LAST_ACCESSED_TIME
---------- --------------- ----------- ---------- -------------------------
JADVAL                               1          3 01-JAN-25 08.28.25 AM

(بیشتر…)

Data Redaction و بهبودی برای viewها – اوراکل 23.6

اوراکل در نسخه 23.6 قابلیتهای جدیدی را در زمینه Data Redaction ارائه کرده است که یکی از این قابلیتها، پشتیبانی از Data Redaction در سطح view هست. در نسخه های قبلی، اگر در اجرای یک view به ستون Redact شده ای رجوع می شد، با خطای ORA-28094: SQL construct not supported by data reduction مواجه می شدیم اما در نسخه 23ai این قبیل Viewها را می توان بدون خطا اجرا کرد. در ادامه با سناریویی این مسئله را در دو نسخه 21c و 23ai بررسی می کنیم.

در ابتدا جدولی را ایجاد می کنیم:

SQL> create table tb(id number,name varchar2(14),last_name varchar2(14),salary number);
Table created
SQL> insert into tb values(1,’Ali’,’Geraili’,9850000);
1 row inserted
SQL> commit;
Commit complete

(بیشتر…)

نصب Oracle Enterprise Manager 24ai در اوراکل لینوکس

همان‌طور که مطلع هستید، هفته گذشته اوراکل نسخه جدید Enterprise Manager را با نام 24ai  در دسترس عموم قرار داد. در این مستند قصد دارم نصب این نسخه از Oracle Enterprise Manager را به اشتراک بگذارم.

نصب OEM 24ai مشابه با نسخه 13c است و برای راه‌اندازی آن نیز نیاز به یک دیتابیسRepository داریم. این دیتابیس می‌تواند در کنار OEM ایجاد شود و نیازی به تفکیک سیستم عامل آن‌ها از یکدیگر نیست. با این حال، باید نکات پیش‌نیاز سخت‌افزاری مانند میزان RAM، CPU و فضای دیسک را مد نظر قرار دهیم. این پیش‌نیازها ثابت نیستند و بسته به تعداد agent‌ها و OMS‌های مختلف ممکن است متفاوت باشند. برای اطلاعات دقیق‌تر، می‌توانید این موارد را از سایت اوراکل مشاهده کنید.

(بیشتر…)

اوراکل 23ai – امکان patch زدن Grid Infrastructure از طریق GUI

در اوراکل 23ai می توانیم از طریق اجرای gridSetup.sh و به صورت ویزاردی بر روی نرم افزار گرید، patch اعمال کنیم این کار به صورت Zero-Downtime هم قابل انجام است. در متن پیش رو قصد داریم Release Update 23.6 را بر روی  Grid Infrastructure 23.5 اعمال کنیم. 

در حال حاضر 23.5 Grid Infrastructure در حال اجرا است:

[grid@OL810 ~]$ sqlplus "/as sysasm"
SQL*Plus: Release 23.0.0.0.0 – for Oracle Cloud and Engineered Systems on Wed Nov 27 12:57:14 2024
Version 23.5.0.24.07
Copyright © 1982, 2024, Oracle.  All rights reserved.
Connected to:
Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 – for Oracle Cloud and Engineered Systems
Version 23.5.0.24.07
SQL>

برای اعمال patch در ابتدا باید نرم افزار Grid Infrastructure نسخه 23.6 را به صورت software only نصب کنیم.

(بیشتر…)

نصب نسخه Grid Infrastructure 23ai Exadata در محیط اوراکل لینوکس

همانطور که می دانید اوراکل هنوز نسخه on-premises مربوط به 23ai را ارائه نکرده است و صرفا نسخه های 23.5 و 23.6 که قابل استفاده در محیط Exadata هستند، را در دسترس عموم قرار داده است. قبلا در مطلبی نحوه نصب Oracle Database 23ai در محیط non-Exadata را به اشتراک گذاشتیم و در این متن قصد داریم مراحل نصب Grid Infrastructure 23ai Exadata را در محیط non-Exadata مستند کنم.

در صورتی که بخواهیم به روال عادی Grid Infrastructure 23ai را در محیط non-Exadata نصب کنیم، در مرحله ایجاد ASM instance به خطا خواهیم خورد و در نهایت ASM instance استارت نخواهد شد:

(بیشتر…)

غیر فعال شدن Read-only Oracle Home در اوراکل 23ai

قابلیت Read-only Oracle Home از اوراکل 18c ارائه شده و بر اساس آن، logfileها و فایلهای پیکربندی موجود در مسیر ORACLE_HOME نظیر listener.ora، sqlnet.ora، spfile.ora و … به دایرکتوریهای زیرشاخه ORACLE_BASE منتقل می شوند. Read-only Oracle Home در نسخه 18c و 19c به صورت پیش فرض فعال نیست اما این قابلیت در نسخه 21c در حالت پیش فرض فعال است:

[oracle@RAC3 ~]$ /oracle21c/home/bin/orabasehome
/oracle21c/base/homes/OraDB21Home1

(بیشتر…)

اوراکل 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.

(بیشتر…)