اوراکل 12cR2- مروری بر دو بهبود ساده در دیتاپامپ

اوراکل 12c قابلیتهای را در زمینه Data Pump ارائه کرد که قبلا بعضی از آنها را مورد بررسی قرار داده ایم. در این متن به دو بهبود ساده اوراکل 12cR2 در این زمینه خواهیم پرداخت.

(بیشتر…)

بهبودی در جمع آوری خودکار آمار در اوراکل 19c

در محیطهای که نرخ تغییر داده نسبتا زیاد است، شاید استفاده از آمارهای بروز شده از طریق automated maintenance taskهای شبانه، چندان کارا نباشد با این نگاه، اوراکل در نسخه 19c، قابلیتهای جدیدی را در زمینه جمع آوری و بروزرسانی خودکار Statistic ارائه کرده که قبلا در مقاله ای یکی از این قابلیتها را که Real-time Statistic نام داشت، مورد بررسی قرار دادیم.

در این مقاله قصد داریم به یکی دیگر از این قابلیتها که High-frequency Optimizer Statistics Collection نام دارد، بپردازیم.

(بیشتر…)

اهدای مجوز insert و update در سطح ستون

مجوزهای insert و update را می توان در سطح ستونهای یک جدول به کاربران اهدا نمود.

دستور grant در مثال زیر، مجوز اجرای دستور update بر روی ستونهای name و last_name از جدول sys.mytbl را به کاربر usef اهدا می کند:

SQL> create table sys.mytbl(id number,name varchar2(9),last_name varchar2(9));

Table created

SQL> insert into sys.mytbl values(1,’vahid’,’usefzadeh’);

1 row inserted

SQL> commit;

Commit complete

SQL> grant update(name,last_name) on mytbl to usef;

Grant succeeded

(بیشتر…)

بررسی حالتهای shutdown در دیتابیس پستگرس

برای توقف و یا استارت کردن دیتابیس پستگرس از دستور pg_ctl استفاده می شود. فرمت کلی این دستور به صورت زیر می باشد:

pg_ctl start [-w] [-t seconds] [-s] [-D datadir] [-l filename] [-o options] [-p path] [-c]

pg_ctl stop [-W] [-t seconds] [-s] [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ]

همانطور که در شکل کلی دستور pg_ctl قابل مشاهده است، استارت کردن دیتابیس پستگرس پییچدگی خاصی ندارد و صرفا می توان با اجرای دستور زیر، دیتابیس را استارت نمود:

[postgres@ol7 ~]$ pg_ctl -D /postgres/mydb  start

waiting for server to start….2019-09-04 01:55:24.914 EDT [22529] LOG:  listening on IPv6 address “::1”, port 5432

2019-09-04 01:55:24.914 EDT [22529] LOG:  listening on IPv4 address “127.0.0.1”, port 5432

2019-09-04 01:55:24.917 EDT [22529] LOG:  listening on Unix socket “/tmp/.s.PGSQL.5432”

2019-09-04 01:55:24.932 EDT [22530] LOG:  database system was shut down at 2019-09-04 01:55:21

2019-09-04 01:55:24.936 EDT [22529] LOG:  database system is ready to accept connections

 done

server started

اما برای متوقف کردن دیتابیس پستگرس، سه انتخاب وجود دارد:

smart|fast|immediate

قصد داریم در این متن، به تفاوت هر کدام از این گزینه ها بپردازیم.

(بیشتر…)

مثالی در مورد مفهوم read consistency

در زمان اجرای یک پرس و جوی زمانبر، ممکن است تغییراتی در جداول مرجع این پرس وجو اعمال شود در این صورت، سوالی مطرح می شود که آیا این پرس و جوی در حال اجرا، تغییرات جدید را هم در محاسباتش اعمال می کند یا خیر؟

پاسخ این سوال به نوع جداول و ویوهای مرجع پرس و جو بستگی دارد برای مثال، در زمان رجوع به dynamic performance viewها ممکن است تغییرات ایجاد شده در زمان اجرای پرس و جو لحاظ شود و نهایتا خروجی آن پرس و جو را تغییر دهد.

اما در زمان رجوع به جداولی که اطلاعات کاربران در آن ذخیره می شود، اوراکل با لحاظ کردن scn زمان اجرای پرس و جو(زمانی که پرس و جو شروع به اجرا می کند)، تغییرات جدید را در آن اعمال نخواهد کرد.

در صورتی که تغییرات جدید در محاسبات اعمال نشوند و اوراکل صرفا با کمک تصویر ثابتی که از اطلاعات جدول دارد، پرس و جو را اجرا کند، اصطلاحا مفهوم read consistency توسط اوراکل رعایت شده است.

(بیشتر…)

اجرای PDB relocation و PDB cloning به صورت از راه دور با کمک DBCA

قبلا در مقاله های جداگانه، مطالبی را در مورد قابلیتهای PDB relocation و PDB cloning ارائه کردیم در اوراکل 19c، انجام این عملیات از طریق دستور DBCA آن هم به صورت silent قابل انجام است که در این مقاله، به این قابلیت جدید خواهیم پرداخت.

(بیشتر…)

جستجوی یک عبارت در محتویات فایلها با استفاده از دستور grep

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

(بیشتر…)

نمایش خروجی به فرمت csv در اوراکل 12c

در اوراکل 12cR2، قابلیت جدیدی برای نمایش خروجی پرس و جوها به فرمت csv ارائه شد. برای استفاده از این قابلیت، باید دستور SET MARKUP CSV ON را قبل از اجرای پروس وجو، اجرا نمود:

SQL> SET MARKUP CSV ON

SQL> select * from mytbl;

“ID”,”FNAME”,”LAST_NAM”

1,”ali”,”dai”

2,”mosen”,”bengar”

3,”parviz”,”mazloumi”

4,”payan”,”rafat”

همانطور که می بینید، جداکننده پیش فرض، کاما می باشد. برای تغییر جداکننده، باید از عبارت DELIMITER کمک گرفت:

SQL> SET MARKUP CSV ON DELIMITER #

SQL> select * from mytbl;

“ID”#”FNAME”#”LAST_NAM”

1#”ali”#”dai”

2#”mosen”#”bengar”

3#”parviz”#”mazloumi”

4#”payan”#”rafat”

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

SQL> SET MARKUP CSV ON QUOTE OFF

SQL> select * from mytbl;

ID#FNAME#LAST_NAM

1#ali#dai

2#mosen#bengar

3#parviz#mazloumi

4#payan#rafat

 

پاسخ به سوالات مقدماتی اوراکل – 1(مدیریت instance)

1.برای مدیریت instance از طریق ابزار sqlplus، تنظیم چه متغیرهایی ضروری می باشد؟

صرفا با تنظیم دو متغیر ORACLE_SID و ORACLE_HOME می توان وارد محیط sqlplus شد.

2.instance از چه زمانی استارت شده و در چه وضعیتی قرار دارد؟

SQL> select startup_time,status from v$instance;

3.با اجرای دستور startup، اوراکل در چه مسیری و با چه ترتیبی فایلهای راه انداز را جستجو می کند؟

مسیر پیش فرض فایلهای راه انداز:

$ORACLE_HOME/dbs

فایلها به ترتیب زیر جستجو خواهند شد(البته اگر فایلی یافت شود، فایل بعدی جستجو نخواهد شد):

spfile$ORACLE_SID.ora

spfile.ora

Init$ORACLE_SID.ora

4.برای استارت شدن instance، تنظیم چه پارامترهایی الزامیست؟

صرفا با تعیین پارامتر db_nameه، instance استارت خواهد شد:

[oracle@ol7 ~]$ vi pfile.ora

*.db_name=testdb

[oracle@ol7 ~]$ export ORACLE_SID=db1

[oracle@ol7 ~]$ export ORACLE_HOME=/19c/home

[oracle@ol7 ~]$ sqlplus “/as sysdba”

SQL*Plus: Release 19.0.0.0.0 – Production on Wed Jul 31 12:15:42 2019

Version 19.3.1.0.0

Connected to an idle instance.

SQL> startup pfile=’/home/oracle/pfile.ora’ nomount;

ORACLE instance started.

Total System Global Area  381680512 bytes

Fixed Size                  8657792 bytes

Variable Size             314572800 bytes

Database Buffers           50331648 bytes

Redo Buffers                8118272 bytes

5.حداقل میزان فضای sga و pga برای استارت شدن instance در اوراکل 19c چقدر است؟

SGA=360M

ORA-00821: Specified value of sga_target 100M is too small, needs to be at least 360M

PGA=10M

ORA-00093: pga_aggregate_target must be between 10M and 4096G-1

6.انداختن instance با دستور shutdown abort کار خطرناکیست؟

instanceای که بصورت shut abort دان شده است، نیاز به instance recovery دارد و انجام instance recovery از وظایف بک گراند پروسس smon است! این بک گراند پروسس، برای انجام عملیات instance recovery، ابتدا به سراغ redo log fileها می رود و در صورت صحت redo log memberها، اصطلاحا Roll forward انجام شده و  دیتابیس در وضعیت open قرار می گیرد و پس از آن، با کمک اطلاعات موجود در undo tablespace، عملیات Roll backward انجام خواهد شد.

در نتیجه اگر هر گروه redo log بیش از یک عضو داشته باشد، احتمال خرابی همه اعضا به صورت همزمان بسیار ضعیف بوده و عملا استفاده از این دستور، ریسک بسیار ناچیزی را در پی خواهد داشت.

از دیگر دغدغه های احتمالی پس از استفاده از دستور shut abort، طولانی شدن مدت زمان instance recovery می باشد که این مسئله هم با کمک پارامتر fast_start_mttr_target قابل مدیریت است.

عدم امکان استفاده از دستور ALTER USER RENAME در اوراکل 19c

قبلا در مقاله ای تغییر نام کاربر در اوراکل را با دو روش “اصلاح جداول Data Dictionry”  و استفاده از دستور “ALTER USER RENAME” مورد بررسی قرار داده ایم.

با ارائه نسخه 19c، تغییری در این زمینه ایجاد شد که استفاده از ALTER USER RENAME را ناممکن می سازد.

SQL*Plus: Release 19.0.0.0.0 – Production on Mon Jul 29 13:44:52 2019

Version 19.3.1.0.0

SQL> alter session set “_enable_rename_user”=true;

Session altered.

SQL> alter system enable restricted session;

System altered.

SQL> alter user usef rename to vahid identified by a;

ORA-03001: unimplemented feature

همانطور که می بینید، اجرای دستور ALTER USER RENAME در نسخه 19c با خطا مواجه خواهد شد.