آموزش، مشاوره و پشتیبانی دیتابیس اوراکل

دستورات کاربردی ابزار Srvctl

Srvctl یک ابزار شناخته شده برای add، remove، relocate و مدیریت سرویسهای crs مختلف یا کامپوننت های RAC است.

1. STOP DATABASE

SYNTAX – srvctl stop database -d db_name [-o stop_options] where stop_options is normal/immediate(default)/transactional/abort

e.g

srvctl stop database -d PRODB -o normal
srvctl stop database -d PRODB -o immediate
srvctl stop database -d PRODB -o transactional
srvctl stop database -d PRODB -o abort

2. START DATABASE
SYNTAX – srvctl start database -d db_name [-o start_options] where start_option is nomount/mount/open(default)

e.g

srvctl start database -d PRODB -o nomount
srvctl start database -d PRODB -o mount
srvctl start database -d PRODB -o open

ادامه مطلب...
۰۲ خرداد ۰۱ ، ۱۶:۰۶ ۰ نظر
مهدی غفاری

قابلیت Gradual Database Password Rollover

برای تغییر پسوردها شما میتوانید از قابلیت جدیدی که در نسخه 19.12 به بعد معرفی شده است (Gradual Database Password Rollover) استفاده کنید . در این روش امکان استفاده همزمان از رمز عبور قبلی و رمز عبور جدید برای مدت زمان مشخصی که در پروفایل آن کاربر تعریف میشود وجود دارد . در این فاصله زمانی میتوان نسبت به تعویض رمز عبور کاربر در پایگاه داده و بر روی تنظیمات برنامه اقدام نمود. پس از سپری شدن زمان مقرر شده امکان استفاده از رمز عبور قبلی وجود نخواهد داشت .

ابتدا پارامتر PASSWORD_ROLLOVER_TIME را در پروفایل کاربر تنظیم میکنیم . کمترین میزان برای پارامتر PASSWORD_ROLLOVER_TIME یک ساعت و بیشترین مقدار 60 روز میباشد . در این مثال مدت زمان یک ساعت در نظر گرفته شده است .

ALTER PROFILE USER_PROFILE LIMIT PASSWORD_ROLLOVER_TIME 1/24;

توجه
تمامی یوزر هایی که از پروفایل استفاده میکنند شامل Policy جدید میشوند .
Session های که به پایگاه داده متصل هستند با تغییر پسورد دچار اختلال نمیشوند.

این پارامتر می تواند حداقل مقدار 1 ساعت (1/24) و حداکثر 60 روز را داشته باشد.

پسورد کاربر مورد نظر را تغییر داده .

ALTER USER USERSERVICES IDENTIFIED BY NEW_PASSWORD;

در این مرحله نسبت به تغییر پسورد در فایل های مربوط به تنظیمات برنامه اقدام کنید .
پس از تغییرات در تنظیمات برنامه در صورتی که مدت زمان پارامتر PASSWORD_ROLLOVER_TIME به اتمام رسیده باشد امکان استفاده از رمز عبور قبلی وجود ندارد . همچنین با استفاده از دستور زیر میتوان زودتر از موعد مقرر شده Policy تنظیم شده را منقضی نمود .

ALTER USER USERSERVICES EXPIRE PASSWORD ROLLOVER PERIOD;

جهت غیر فعال کردن این قابلیت کافیه مقدار پارامتر را به 0 تغییر داد.

ALTER PROFILE USER_PROFILE LIMIT PASSWORD_ROLLOVER_TIME 0;

۲۱ ارديبهشت ۰۱ ، ۰۸:۰۰ ۰ نظر
مهدی غفاری

تغییر تنظیمات مربوط به Maintenance Windows

هنگام ساخت پایگاه داده با استفاده از ابزار DBCA و انتخاب Template های از پیش ساخته شده ، منطقه زمانی Scheduler به صورت پیش فرض بر روی UTC -07:00 قرار میگیرد که منجر به اجرا شدن تمامی Maintenance Windows با منظقه زمانی Los Angeles میشود . همچنین در تقویم میلادی روز های شنبه و یکشنبه تعطیل میباشد لذا به طور پیش فرض در این دو روز Task های مربوط به Maintenance Windows منابع و زمان بیشتری را مورد استفاده قرار میدهند .
دستورات زیر شامل : تغییر منطقه زمانی به Asia/Tehran ، تغییر زمان شروع به ساعت 2 بامداد ، تغییر مدت زمان اجرا هر Task به 1 ساعت در Container(CDB$ROOT) میشود .

ALTER SESSION SET CONTAINER=CDB$ROOT;

BEGIN
--DISABLE WEEKEND AND WEEKNIGHT SCHEDULER
DBMS_SCHEDULER.DISABLE('WEEKNIGHT_WINDOW');
DBMS_SCHEDULER.DISABLE('WEEKEND_WINDOW');
--DISABLE SCHEDULER BEFORE CHANGING ATTRIBUTE
DBMS_SCHEDULER.DISABLE('SATURDAY_WINDOW');
DBMS_SCHEDULER.DISABLE('SUNDAY_WINDOW');
DBMS_SCHEDULER.DISABLE('MONDAY_WINDOW');
DBMS_SCHEDULER.DISABLE('TUESDAY_WINDOW');
DBMS_SCHEDULER.DISABLE('WEDNESDAY_WINDOW');
DBMS_SCHEDULER.DISABLE('THURSDAY_WINDOW');
DBMS_SCHEDULER.DISABLE('FRIDAY_WINDOW');
--CHANGE DEFUALT TIME ZONE FOR SCHEDULER
DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE('DEFAULT_TIMEZONE', 'ASIA/TEHRAN');
--CHANGE START_TIME AND DURATION ATTRIBUTE
DBMS_SCHEDULER.SET_ATTRIBUTE(NAME => 'SATURDAY_WINDOW', ATTRIBUTE => 'DURATION', VALUE => NUMTODSINTERVAL(1, 'HOUR'));
DBMS_SCHEDULER.SET_ATTRIBUTE('SATURDAY_WINDOW', 'REPEAT_INTERVAL', 'FREQ=WEEKLY;BYDAY=SAT;BYHOUR=02;BYMINUTE=0;BYSECOND=0');
DBMS_SCHEDULER.SET_ATTRIBUTE(NAME => 'SUNDAY_WINDOW', ATTRIBUTE => 'DURATION', VALUE => NUMTODSINTERVAL(1, 'HOUR'));
DBMS_SCHEDULER.SET_ATTRIBUTE('SUNDAY_WINDOW', 'REPEAT_INTERVAL', 'FREQ=WEEKLY;BYDAY=SUN;BYHOUR=02;BYMINUTE=0;BYSECOND=0');
DBMS_SCHEDULER.SET_ATTRIBUTE(NAME => 'MONDAY_WINDOW', ATTRIBUTE => 'DURATION', VALUE => NUMTODSINTERVAL(1, 'HOUR'));
DBMS_SCHEDULER.SET_ATTRIBUTE('MONDAY_WINDOW', 'REPEAT_INTERVAL', 'FREQ=WEEKLY;BYDAY=MON;BYHOUR=02;BYMINUTE=0;BYSECOND=0');
DBMS_SCHEDULER.SET_ATTRIBUTE(NAME => 'TUESDAY_WINDOW', ATTRIBUTE => 'DURATION', VALUE => NUMTODSINTERVAL(1, 'HOUR'));
DBMS_SCHEDULER.SET_ATTRIBUTE('TUESDAY_WINDOW', 'REPEAT_INTERVAL', 'FREQ=WEEKLY;BYDAY=TUE;BYHOUR=02;BYMINUTE=0;BYSECOND=0');
DBMS_SCHEDULER.SET_ATTRIBUTE(NAME => 'WEDNESDAY_WINDOW', ATTRIBUTE => 'DURATION', VALUE => NUMTODSINTERVAL(1, 'HOUR'));
DBMS_SCHEDULER.SET_ATTRIBUTE('WEDNESDAY_WINDOW', 'REPEAT_INTERVAL', 'FREQ=WEEKLY;BYDAY=WED;BYHOUR=02;BYMINUTE=0;BYSECOND=0');
DBMS_SCHEDULER.SET_ATTRIBUTE(NAME => 'THURSDAY_WINDOW', ATTRIBUTE => 'DURATION', VALUE => NUMTODSINTERVAL(1, 'HOUR'));
DBMS_SCHEDULER.SET_ATTRIBUTE('THURSDAY_WINDOW', 'REPEAT_INTERVAL', 'FREQ=WEEKLY;BYDAY=THU;BYHOUR=02;BYMINUTE=0;BYSECOND=0');
DBMS_SCHEDULER.SET_ATTRIBUTE(NAME => 'FRIDAY_WINDOW', ATTRIBUTE => 'DURATION', VALUE => NUMTODSINTERVAL(1, 'HOUR'));
DBMS_SCHEDULER.SET_ATTRIBUTE('FRIDAY_WINDOW', 'REPEAT_INTERVAL', 'FREQ=WEEKLY;BYDAY=FRI;BYHOUR=02;BYMINUTE=0;BYSECOND=0');
--Enable Scheduler
DBMS_SCHEDULER.ENABLE('SATURDAY_WINDOW');
DBMS_SCHEDULER.ENABLE('SUNDAY_WINDOW');
DBMS_SCHEDULER.ENABLE('MONDAY_WINDOW');
DBMS_SCHEDULER.ENABLE('TUESDAY_WINDOW');
DBMS_SCHEDULER.ENABLE('WEDNESDAY_WINDOW');
DBMS_SCHEDULER.ENABLE('THURSDAY_WINDOW');
DBMS_SCHEDULER.ENABLE('FRIDAY_WINDOW');
END;
/

ادامه مطلب...
۲۰ ارديبهشت ۰۱ ، ۰۹:۵۷ ۰ نظر
مهدی غفاری

تغییر UNDO_RETENTION در PDB

از نسخه  19.9  به بعد تغییر برخی از پارامتر ها (در اینجا پارامتر مورد نظر UNDO_RETENTION  میباشد ) در Container Root (CDB$ROOT)  منجر  به تغییر آن پارامتر در بقیه PDB ها نمیشود  . از نسخه 12.2.0.1 به صورت پیش فرض هر PDB  دارای UNDO_TBS  مخصوص به خود میباشد (منظور local undo only  که تنظیم پیش فرض به هنگام ساخت یک PDB  جدید است ) از این رو هر PDB   تنظیم UNDO  مخصوص به خود را دارد .  برای تغییر پارامتر UNDO_RETENTION در تمامی Instance از دستور زیر استفاده کنید .

ALTER SYSTEM SET UNDO_RETENTION=10 CONTAINER=ALL SCOPE=BOTH;

دستور بالا در محیط دیتاگارد به دلیل Read-Only  بودن PDB با خطا مواجه میگردد . در محیط دیتاگارد از دستور زیر استفاده میگردد .

ALTER SESSION SET CONTAINER=CDB$ROOT;
ALTER SYSTEM SET UNDO_RETENTION=10 SCOPE=BOTH;
ALTER SESSION SET CONTAINER=SHATOOTPDB;
ALTER SYSTEM SET UNDO_RETENTION=10 SCOPE=BOTH;

لازم به ذکر است که هنگام تغییر پارامتر های داخل PDB   اگر از SCOPE=SPFILE  و یا SCOPE=BOTH  استفاده شود ، آن تغییر  در Data Dictionary  های PDB  و فایل تعریف XML  آن PDB ذخیره میشود  و بر روی SPFILE  تغییری ایجاد نمیکند . برای مشاهده پارامتر های تغییر یافته داخل PDB   از کوئری زیر استفاده شود .

SELECT PS.DB_UNIQ_NAME , PS.PDB_UID , P.NAME AS PDB_NAME , PS.NAME , PS.VALUE$ FROM PDB_SPFILE$ PS JOIN V$PDBS P ON PS.PDB_UID = P.CON_UID;

لیست پارامتر ها با شرایط توضیح داده شده در این بخش (طبیعتا با اعمال هر Patch set  امکان تغییر این لیست وجود دارد )

_ROLLBACK_SEGMENT_COUNT
_SMU_TIMEOUTES
_SMU_DEBUG_MODE
_UNDO_DEBUG_MODE
_HIGHTHRESHOLD_UNDORETENTION
_UNDO_AUTOTUNE
UNDO_RETENTION
_COLLECT_TEMPUNDO_STATS

۲۰ ارديبهشت ۰۱ ، ۰۹:۵۰ ۰ نظر
مهدی غفاری

فعال سازی Fix Controlها

Fix Control ها باگ های رفع شده Optimizer میباشند که به صورت پیشفرض غیرفعال میباشند . دلیل غیر فعال بودن Fix Control ها این است که با تغییر تنظیمات مربوط به Optimizer امکان تغییر Plan دستورات SQL وجود دارد و Plan جدید ممکن است باعث بدتر شدن Performance گردد . با توجه به نیاز دیتابیس ها برای اعمال Patch set به صورت دوره ای پیشنهاد میگردد برای ثابت کردن Plan دستورات SQL ، از SQL Plan Management استفاده گردد .

نمایش Fix Control های موجود (خروجی به صورت خلاصه نمایش داده شده است .)

SET SERVEROUTPUT ON;
EXECUTE DBMS_OPTIM_BUNDLE.GETBUGSFORBUNDLE;
19.12.0.0.210720DBRU:
    Bug: 31459242,  fix_controls: 31459242
    Bug: 31082719,  fix_controls: 31082719
    Bug: 28708585,  fix_controls: 28708585
    Bug: 31821701,  fix_controls: 31821701
    Bug: 32107621,  fix_controls: 32107621
    Bug: 26758837,  fix_controls: 26758837
    Bug: 31558194,  fix_controls: 31558194
    Bug: 30781970,  fix_controls: 30781970
    Bug: 30142527,  fix_controls: 30142527
    Bug: 31143146,  fix_controls: 31143146
    Bug: 31961578,  fix_controls: 31961578
    Bug: 31496840,  fix_controls: 31496840
    Bug: 22387320,  fix_controls: 22387320
     ….
PL/SQL procedure successfully completed.

ادامه مطلب...
۲۰ ارديبهشت ۰۱ ، ۰۹:۳۴ ۰ نظر
مهدی غفاری

مزایای اکانت شرکت ردهت

ارزش اشتراک رد هَت

اشتراک کمپانی رد هَت هر چیزی که شما برای استفاده از فناوری های تولید شده برای محیط‌های پیشرفته و سازمانی نیاز دارید، از جمله پشتیبانی از نرم‌افزارهای Open Source ، پشتیبانی از محصولات رد هَت و هر آنچه راجع به افزایش امنیت نرم افزارهای خود در مدت اشتراک خود نیاز دارید، در اختیارتان قرار می‌دهد.

 

پایداری همان نوآوری است

شما نیاز به پایداری برای حفط و نگهداری از کاربران خود دارید. انعطاف‌پذیری و نوآوری در متن‌باز را با اکانت رد هَت بدست آورید، نوآوری‌ای که با کیفیت و عملکرد ثابت شده در سطح سازمانی تقویت شده است، با اکانت رد هَت از محدودیت ها رها شوید.

مزایای اشتراک رد هَت

ادامه مطلب...
۳۱ فروردين ۰۱ ، ۰۷:۴۱ ۰ نظر
مهدی غفاری

خدمات مشاوره و پشتیبانی پایگاه داده ORACLE و MySQL

ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده ORACLE و MySQL در سراسر کشور

در سرور و در محل مشتری یا به صورت ریموت:

  • خدمات مشاوره انتخاب بهترین نسخه به همراه فیچرها در پایگاه داده ORACLE و MySQL
  • خدمات نصب و نگهداری به صورت 7*24
  • نصب و راه اندازی دیتابیس ORACLE به صورت تک سرور و کلاستر
  • نصب و راه اندازی اوراکل دیتاگارد به صورت تک سرور و کلاستر
  • نصب و راه اندازی سرور MySQL به صورت تک سرور و کلاستر
  • نصب و راه اندازی سرور استند بای MySQL به صورت تک سرور و کلاستر
  • ارتقاء سیستم عامل و آپگرید دیتابیس
  • تغییر DB_NAME پایگاه داده در کمترین DOWNTIME
  • بروز رسانی بر اساس آخرین patch های اعلامی اوراکل
  • درخواست پچ های سفارشی از پشتیبانی اوراکل برای مشکلات ویژه پایگاه داده سایت شما
  • پیاده سازی استراتژی و راهکار پشتیبان گیری از دیتا
  • رفع خطاهای ORA-600
  • تهیه و تمدید اکانت متالینک اوراکل
  • بازیابی اطلاعات بدون داشتن بک آپ از پایگاه داده شما
  • بازیابی اطلاعات به یک زمان خاص و یا به زمان قبل از خرابی از روی بک آپ
  • بهینه سازی عملکرد پایگاه داده و گزارش ها در سرور اصلی و استند بای
  • ارائه راهکارهای بهبود امنیت و پیاده سازی Auditing و کنترل سطوح دسترسی کاربران
  • راه اندازی مانیتورینگ یکپارچه ORACLE و MySQL
  • برگزاری کلاسهای مقدماتی و پیشرفته ORACLE و MySQL به صورت عمومی، خصوصی و سازمانی

در سرورهای کلود و به صورت ریموت:

  • انتقال سرورهای دیتابیس در محل مشتری به اوراکل کلود (OCI) یا آمازون کلود (AWS) 
  • تهیه اکانت کلود برای مشتری
  • خدمات مشاوره جهت تهیه سناریو نگهداری و انتقال و ...
  • بهبود پرفرومنس گزارش ها
  • بهینه سازی عملکرد پایگاه داده
۲۶ فروردين ۰۱ ، ۱۸:۳۵ ۰ نظر
مهدی غفاری

رفع خطای ORA-65345: cannot refresh pluggable database در RMAN HOTCLONE

بعد از قضیه داستان های واقعی: کلون گیری باگ دار بودم که یه PDB با نزدیک 600 گیگ دیتا انتقال پیدا نمیکرد و در هنگام کلون گیری با خطای زیر مواجه میشد:

RMAN-08018: channel ORA_AUX_DISK_1: starting archived log restore to user-specified destination
RMAN-08508: archived log destination=+FRA
RMAN-08169: channel ORA_AUX_DISK_1: using network backup set from service CDB1
RMAN-08022: channel ORA_AUX_DISK_1: restoring archived log
RMAN-08510: archived log thread=1 sequence=8700
RMAN-08180: channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
RMAN-03091: Finished restore at 14-APR-22
RMAN-05045:
Performing import of metadata...
RMAN-06136: Oracle error from auxiliary database: ORA-00283: recovery session canceled due to errors
ORA-65345: cannot refresh pluggable database

اگه جستجو کنید این مشکل زمانی پیش میاد که مقصد قادر به رفرش شدن از دیتابیس مبدا نیست. یکی از دلایل ممکنه به خاطر وجود MRP در سرور مبدا باشه (اگه بر فرض دیتابیس مبدا گارد باشه) اما در مورد من دیتابیس مبدا ADG نبود پس این مشکل با داکیومنت ORA-65345 When Refreshing PDB Sourced From Active Data Guard Standby (Doc ID 2765472.1) برای من وجود نداشت. پس مشکل کجا بود؟

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

Bug 32631551 - Refresh pluggable database fails with ORA-283: recovery session canceled due to errors ORA-65345: cannot refresh pluggable database (Doc ID 32631551.8)

و قهمیدم یک باگ شبیه این مورد ثبت شده و تا پچ 19.13 هم وجود داره و تو نسخه 20.1.0 و پچ 19.14 فیکس شده. خب راه حل سریع این باگ میگفت که مسیر recovery_file_dest و LOG_ARCHIVE_DEST_n = 'LOCATION=USE_DB_RECOVERY_FILE_DEST' رو پیکربندی کنیم. من برای اینکه از پارامترها اطمینان پیدا کنم هم در دیتابیس مبدا و هم مقصد دوباره پیکربندی ها رو چک کردم و همه چیز به نظر خوب بود.

ادامه مطلب...
۲۶ فروردين ۰۱ ، ۱۷:۱۸ ۰ نظر
مهدی غفاری

بازیابی اطلاعات Oracle بدون backup

بازیابی اطلاعات و ساختار جداول در پایگاه داده Oracle در بدترین شرایط

 

بدون داشتن backup

  • نبودن پایگاه داده در مد  archive
  • بدون  flashback
  • بدون RMAN

بازیابی در شرایط زیر:

  • truncate table
  • drop tablespace
  • drop table
  • deleted rows
  • drop user
  • corrupted file system
  • deleted System01.dbf
  • failed to mount asm diskgroup
  • ora-00600 ora-07445
  • database can not be open
  • corrupted block
  • asm diskgroup disk header/metadata corrupted, asm diskgroup can’t be mounted
  • inconsistent restores/recoveries or any situation preventing your datase from opening, like missing archivelogs
  • mismatch of backups due to faulty tape rotation
  • corruption of data dictionary or bootstrap objects
  • The loss of system tablespace in case of a missing data dictionary
  • orphaned datafiles same as the loss of the system tablespace

پشتیبانی از سیستم عامل های زیر :

  • AIX POWER
  • Solaris Sparc
  • Solaris X86
  • Linux X86
  • Linux X86-64
  • HPUX
  • MacOS

پشیتبانی از پایگاه داده اوراکل:

  • Oracle database 9i
  • Oracle database 10g
  • Oracle database 11g
  • Oracle database 12c
  • Oracle database 18c
  • Oracle database 19c

 

پشتیبانی از زبان پارسی و انواع کاراکتر ست ها

پشتیبانی از انواع داده ها زیر:

  • BINARY_DOUBLE
  • BINARY_FLOAT
  • BLOB
  • CHAR
  • CLOB and NCLOB
  • Date
  • INTERVAL DAY TO SECOND
  • INTERVAL YEAR TO MONTH
  • LOBs stored as SecureFiles
  • LONG
  • LONG RAW
  • NCHAR
  • Number
  • NVARCHAR2
  • RAW
  • ROWID, UROWID
  • TIMESTAMP
  • TIMESTAMP WITH LOCAL TIMEZONE
  • TIMESTAMP WITH TIMEZONE
  • VARCHAR2 and VARCHAR

محدودیت ها

  • جداول فشرده و رمزنگاری شده
  • انواع typeهای XML و typeهای Nested Array شده
  • فیلدهای SECUREFILE فشرده و رمزنگاری شده

۲۶ فروردين ۰۱ ، ۱۳:۱۵ ۰ نظر
مهدی غفاری

بازیابی اطلاعات MySQL بدون backup

بازیابی اطلاعات و ساختار جداول در پایگاه داده MySQL و انجین InnoDB در بدترین شرایط ممکن

شرایط بازیابی

  • تنها انجین innodb قابلیت بازیابی را دارد
  • تحویل خروجی به صورت خروجی MYSQLDUMP
  • بازیابی از MySQL نسخه 5.1 تا 8.0
  • بازیابی از ریکاوری دیتا در زمان کرش کردن اینستنس MySQL حتی وقتی innodb_force_recovery کار نمیکنه
  • بازیابی از ریکاوری دیتا در زمان drop table حتی وقتی innodb_file_per_table فعال است
  • بازیابی از ریکاوری دیتا در زمان drop database حتی وقتی innodb_file_per_table فعال است
  • بازیابی جداول حذف شده از یک جدول و ساخت جداول جدید بدون دیتا یا با دیتا
  • بازیابی اطلاعات از InnoDB table space های خراب شده
  • بازیابی اطلاعات رکوردهای حذف شده توسط دستورات SQL
  • بازیابی اطلاعات از فایل سیستم های با استوریج های خراب
  • بازیابی اطلاعات از دیتافایلهای InnoDB وقتی به صورت تصادفی پاک شده اند
  • بازیابی اطلاعات از فایلهای گرفتار ransomware (باج افزار) یا malware (بد افزار)
  • بازیابی اطلاعات از فایلهای .ibd
  • بازیابی اطلاعات از فایلهای .frm و تحویل دستورات create table
  • بازیابی اطلاعات LOB و TEXT
  • بازیابی اطلاعات آبجکت های دیتابیس مثل primary keys, views, triggers

پشتیبانی از سیستم عامل های

  • Solaris X86
  • Linux X86
  • Linux X86-64
  • MacOS
۲۶ فروردين ۰۱ ، ۱۱:۳۵ ۰ نظر
مهدی غفاری