تجربیات کاری چند دوست

در این وبلاگ تجربیاتی که در حین کار بدست آورده ایم را به اشتراک خواهیم گذاشت

تجربیات کاری چند دوست

در این وبلاگ تجربیاتی که در حین کار بدست آورده ایم را به اشتراک خواهیم گذاشت

تجربیات کاری چند دوست
آخرین نظرات
  • ۱۶ مرداد ۹۸، ۰۱:۰۰ - علی جهان نما
    عالی بود

۵ مطلب با موضوع «Oracle 12c New Features» ثبت شده است

در اوراکل 12c امکان ثبت رویدادنگاری از دستورات DDL وجود دارد ، البته این امکان در 11g نیز وجود داشت ولی در نسخه جدید رویدادنگاری ها جدای از alert log دخیره میشوند . با این امکان میتوان متوجه شد که چه تغییراتی توسط چه کسی و در چه زمانی بر روی پایگاه داده اعمال شده است . بزای فعالسازی این امکان باید پارامتر ENABLE_DDL_LOGGING را فعال کنیم ، این پارامتر میتواند در سطح دیتابیس یا سشن فعال شود . پس از فعال شدن این پارامتر تمام دستورات DDL در قالب یک فایل XML و یک لاگ فایل در مسیر  ORACLE_BASE/diag/rdbms/DBNAME/log|ddl$  ذخیره خواهند شد. یک فایل XML شامل اطلاعاتی نظیر دستور DDL ، آدرس IP ، زمان اجرا و ... میباشد .

دستور فعال سازی DDL logging : 

ALTER SYSTEM|SESSION SET ENABLE_DDL_LOGGING=TRUE;

در صورت فعال سازی دستورات زیر رویدادنگاری خواهند شد :

CREATE|ALTER|DROP|TRUNCATE TABLE
DROP USER
CREATE|ALTER|DROP PACKAGE|FUNCTION|VIEW|SYNONYM|SEQUENC

بیشتر بخوانید :

enable_ddl_logging Tips in Oracle 11g


  • صادق جوانمرد

تا پیش از اوراکل 12 چنانچه بخواهید برای ستونی از یک جدول Defaul Value تعیین کنید، باید یک Trigger و Sequence ایجاد شود؛ تا هنگام Insert در جدول مورد نظر، Trigger  اجرا شود و با اضافه شدن  Sequnce،  مقدار آن در ستون مورد نظر قرار گیرد، مانند مثال زیر :

CREATE TABLE Person (
ID NUMBER(10) NOT NULL,
… );

ALTER TABLE departments ADD (
CONSTRAINT person_pk PRIMARY KEY (ID));

CREATE SEQUENCE person_seq START WITH 1;

CREATE OR REPLACE TRIGGER person_trgr
BEFORE INSERT ON Person
FOR EACH ROW

BEGIN
SELECT person_seq.NEXTVAL
INTO :new.id
FROM dual;
END;

ولی در اوراکل 12C نیازی به ساختن Trigger نیست و میتوان تنها با استفاده از Sequence برای ستون مورد نظر Default Value تعیین کرد. به عنوان مثال :

CREATE SEQUENCE person_seq;

CREATE TABLE Person (
ID NUMBER(10) DEFUALT person_seq.NEXTVAL,
… );

  • محمد جعفری

در نسخه های پیشین شما تحت هیچ شرایطی امکان تعریف چند ایندکس روی یک ستون یا یک مجموعه از ستونهای مشترک را نداشتید . اوراکل 12c R1 این امکان را به شرط متفاوت بودن نوع ایندکس ها فراهم کرده است . البته همچنان اوراکل فقط از یک ایندکس که اصطلاها به آن فعال یا آشکار -active/visible- گفته میشود استفاده خواهد کرد . در صورتی که بخواهید ایندکس های پنهان نیز به کار گرفته شوند باید مقدار پارامتر OPTIMIZER_USE_INVISIBLE_INDEXES را برابر true قرار دهید .

مثالی از ساخت ایندکس ها :

create index idx_person_1 on person(national_code,gender);
create bitmap index idx_peson_2 on person(national_code,gender) invisible;

بیشتر بخوانید :

Multiple Indexes on the Same Set of Columns in Oracle Database 12c Release 1


  • صادق جوانمرد
اکنون در اوراکل 12c R1 امکان تعریف ستون های نامرئی -invisible columns- برای جداول  وجود دارد ، وفتی فیلد به عنوان یک ستون نامرئی تعریف میشود دیگر در نتایح جستجوهای عادی نمایش داده نخواهد شد و برای استفاده از این ستون ها باید بطور مستقیم به آن ها اشاره کرد.
 تعریف این ستون ها بسیار ساده است :
CREATE TABLE emp (eno number(6), ename name varchar2(40), sal number(9) INVISIBLE);
همینطور میتوان آن  را غیر فعال کرد :
ALTER TABLE emp MODIFY (sal visible);
 - در عبارت insert نیز باید صریحا به نام این ستون ها اشاره کرد.
 -  virtual column ها و  partition column ها نیز میتوانند به عنوان یک ستون
نامرئی تعریف شوند.
 - امکان استفاده از ستون ها
نامرئی در جداول موقت - temporary table - ، جداول خارجی - external tables - و جداول کلاستر - cluster table -  وجود ندارد .
 
بیشتر بخوانید :

Invisible Columns in Oracle Database 12c Release 1 (12.1)

  • صادق جوانمرد

در نسخه 12c R1 تغییر نام و جابجا کردن دیتافایل ها بسیار ساده تر شده است ، از این نسخه به بعد میتوان بدون ایجاد اختلال در عملکرد پایگاه داده و به صورت بر خط دیتافایل ها را تغییر نام داد یا جابجا کرد ، در طول مدتی که دیتافایل در حال انتقال است کاربر میتواند  query  و دستورات DML و DDL را اجرا کند . همینطور از این طریق میتوان دیتافایل ها را بین فصای ذخیره سازی ASM و غیر  ASM و بلعکس جا به جا کرد.

در این نسخه میتوان از دستور ALTER DATABASE MOVE DATAFILE برای انتقال دیتافایل استفاده کرد ، در ادامه چند مثال برای استفاده از آن ذکر شده است :

تغییر نام دیتافایل :

ALTER DATABASE MOVE DATAFILE '/u00/data/OLD_File.dbf'  TO '/u00/data/NEW_File.dbf';

انتقال دیتافایل به ASM :

ALTER DATABASE MOVE DATAFILE '/u00/data/FileToMove.dbf' TO '+DG_DATA';

انتقال دیتافایل بین دیسک گروپ های ASM :

 ALTER DATABASE MOVE DATAFILE '+DG_DATA/DBNAME/DATAFILE/File.dbf ' TO '+DG_DATA_02';

بازنویسی دیتافایل در صورتی که دیتافایلی به همان نام در مسیر جدید موجود باشد :

ALTER DATABASE MOVE DATAFILE '/u00/data/File.dbf' TO '/u00/data_new/File.dbf' REUSE;

کپی کردن دیتافایل به مسیر جدید بدون حذف دیتا فایل در مسیر قبلی :

ALTER DATABASE MOVE DATAFILE '/u00/data/File.dbf' TO '/u00/data_new/File.dbf' KEEP;


بیشتر بخوانید :

Online Move Datafile in Oracle Database 12c Release 1 (12.1)


  • صادق جوانمرد