
اگر با پایگاهداده اوراکل آشنایی داشته باشید، حتماً دستور سادهی INSERT INTO را میشناسید. اجازه دهید بهطور خلاصه شکل سنتی استفاده از این دستور را با چند مثال ساده یادآوری کنم: SQL> CREATE TABLE vahid.tbl ( id NUMBER, name VARCHAR2(100), last_name VARCHAR2(100) ); Table created. SQL> INSERT INTO vahid.tbl VALUES (1, 'VAHID'...
ادامه مطلب
اوراکل 23ai چندین قابلیت جدید به عبارت GROUP BY اضافه کرده است که باعث سادهتر شدن نگارش کوئری و بهبود خوانایی آن میشود، بهویژه زمانی که دادهها بر اساس چند ستون گروهبندی میشوند. از این نسخه، عبارت GROUP BY از بهبودهای زیر پشتیبانی میکند: استفاده از نام مستعار ستون در GROUP BY: میتوانید مستعار (Alias) ستونهایی که در بخش SELECT تعریف کردهاید را...
ادامه مطلب
هنگام انجام عملیات بازیابی (restore) پایگاه داده اوراکل با استفاده از ابزار RMAN، اوراکل از طریق ویوی v$session_longops اطلاعاتی از میزان پیشرفت هر عملیات ارائه میدهد. این قابلیت به مدیران پایگاه داده (DBAها) امکان میدهد که فرآیند بازیابی را پایش کرده و مدت زمان تقریبی آن را تخمین بزنند. set linesize 1000 col opname format a40 SELECT opname, t...
ادامه مطلب
پیش از اوراکل 23ai و 19.28، اسکریپت awrsqrpt.sql یکی از روشهای تحلیل اجراهای قبلی یک کوئری بود و از این طریق می توانستیم آمارهای مربوط به میزان استفاده از CPU، ورودی/خروجی (I/O) ، زمان سپری شده(elapsed time) و … را در یک بازه زمانی مشخص مشاهده کنیم. با این حال، این روش دو محدودیت اصلی داشت. در این روش نیاز بود دو AWR snapshot تعیین شوند و ضمنا اطلاعات ا...
ادامه مطلب
ویژگی Unified Auditing در پایگاه داده اوراکل مکانیزمی قدرتمند برای ثبت فعالیتهای دیتابیس بهصورت متمرکز و منسجم است. با این حال، این ویژگی میتواند چالشهایی برای DBA ایجاد کند، بهویژه زمانی که مدیریت حجم Audit Trail مدنظر باشد. یکی از نگرانیهای رایج، فراهم کردن فضای ذخیرهسازی کافی برای جدول AUD$UNIFIED است. در برخی محیطها، DBA ممکن است بخواهد میزا...
ادامه مطلب
قابلیت In-Memory Advisor با تحلیل workload دیتابیس تلاش می کند برای In-Memory sizeهای مختلف، DB-Time را تخمین بزند و همچنین می تواند پیشنهاد کند کدام یک از objectها در In-Memory قرار بگیرند. برای استفاده از این قابلیت، باید از پکیج DBMS_INMEMORY_ADVISE استفاده کرد نحوه اجرای In-Memory Advisor، بسیار مشابه قابلیت Privilege Analysis است و برای گرفتن advise در زمینه In-Memory هم ابتدا باید taskای را start کنیم و زمانی که احساس شد workload دیتابیس به اندازه کافی از دیدگاه In-Memory مورد تحلیل قرار گ...
ادامه مطلب
از نسخه 23ai تمامی tablespaceهای سیستمی و همچنین users موجود در root container به صورت Bigfile ایجاد می شوند(به استثنای Temp tablespaceها): SQL*Plus: Release 23.0.0.0.0 - Production on Sat Jun 8 22:43:40 2024 Version 23.4.0.24.05 SQL> select TABLESPACE_NAME,BIGFILE from dba_tablespaces; TABLESPACE_NAME BIG ------------------------------ --- SYSTEM YES SYSAUX YES UNDOTBS1 YES TEMP NO...
ادامه مطلب
در اوراکل نسخه 21c، زمانی که توابع مربوط به JSON نظیر JSON_QUERY، JSON_TABLE و JSON_VALUE ورودی معتبری نداشته باشند، خطایی رخ نمی دهد و null به کاربر برمی گردد در مثال زیر، کلید Year سه بار تکرار شده و این ورودی معتبر نیست اما دستور select بدون خطا اجرا می شود و صرفا NULL به کاربر برمی گردد: SQL> SELECT JSON_VALUE('[{Year:1401},{Year:1401},{Year:1402}]', '$.Year') YEAR; YEAR ----------------- در این شرایط اگر بخواهیم این رفتار را در سطح دستور تغییر دهیم، می توانیم عبارت ERROR ON ERROR را به...
ادامه مطلب
یک کمد دیواری به هم ریخته می تواند منشا استرس و اتلاف وقت شما باشد. پیدا کردن لباس مورد نظر در میان انبوهی از وسایل پراکنده کار دشواری است. اما نگران نباشید! با رعایت چند قانون ساده می توانید به راحتی نظم را به کمد دیواری خود بازگردانید. دور ریختن یا اهدا کردن لباس های بلااستفاده اولین قدم برای داشتن کمدی مرتب، خلاص شدن از شر لباس هایی است که دیگر استفاده نمی کنید. لباس های فرسوده، تنگ یا گشاد، و لباس هایی که دیگر با استایل شما همخوانی ندارند را دور بریزید و یا به خیریه اهدا کنید. این کار نه تن...
ادامه مطلب
در اوراکل نسخه 23ai، ویوهای جدیدی در زمینه Data Pump اضافه شده اند که می توان از طریق آنها دلایل کندی اجرای Data Pump را شناسایی کرد. لیست این ویوها را در قسمت زیر می بینید: (G)V$DATAPUMP_PROCESS_INFO (G)V$DATAPUMP_PROCESSWAIT_INFO (G)V$DATAPUMP_SESSIONWAIT_INFO ویوی V$DATAPUMP_PROCESS_INFO اطلاعاتی را در مورد جابهای مربوط به Data Pump نمایش می دهد نظیر SESSIONID، SPID، PROGRAM و … SQL> desc V$DATAPUMP_PROCESS_INFO Name Null? Type -------------...
ادامه مطلب
تا قبل از نسخه 23ai نمی توانستیم از توابع تجمیعی نظیر SUM، AVG، MIN و MAX و … بر روی داده های با دیتاتایپ INTERVAL استفاده کنیم و در صورت استفاده، به خطای ORA-00932 مواجه می شدیم. برای مثال می خواهیم بررسی کنیم اجرای جاب PURGE_LOG در یک ماه گذشته به صورت میانگین چقدر زمان برده است: SQL> select column_name,data_type from dba_tab_cols where table_name='DBA_SCHEDULER_JOB_RUN_DETAILS' and column_name='RUN_DURATION'; COLUMN_NAME DATA_TYPE --------------- ---------------------------------...
ادامه مطلب
در این متن قصد داریم مراحل نصب Oracle Database 23ai free را بر روی اوراکل لینوکس 8 توضیح دهیم در ابتدا باید متذکر شویم که حجم هر دیتابیس(PDB) در نسخه FREE نمی تواند بیشتر از 12GB شود و همچنین برای استفاده از RAM و CPU هم محدودیت دارد: RPM مربوطه را از سایت اوراکل دانلود می کنیم: برای نصب 23ai FREE، ابتدا باید پیش نیاز های نصب اوراکل نظیر نصب package، ایجاد کاربر oracle، تنظیم کرنل و… را انجام دهیم که با دانلود و اجرای oracle-database-preinstall-23ai-1.0-2.el8.x86_64.rpm می توانیم ...
ادامه مطلب
اوراکل در نسخه 23c قابلیت جدیدی را برای دستور CASE در محیط PL/SQL ارائه کرده است که در این متن با آن آشنا خواهیم شد. در ابتدا شکل ساده دستور CASE در PL/SQL را با یک مثال مرور می کنیم: declare VALUE number := 3; text varchar2(50); begin text := case VALUE when 1 then 'ONE' when 2 then 'TWO' when 3 then 'THREE' else 'NOT ONE, TWO NOR THREE' end; dbms_output.put_line(text); end; / ...
ادامه مطلب
در زمان ارائه قابلیت Pluggable Database در نسخه 12cR1،ء AWR snapshotها صرفا در سطح CDB ایجاد می شدند و امکان ایجاد snapshot در سطح PDB وجود نداشت. در نسخه 12cR2 پارامتری به نام awr_pdb_autoflush_enabled اضافه شد که با تنظیم آن به مقدار TRUE، به صورت خودکار در سطح PDB هم AWR snapshot ایجاد می شود اما مقدار پیش فرض این پارامتر تا قبل از نسخه 23c برابر با FALSE بوده و در نسخه 23c به صورت پیش فرض فعال می باشد: SQL*Plus: Release 23.0.0.0.0 - Developer-Release on Thu Sep 7 10:57:00 2023 SQL> show p...
ادامه مطلب
زمانی که یکی از مجوزهای system “ANY” privilege نظیر select any table، drop any table و … را به کاربری می دهیم، آن کاربر امکان دسترسی به objectهای شمای sys و جداول Data Dictionary را ندارد: SQL*Plus: Release 10.1.0.4.2 - Production on Tue Jan 9 10:38:31 2024 SQL> show user USER is "SYS" SQL> create table sys.tb as select * from dual; Table created. SQL> create user usef identified by a; User created. SQL> grant create session,select any table to usef; Grant succeeded. SQL> conn u...
ادامه مطلب
Hybrid Partitioned Table قابلیت جدیدی است که اوراکل در نسخه 19c ارائه کرده است با کمک این قابلیت می توان برای یک جدول، تلفیقی از پارتیشنهای exteal و inteal را ایجاد کرد. این روش از پارتیشن بندی، صرفا متدهای Range و List را پشتیبانی می کند البته در نسخه 19c امکان استفاده از متد Automatic List برای Hybrid Partitioned Table وجود ندارد و این امکان از نسخه 23c به وجود آمد. بنابرین از این نسخه(23c) می توانیم برای جداول Hybrid Partitioned Table از قابلیت Automatic List Partitioning استفاده کنیم. قبل از...
ادامه مطلب
زمانی که sessionای را در اوراکل kill می کنیم، به صورت پیش فرض آن session در حالت SOFTء، kill خواهد شد: SQL> ALTER SYSTEM KILL SESSION '1025,44801'; System altered. جزییات اجرای این دستور را می توانیم در Alert Log ببنیم: 2023-12-19T13:32:18.731476+03:30 (4):A user has terminated a session. KILL SESSION for sid=(1025, 44801): Reason = alter system kill session Mode = KILL SOFT -/-/-/- Requestor = USER (orapid = 55, ospid = 3267554, inst = 1) User = oracle Program = sqlplus@OEL8 (...
ادامه مطلب
DEDUPLICATION یکی از قابلیتهای جدید اوراکل در نسخه 11g است که همراه با SECUREFILE LOBها ارائه شد و می توان بعد از ایجاد جدول هم این قابلیت را برای SECUREFILE LOBها فعال کرد اما سوال مهمی که در این زمینه مطرح می شود آن است که DEDUPLICATION برای LOBهای موجود چقدر فضا آزاد می کند؟ در اوراکل نسخه 23c، تابعی در این زمینه ارائه شد که می تواند تا حدودی به این سوال پاسخ دهد. این تابع نام جدول(و یا نام پارتیشنی از جدول) را دریافت می کند و حداکثر 100 هزار رکورد از آن جدول را بررسی کرده و نهایتا تخمینی از ...
ادامه مطلب
error_message_details یکی دیگر از پارامترهای جدید اوراکل در نسخه 23c هست که امکان نمایش جزییات خطاهای مربوط به Data Value را فراهم می کند با تنظیم این پارامتر به مقدار on، می توانیم برای خطاهایی نظیر ORA-00001: unique constraint violated، مقداری که سبب رخ دادن این دسته از خطاها شده است را در متن خطا ببینیم. برای مثال، در سناریوی زیر، فعال بودن پارامتر error_message_details در پیدا کردن مقداری که باعث این خطا شده است کمک می کند: SQL> create table tbl1(id number primary key); Table created. SQL...
ادامه مطلب
نازسازگاری در دیتادیکشنری امر متداولی نیست و به ندرت اتفاق می افتد اما در صورت رخ دادن می تواند بسیار چالش ساز باشد نمونه ای از این دست ناسازگاری که شاید شما هم با آن روبرو شده باشید، invalid reference است مثلا segmentای که اطلاعاتش در dba_objects موجود نیست. تا قبل از نسخه 23c، این قبیل ناسازگاری ها را می توانستیم با اسکریپت hcheck.sql شناسایی کنیم. اما در اوراکل نسخه 23c، پکیجی به نام DBMS_DICTIONARY_CHECK(البته در 23.3) ارائه شد که با کمک آن می توانیم از consistency در دیتادیکشنری اطمین...
ادامه مطلب