
همانطور که میدانید، وقتی در یک تراکنش رکوردی حذف یا بروزرسانی میشود، گاهی لازم است تغییر انجامشده به حالت قبلی بازگردد (rollback). برای مثال، کاربری رکوردی را بروزرسانی میکند و بلافاصله متوجه میشود که باید این تغییر را لغو کند. در اکثر دیتابیسهای رابطهای مدرن که ACID را بهطور کامل پشتیبانی میکنند، این امکان وجود دارد، اما مکانیزم اجرایی آن در ...
ادامه مطلب
زمانی که 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 (...
ادامه مطلب
تغییر Execution Plan یک کوئری می تواند به دلایل ساده ای مثل حذف و اضافه کردن ایندکس، پارتیشن بندی جدول، پارتیشن بندی ایندکس اتفاق بیفتد اما شناسایی علت تغییر رفتار Optimizer همیشه ساده نیست چرا که در بعضی از موارد تغییر در Optimizer Environment منجر به ایجاد Execution Plan جدید می شود. برای مثال در sessionای پارامتر OPTIMIZER_INDEX_COST_ADJ که میزان گرایش Optimizer به استفاده از ایندکس را تعیین می کند، به عدد 1 و در session دیگر این پارامتر به مقدار 1000! تنظیم شده است بدون تردید این تفاوت ها در...
ادامه مطلب
در نسخه 23c دستور OERR اطلاعات بیشتری را برای بسیاری از خطاها(نسبت به نسخه های قبلی) ارائه می کند که این مسئله می تواند در شناسایی علت رخ دادن خطا و همچنین رفع سریع تر آن کمک کند. بعنوان مثال، برای خطای ORA-00001: unique constraint (constraint_name) violated این دستور را در دو نسخه 21c و 23c اجرا می کنیم: 'Oracle 21c': [oracle@OEL7 ~]$ oerr ora 00001 00001, 00000, "unique constraint (%s.%s) violated" // *Cause: An UPDATE or INSERT statement attempted to insert a duplicate key. // For Tru...
ادامه مطلب
همانطور که می دانید اوراکل برای هر LOB segment یک نام خودکار با پیشوند SYS_LOB ایجاد می کند: SQL> create table asnad( id number, doc clob); Table created SQL> select segment_name from dba_lobs where table_name='ASNAD'; SEGMENT_NAME ------------------------------ SYS_LOB0000136126C00002$$ در نسخه 21c برای تغییر نام SYS_LOBها می بایست LOB segment را move داد که این کار بسیار پرهزینه بود و چالشهایی نظیر بازسازی ایندکسهای جدول را به همراه داشت: SQL> insert into ASNAD values(1,'my name is ...
ادامه مطلب
GIMR یا همان Grid Infrastructure Management Repository در اوراکل 12c ارائه شد و هدف اوراکل از ارائه GIMR، ثبت وقایع و رخدادهای مربوط به کلاستر می باشد به طور دقیق تر، GIMR قرار است Cluster Health Monitor را در دیتابیسش ثبت کند. این دیتابیس حدودا 20 جدول دارد که لیست جداول آن را می توان به روش زیر مشاهده کرد: [grid@RAC1 ~]$ export ORACLE_SID=-MGMTDB [grid@RAC1 ~]$ sqlplus "/as sysdba" SQL> alter session set container=GIMR_DSCREP_10; Session altered. SQL> select table_name from dba_tables w...
ادامه مطلب
دانلود آموزش SQLxa0شامل مطالب Oracle Database 12c R2: SQL Workshop I و Oracle Database 12c R2: SQL Workshop II(نویسنده مطلب: مهندس میلاد خالقی) SQL_DOC_PDF دانلود آموزش برنامه نویسی PL/SQL برای دیتابیس اوراکل(نویسنده مطلب: مهندس میلاد خالقی) PLSQL_DOC...
ادامه مطلب
در دیتابیس اوراکل تعدادی پکیج به صورت BUILT-IN تعریف شده اند که به آنها پکیج های DBMS می گویند. این پکیج ها کاربردهای مختلفی دارند و می توان از آنها در زمان ساخت برنامه ها بهره برد. چگونه پکیج های D...
ادامه مطلب
در PL/SQL با استفاده از نوع (OBJECT (OBJECT TYPE می توان برنامه نویسی شی گرا یاOBJECT ORIENTED انجام داد. در OBJECT واسط ها و جزییات پیاده سازی از هم جدا می شوند و در دیتابیس ذخیره گردند. این روش، زم...
ادامه مطلب
در ادامه آموزش PL/SQL، در این قسمت پکیج (PACKAGE) را توضیح می دهیم. پکیج یکی از OBJECT های دیتابیس اوراکل است که متغیرها، زیربرنامه ها و … که از لحاظ منطقی به هم مرتبط هستند را در یک گروه قرار ...
ادامه مطلب
پرسش: چگونه می توان مسیر فایلهای Logی که در var/log/ قرار دارند را به مسیر دیگری تغییر داد؟ پاسخ: مسیر فایلهای Log در لینوکس 8,RHEL 6,7، در فایل پیکربندی سرویس Rsyslog تنظیم می شوند: [root@node1 ~]# ...
ادامه مطلب
در این قسمت انواع COLLECTION در PL/SQL را توضیح می دهیم. COLLECTION یک مجموعه ترتیبی از اجزای مختلف است که نوع داده یکسان دارند. سه مدل COLLECTION قابل تعریف و استفاده هستند که یکی از آنها Varray یا ...
ادامه مطلب
در این قسمت نیلوبلاگ رکورد نیلوبلاگ (RECORD) در PL/SQL و روش استفاده از آن را توضیح می دهیم. رکورد یک ساختمان داده است که آیتم های متفاوت را کنار هم نگه می دارد. یعنی بر خلاف آرایه، این آیتم ها نوع داده متفاوت دارند. ...
ادامه مطلب
در این قسمت نیلوبلاگ EXCEPTION و روش استفاده از EXCEPTION-HANDLER را توضیح می دهیم. منظور از EXCEPTION رخداد خطا در زمان اجرای برنامه است. برای مثال به دنبال اطلاعاتی هستیم که در دیتابیس وجود ندارند یا یک ورو...
ادامه مطلب
در این قسمت نیلوبلاگ TRIGGER و روش استفاده از آن را توضیح می دهیم. TRIGGER یک بلاک برنامه ذخیره شده در دیتابیس اوراکل نیلوبلاگ است که همزمان با رخدادهای خاص به صورت اتوماتیک اجرا (FIRE) می شود. رخدادهایی که سبب اجرای ...
ادامه مطلب
در این فصل انواع LOOP یا حلقه در PL/SQL را بررسی می کنیم. ممکن است در یک برنامه نیاز باشد یک بلاک از کد چندین مرتبه اجرا شود در این مواقع از حلقه استفاده می شود. در جدول زیر انواع روش های حلقه و توض...
ادامه مطلب
رشته رشته (STRING)، تعداد مشخصی از داده های کاراکتری است. کاراکترهای رشته می توانند از نوع عددی، حروف، جای خالی یا ترکیبی از آنها باشند. xa0در PL/SQL سه نوع رشته داریم: 1.رشته های از نوع FIXED-LENGTH: ...
ادامه مطلب
در این قسمت xa0 پروسیجر (PROCEDURE) و روش استفاده از آن را توضیح می دهیم ولی در ابتدا لازم است با مفهوم زیربرنامه یا SUBPROGRAM آشنا باشیم. در زبان PL/SQL، زیربرنامه یک واحد از برنامه است که کار خاصی را ...
ادامه مطلب
همانطور که می دانید، با اجرای دستورxa0 “sqlplus “/as sysdba در محیط container database، به صورت پیش فرض به root container متصل خواهیم شد: xa0[oracle@OL7 ~]$ sqlplus “/as sysdba” S...
ادامه مطلب
اگر پارامترهای PASSWORD_REUSE_MAX و یا PASSWORD_REUSE_TIME را برای پروفایلی تنظیم کنیم، شکل hash شده پسورد کاربران ی که عضو ان پروفایل هستند در جدولی از دیتابیس به نام $user_history ثبت خواهد شد و از ...
ادامه مطلب