تالار های تخصصی

ساخت وبلاگ
اوراکل در نسخه 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; / THREE در این قطعه کد صرفا از عملگر مساوی استفاده شده است و برای استفاده از عملگرهای دیگر نظیر “>”، “<“، BETWEEN و IN باید از فرمت زیر که Searched CASE syntax نامیده می شود، استفاده کنیم: declare VALUE number := 3; text varchar2(50); begin text := case when VALUE < 0 OR VALUE > 5 then 'OUT OF RANGE' when VALUE in (1, 2) then 'ONE OR TWO' when VALUE between 0 and 3 then 'BETWEEN 0 AND 3 BUT NOT 1 NOR 2' else 'OTHER' end; dbms_output.put_line(text); end; / BETWEEN 0 AND 3 BUT NOT 1 NOR 2 همچنین می توان این کد را به فرمت زیر هم نوشت: declare VALUE number := 3; text varchar2(50); begin case when VALUE < 0 OR VALUE > 5 then text :='OUT OF RANGE'; when VALUE in (1, 2) then text :='ONE OR TWO'; when VALUE between 0 and 3 then text :='BETWEEN 0 AND 3 BUT NOT 1 NOR 2'; تالار های تخصصی...ادامه مطلب
ما را در سایت تالار های تخصصی دنبال می کنید

برچسب : نویسنده : خنجی niksaleh بازدید : 2 تاريخ : يکشنبه 26 فروردين 1403 ساعت: 22:00

در زمان ارائه قابلیت 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 parameter awr_pdb_autoflush_enabled NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ awr_pdb_autoflush_enabled boolean TRUE با این تغییر در صورتی که اسکریپت awrrpt.sql را در هر کدام از PDBها اجرا کنیم، گزینه AWR_PDB مقدار پیش فرض خواهد بود: Specify the location of AWR Data ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AWR PDB reports can be generated using data stored in this PDB or ROOT. Please enter the desired location at the prompt. Default value is 'AWR_PDB'. AWR_PDB - Use AWR data from PDB AWR_ROOT - Use AWR data from ROOT Enter value for awr_location: AWR_PDB Location of AWR Data Specified: AWR_PDB اما در نسخه های قبلی، گزینه AWR_ROOT مقدار پیش فرض بوده است: Specify the location of AWR Data ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AWR_ROOT - Use AWR data from root (default) AWR_PDB - Use AWR data from PDB Enter value for awr_location: برای دیتابیسی با تعداد PDB زیاد و workload بسیار بالا، تالار های تخصصی...ادامه مطلب
ما را در سایت تالار های تخصصی دنبال می کنید

برچسب : نویسنده : خنجی niksaleh بازدید : 7 تاريخ : يکشنبه 26 فروردين 1403 ساعت: 22:00

همانطور که می دانید AWR snapshotها در SYSAUX tablespace ذخیره می شوند و تا نسخه 19c نمی توان آنها را در tablespace مجزایی ذخیره کرد. این امکان در نسخه 19c با اضافه شدن پارامتر TABLESPACE_NAME به پروسیجر dbms_workload_repository.modify_snapshot_settings به وجود آمد. Connected to Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 SQL> desc dbms_workload_repository.modify_snapshot_settings Parameter Type Mode Default? --------------- -------- ---- -------- RETENTION NUMBER IN Y INTERVAL NUMBER IN Y TOPNSQL NUMBER IN Y DBID NUMBER IN Y TABLESPACE_NAME VARCHAR2 IN Y RETENTION NUMBER IN Y INTERVAL NUMBER IN Y TOPNSQL VARCHAR2 IN DBID NUMBER IN Y TABLESPACE_NAME VARCHAR2 IN Y همچنین اوراکل در نسخه 21c ستون TABLESPACE_NAME را به ویوی awr_cdb_wr_control اضافه کرده است که از طریق آن می توانیم tablespace جاری AWR  را مشخص کنیم: SQL*Plus: Release 21.0.0.0.0 - Production on Thu Apr 4 11:55:04 2024 SQL> desc awr_pdb_wr_control Name Null? Type ----------------------------------------- -------- ---------------------------- DBID NOT NULL NUMBER SNAP_INTERVAL NOT NULL INTERVAL DAY(5) TO SECOND(1) RETENTION NOT NULL INTERVAL DAY(5) TO SECOND(1) TO تالار های تخصصی...ادامه مطلب
ما را در سایت تالار های تخصصی دنبال می کنید

برچسب : نویسنده : خنجی niksaleh بازدید : 8 تاريخ : يکشنبه 26 فروردين 1403 ساعت: 22:00

باشگاه دانشجویان دانشگاه پیام نوردر سال 87 با هدف بهبود سطح دانش و کمک به دانشجویان پیام نور تاسیس گردید. این سایت وابسته به هیچ نهادی نمی باشد!و تابع قوانین جمهوری اسلامی ایران هستیم همچنین سایت دانشجویان دانشگاه پیام نور مفتخر است که بزرگترین جامعه مجازی دانشجویان پیام نور در سطح اینترنت را به ارمقان اورده است!

تالار های تخصصی...
ما را در سایت تالار های تخصصی دنبال می کنید

برچسب : نویسنده : خنجی niksaleh بازدید : 7 تاريخ : يکشنبه 26 فروردين 1403 ساعت: 22:00

باشگاه دانشجویان دانشگاه پیام نوردر سال 87 با هدف بهبود سطح دانش و کمک به دانشجویان پیام نور تاسیس گردید. این سایت وابسته به هیچ نهادی نمی باشد!و تابع قوانین جمهوری اسلامی ایران هستیم همچنین سایت دانشجویان دانشگاه پیام نور مفتخر است که بزرگترین جامعه مجازی دانشجویان پیام نور در سطح اینترنت را به ارمقان اورده است!

تالار های تخصصی...
ما را در سایت تالار های تخصصی دنبال می کنید

برچسب : نویسنده : خنجی niksaleh بازدید : 7 تاريخ : يکشنبه 26 فروردين 1403 ساعت: 22:00

زمانی که یکی از مجوزهای 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 usef/a Connected. SQL> select * from sys.tb; ORA-00942: table or view does not exist SQL> select * from v$datafile; ORA-00942: table or view does not exist اگر تصمیم داریم این محدودیت را حداقل در مورد مجوز select any table برای یک کاربر برداریم، می توانیم مجوز SELECT ANY DICTIONARY را به آن کاربر اعطا کنیم: SQL> grant SELECT ANY DICTIONARY to usef; Grant succeeded. SQL> conn usef/a Connected. SQL> select * from sys.tb; D - X SQL> select file# from v$datafile where rownum=1; FILE# ---------- 1 البته از اوراکل 12c، دسترسی به بعضی از جداول Data Dictionary حتی با داشتن مجوز  SELECT ANY DICTIONARY  هم امکان پذیر نیست. لیست بعضی از این جداول را در قسمت زیر می بینید: USER$, ENC$ , DEFAULT_PWD$, LINK$, USER_HISTORY$, CDB_LOCAL_ADMINAUTH$, XS$VERIFIERS نقش SELECT_CATALOG_ROLE هم می تواند دسترسی به ویوهای دیتادیکشنری را به کاربر اعطا کند که قبلا در مورد تفاوت این نقش با مجوز SELECT ANY DICTIONARY مطلبی را نوشته ایم. شکل پیشرفته تر از مجوز SELECT ANY DI تالار های تخصصی...ادامه مطلب
ما را در سایت تالار های تخصصی دنبال می کنید

برچسب : نویسنده : خنجی niksaleh بازدید : 15 تاريخ : دوشنبه 2 بهمن 1402 ساعت: 13:15

Hybrid Partitioned Table قابلیت جدیدی است که اوراکل در نسخه 19c ارائه کرده است با کمک این قابلیت می توان برای یک جدول، تلفیقی از پارتیشنهای exteal و inteal را ایجاد کرد. این روش از پارتیشن بندی، صرفا متدهای Range و List را پشتیبانی می کند البته در نسخه 19c امکان استفاده از متد Automatic List برای Hybrid Partitioned Table وجود ندارد و این امکان از نسخه 23c به وجود آمد. بنابرین از این نسخه(23c) می توانیم برای جداول Hybrid Partitioned Table از قابلیت Automatic List Partitioning استفاده کنیم. قبل از ایجاد جدول مورد نظر، دایرکتوری مربوط به دیتایی که در سیستم عامل قرار دارند را ایجاد می کنیم: SQL> create directory E_PARTITIONs as '/PARTITIONs'; Directory created جدول mytbl از نوع هیبریدی است و  به روش Automatic List پارتیشن بندی شده است: SQL> CREATE TABLE mytbl 2 ( 3 national_id NUMBER, 4 name VARCHAR2(20), 5 last_name VARCHAR2(20), 6 org_id NUMBER 7 ) 8 EXTERNAL PARTITION ATTRIBUTES( 9 TYPE ORACLE_LOADER 10 DEFAULT DIRECTORY E_PARTITIONs 11 ACCESS PARAMETERS 12 ( 13 FIELDS TERMINATED BY ',' (national_id,name,last_name,org_id) 14 ) 15 REJECT LIMIT UNLIMITED 16 ) 17 PARTITION BY LIST (org_id) AUTOMATIC 18 ( 19 PARTITION p1 VALUES (1), 20 PARTITION p2 VALUES (2), 21 PARTITION p_exteal VALUES (3) EXTERNAL LOCATION('part1.txt') 22 ); Table created در صورت فعال نبودن قابلیت Automatic List Partitioning، ستون org_id صرفا مقادیر 1، 2 و 3 را قبول می کرد اما تالار های تخصصی...ادامه مطلب
ما را در سایت تالار های تخصصی دنبال می کنید

برچسب : نویسنده : خنجی niksaleh بازدید : 16 تاريخ : دوشنبه 2 بهمن 1402 ساعت: 13:15

زمانی که 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 (TNS V1-V3) Owner = Process: USER (orapid = 75, ospid = 3268895) User = 462710969 Program = plsqldev.exe Result = ORA-0 برای kill کردن session در حالت HARD می توانیم عبارت immediate را به انتهای دستور اضافه کنیم: SQL> ALTER SYSTEM KILL SESSION '1025,43030' IMMEDIATE; System altered. مجددا با کمک Alert Log جزییات اجرای این دستور را هم خواهیم دید: 2023-12-19T13:33:07.749571+03:30 (4):A user has terminated a session. KILL SESSION for sid=(1025, 43030): Reason = alter system kill session Mode = KILL HARD SAFE -/-/-/- Requestor = USER (orapid = 55, ospid = 3267554, inst = 1) User = oracle Program = sqlplus@OEL8 (TNS V1-V3) Owner = Process: USER (orapid = 75, ospid = 3268940) User = 462710969 Program = plsqldev.exe Result = ORA-0 در نسخه 23c اوراکل Hidden Parameterای به نام kill_session_force_ را اضافه کرده است که می توان از طریق آن، این رفتار پیش فرض را تغییر داد: set linesize 1000 col Parameter format a20 col Session_Value format a14 col Instance تالار های تخصصی...ادامه مطلب
ما را در سایت تالار های تخصصی دنبال می کنید

برچسب : نویسنده : خنجی niksaleh بازدید : 20 تاريخ : يکشنبه 17 دی 1402 ساعت: 16:28

DEDUPLICATION یکی از قابلیتهای جدید اوراکل در نسخه 11g است که همراه با SECUREFILE LOBها ارائه شد و می توان بعد از ایجاد جدول هم این قابلیت را برای SECUREFILE LOBها فعال کرد اما سوال مهمی که در این زمینه مطرح می شود آن است که DEDUPLICATION برای LOBهای موجود چقدر فضا آزاد می کند؟ در اوراکل نسخه 23c، تابعی در این زمینه ارائه شد که می تواند تا حدودی به این سوال پاسخ دهد. این تابع نام جدول(و یا نام پارتیشنی از جدول) را دریافت می کند و حداکثر 100 هزار رکورد از آن جدول را بررسی کرده و نهایتا تخمینی از میزان ذخیره سازی فضا را ارائه می کند. در ادامه، سناریوی تستی را در این زمینه می بینید. SQL> create table tbl (id number,describe clob); Table created در این جدول اطلاعاتی را درج می کنیم که بیشتر آن تکراری هستند: SQL> begin 2 for i in 1 .. 70000 loop 3 insert into tbl 4 values 5 (1, 6 lpad('www.usefzadeh.com', 7 1000000000000000000000000000000000000000000000000000000000000000000000000000000000, 8 'a')); 9 end loop; 10 insert into tbl values (2, 'Ramtollah Rabbani'); 11 insert into tbl values (3, 'Armin Bahamin'); 12 insert into tbl values (4, 'Jamshid Khan'); 13 commit; 14 end; 15 / PL/SQL procedure successfully completed تعداد رکوردهای جدول: SQL> select count(*) from tbl; COUNT(*) ---------- 70003 برای محاسبه تخمین میزان فضای صرفه جویی شده پس از DEDUPLICATION، تابع dbms_lob.GET_LOB_DEDUPLICATION_RATIO را اجرا می کنیم: SQL> set serverout on SQL> DECLARE dedup_ratio n تالار های تخصصی...ادامه مطلب
ما را در سایت تالار های تخصصی دنبال می کنید

برچسب : نویسنده : خنجی niksaleh بازدید : 21 تاريخ : يکشنبه 17 دی 1402 ساعت: 16:28

درخواست اجراییه سندی است که به موجب آن محکوم له (کسی که رای به نفع او صادر شده است) می‌تواند از دادگاه صادرکننده رای صدور اجراییه را درخواست کند. اجراییه سندی است که به موجب آن اجرای احکام مدنی موظف به اجرای حکم صادره می‌شود. درخواست اجراییه یکی از مهم‌ترین مراحل اجرای حکم در نظام حقوقی ایران است. با صدور اجراییه اجرای احکام مدنی موظف می‌شود که اقدامات لازم را برای اجرای حکم انجام دهد. مدارک مورد نیاز برای درخواست اجرائیه 1.     تصدیق اصل رای یا رونوشت توسط دادگاه مرجع صدور اجرائیه دادگاه صادرکننده رای است. بنابراین، محکوم له باید اصل رای یا رونوشت آن را که به وسیله دادگاه تصدیق شده باشد، به دادگاه ارائه دهد. رای صادره توسط دادگاه باید قطعی و لازم الاجرا باشد. در صورتی که رای صادره توسط دادگاه، غیر قطعی یا غیر لازم الاجرا باشد، دادگاه نمی‌تواند اجراییه برای آن صادر کند. رونوشت رای باید توسط دادگاه تصدیق شده باشد. تصدیق رای توسط دادگاه، به معنای تایید صحت آن است. 2.     رسید پرداخت هزینه‌های اجرایی محکوم له باید هزینه‌های اجرایی را به حساب خزانه داری کل کشور واریز کند و رسید آن را به دادگاه ارائه دهد. در صورتی که محکوم له، هزینه‌های اجرایی را پرداخت نکند، دادگاه درخواست او را رد می‌کند. هزینه‌های اجرایی عبارتند از: نیم عشر از مبلغ محکوم به هزینه‌های ابلاغ اجراییه هزینه‌های اجرای حکم مشخصات محکوم له و محکوم علیه در درخواست اجرائیه، باید مشخصات محکوم له و محکوم علیه، به طور کامل قید شود. این مشخصات عبارتند از: نام و نام خانوادگی شماره ملی محل سکونت موضوع رای در درخواست اجرائیه، باید موضوع رای و مبلغ محکوم به قید شود. این موضوع عبارت اس تالار های تخصصی...ادامه مطلب
ما را در سایت تالار های تخصصی دنبال می کنید

برچسب : نویسنده : خنجی niksaleh بازدید : 28 تاريخ : دوشنبه 11 دی 1402 ساعت: 14:59

خبرنامه