کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

مدیریت sequence ها و synonym ها

مدیریت sequence ها و synonym ها

Sequence یک شی پایگاه داده است که چندین کاربر به طور همزمان می توانند با استفاده از آن اعداد صحیح (integer) منحصر بفرد ایجاد کنند. با استفاده از شی یاد شده می توان به صورت خودکار مقادیر کلید اولیه (primary key values) ایجاد کرد.
با استفاده از sequence ها، می توان اعدادی را به ترتیب مشخص ایجاد کرد. همچنین می توان به واسطه ی sequence ها، مقادیر منحصر بفرد در ستون های primary key و unique key جداول پایگاه داده درج کرد. به منظور ایجاد sequence کافی است از دستور CREATE SEQUENCE بهره جست.


create sequence bills ‎ 
        ‎     start with 1‎ 
        ‎     increment by 1‎ 
        ‎     minvalue 1‎ 
        ‎     maxvalue 100/nomaxvalue ‎ 
        ‎     cycle/nocycle 
        ‎     cache 10/nocache;‎

sequence به نام bills ایجاد کرده که با 1 شروع شده و هر بار به اندازه ی یک واحد افزایش می یابد. Maxvalue (مقدار بیشینه) آن معادل 100 می باشد، یعنی پس از اینکه 100 عدد تولید شد، اگر شما عبارت NOCYCLE را ذکر کنید، شمارش و افزایش اعداد متوقف می شود و در غیر این صورت چنانچه عبارت CYCLE را بکار ببرید، شمارش بار دیگر از عدد 1 آغاز می شود. همچنین می توانید عبارت NOMAXVALUE را مشخص کنید که در آن صورت بی نهایت عدد تولید می شود. از گزینه ی CACHE برای ذخیره ی موقت sequence number ها در SGA (System Global Area) استفاده می شود. SGA در واقع آن بخشی از حافظه ی سیستم را تشکیل می دهد (RAM) که توسط کلیه ی فرایندهای متعلق به یک نمونه ی پایگاه داده ی ORACLE به اشتراک گذاشته می شود. SGAدربردارنده ی کلیه ی اطلاعات لازم برای عملیات نمونه (instance) می باشد. در پی دسترسی به یک sequence number، oracle ابتدا سعی می کند عدد مورد نظر را از حافظه ی نهان (cache) بازیابی کند، در صورت یافت نشدن عدد مورد نظر، عدد بعدی را از دیسک استخراج کرده و می خواند. از آنجایی که خواندن داده ها از دیسک در مقایسه با خواندن اطلاعات از SGA زمان بر می باشد، توصیه می کنیم همیشه sequence number ها را در SGA به طور موقت ذخیره کنید. حال چنانچه از option NOCACHE استفاده کنید، ORACLE هیچ عددی را در SGA ذخیره نکرده و هر بار شما سعی بر دسترسی به sequence number کنید، ORACLE اعداد را از دیسک می خواند.


دسترسی به sequence number

به منظور دسترسی به sequence number می توانید از عبارت های NEXTVAL و CURRVAL استفاده کنیم. برای مثال، جهت دستیابی به sequence number بعدی از sequence bill، کافی است دستور زیر ار اجرا کنید.


Select bills.nextval from dual;‎

        BILLS

        ‎-----‎

        ‎1‎

NEXTVAL عدد بعدی موجود در توالی (sequence) را بازیابی می کند، در حالی که CURRVAL عدد جاری توالی را بازگردانی می نماید. استفاده از عبارات گفته شده به خصوص در شرایطی بسیار مفید واقع می شود که شما record هایی را در جداول Master/Detail وارد کرده اید. به عنوان مثال، جهت درج یک record جدید در master table به نام SALES و detail table به نام SALES_DETAILS، دستور زیر را بکار می بریم.


insert into sales (billno,custname,amt) ‎

        ‎  values (bills.nextval,’Sami’,2300);‎

        insert into sales_details (billno,itemname,qty,rate) values ‎

        ‎     (bills.currval,’Onida’,10,13400);‎

اعمال تغییرات به sequence

جهت اعمال تغییرات به sequence، دستور ALTER SEQUENCE را مورد استفاده قرار می دهیم. به عنوان مثال برای اصلاح bill sequence MAXVALUE دستور زیر را اجرا کنیم:


ALTER SEQUENCE BILLS ‎

        ‎     MAXVALUE 200;‎

به استثنای مقدار آغازین، می توان هر پارامتر دیگری از یک sequence را تغییر داد. به منظور اصلاح پارامتر START WITH، باید sequence را مجددا ایجاد کنید.


حذف sequenceها

برای حذف sequence، لازم است دستور DROP SEQUENCE را بکار ببریم.


drop sequence bills;‎

بازیابی اطلاعات درباره ی Sequence ها

به منظور بازیابی اطلاعات درباره ی تعداد sequence های موجود در schema خود و همچنین تنظیمات (setting) آن ها، دستور زیر را اجرا کنید.


select * from user_sequences;‎

SYNONYM ها - نام مستعار

Synonym در حقیقت یک نام مستعار (aliase) است که برای جداول، نسخه های فوری (snapshot)، sequence ها، procedure ها، توابع یا پکیج ها بکار می رود. شما می توانید به جدول یا ستون نام دیگری را با تخصیص یک aliase بدهید. این امکان می تواند هنگامی که شما ستون یا جدولی دارید که نام پیچیده یا طولانی دارد بسیار مفید باشد.
در مجموع دو نوع نام مستعار وجود دارد.


  1. Private synonym
  2. Public synonym

چنانچه synonym را به صورت public (سراسری یا عمومی) تعریف کنید، هر کاربری می تواند با تعریف اسم synonym به آن دسترسی داشته باشد؛ بدین معنا که کاربر به هنگام دسترسی به synonym ملزوم به ذکر اسم مالک نیست. این درحالی است که کاربر برای دستیابی به synonym ای که به صورت private (خصوصی) تعریف شده، باید دارای مجوزهای لازم باشد. کاربران برای داشتن دسترسی به private synonym، باید اسم مالک را تعریف کند.


ایجاد synonym ها

جهت ایجاد synonym برای جدول SCOTT emp، دستور زیر را بکار می بریم.


Create synonym employee for scott.emp;‎

می توان همانگونه که به شی زیرین (underlying object) یک synonym ارجاع می دهید، به synonym در یک دستور DML ارجاع داد. به طور مثال، اگر یک synonym به نام EMPLOYEE به یک جدول یا view اشاره دارد، استفاده از این دستور مجاز خواهد بود.


select * from employee;‎

فرض بگیرید تابعی به نام TODAY ایجاد کرده که کار آن بازگردانی تاریخ و زمان جاری است، سپس مجوز اجرای آن را به تمام کاربران پایگاه داده اعطا کرده اید. حال کاربران این اجازه را دارند که تابع مزبور را اجرا کنند، اما به هنگام فراخوانی آن باید دستور زیر را بکار ببرند.


create public synonym today for scott.today;‎

اکنون چنانچه یک public synonym تعریف کنید، کاربران برای دسترسی به آن نیازی به تعریف اسم تابع همراه با اسم مالک نیستند. به منظور تعریف یک public synonym، لازم است دستور زیر بکار برده شود.


create public synonym today for scott.today;‎

حال کاربران برای دسترسی به تابع، باید دستور زیر را تایپ کنند.


select today from dual;‎

حذف synonym ها

برای این منظور، دستور DROP SYNONYM را مورد استفاده قرار می دهیم.


مثال:

برای حذف اسم مستعار (synonym) EMPLOYEE، این دستور را تایپ و اجرا می کنیم.


drop synonym employee;‎

بازیابی اطلاعات synonym ها

جهت بازایابی و مشاهده ی اطلاعات مربوط به synonym ها، دستور زیر را بنویسید.


select * from user_synonyms;‎
1394/07/27 5765 1400
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...