۸۶ مطلب با کلمه‌ی کلیدی «اوراکل» ثبت شده است

ORA-03113: end-of-file on communication channel

بعد از تغییراتی روی زیرساخت ماشین‌های کلاستر rac با ۲ نود (دیتابیس 11.2.0.4.0) به مشکلی برخوردم که در نوع خودش برام جالب بود در حقیقت یکی از instanceهای کلاستر بدون مشکل startup می‌شد ولی instance دوم به هیچ عنوان open نمی‌شد و خطای زیر رو نشون میداد:

ORA-03113: end-of-file on communication channel
Process ID: 20194
Session ID: 1655 Serial number: 5

بعد از چک کردن فایل log دیتابیس مربوط

WARNING: The 'LOG_ARCHIVE_CONFIG' init.ora parameter settings
are inconsistent with another started instance. This may be
caused by the 'DB_UNIQUE_NAME' init.ora parameter being specified
differently on one or more of the other RAC instances; the
DB_UNIQUE_NAME parameter value MUST be identical for all
instances of the database.

خب اینجا بود که فهمیدم باید یه سری به پارامتر log_archive_config بزنم بعد از بررسی این پارامتر فهمیدم که مقدار null برای اون set شده و همچنین db_unique_name یکسان داریم که از این بابت مشکلی نیست.

برای ریست کردن این پارامت از دستور زیر در وضعیت mount استفاده کنید

alter system set log_archive_config='dg_config=(nodg_config)' scope=both sid='*';

با دستور زیر می‌تونید پیکربندی دیتاگاردتون رو چک کنید:

SQL> Select * from v$dataguard_config;

DB_UNIQUE_NAME

------------------------------
dwh
dwh_stby
و اگه کانفیگ دیتاگاردتون هنوز موردنیازه دستور رو طبق نیاز خود سفارشی کنید:
alter system set log_archive_config='dg_config=(dwh,dwh_stby)' scope=both sid='*';
۱۹ آبان ۹۵ ، ۰۰:۲۵ ۱ نظر
مهدی غفاری

رفع مشکل Warning: ORA-16826: apply service state is inconsistent with the DelayMins property

امروز تو یکی از سایتهام به مشکل زیر در DGMGRL خوردم

DGMGRL for Linux: Version 11.2.0.4.0 - 64bit Production
Copyright (c) 2000, 2009, Oracle. All rights reserved.

Welcome to DGMGRL, type "help" for information.
Connected.
DGMGRL> show configuration;
Configuration - primary
Protection Mode: MaxAvailability
Databases:
orcl - Primary database
orcldg - Physical standby database
Warning: ORA-16826: apply service state is inconsistent with the DelayMins property

Fast-Start Failover: DISABLED
Configuration Status:

WARNING

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

ساخت مخزن آفلاین برای YUM

شاید نیاز داشته باشید برای نصب پکیج‌های پیشنیاز اوراکل از مخازن آفلاین درون DVD توزیع خودتون استفاده کنید و یا شایدم برای نصب پیش‌نیازهای اوراکل نیاز به نصب پکیج‌هایی داشته باشید و تو سایتتون امکان دسترسی ماشین به اینترنت رو نداشته باشید و یا اگه هم داشته باشید با مشکلاتی رو به رو باشید مثلاً استفاده از VPN یا Proxy که اگه توزیعتون اوراکل لینوکس هم باشه برای دسترسی به مخازن آنلاین اوراکل کارتون دو چندان میشه

تو این پست یک نگاه عملی بر مبنای این سناریو برای نصب پکیج‌های پیشنیاز اوراکل داریم

مرحله اول

اولین کارمون اینه که از DVD توزیع دایرکتوری مخازن رو در مسیری لوکال کپی کنیم

بعد از mount‌دیسک چه به صورت خودکار یا با دستور زیر

mount -t auto /dev/dvd /mnt

یا ماونت به صورت مستقیم از روی iso دیسک

mount -o loop /path/to/iso /mnt

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

[root@primary Desktop]# cp -R /mnt/Packages/ .
[root@primary Desktop]# mv Packages/ dvd

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

نحوه پیدا کردن سایز دیسک های سیستم عامل از طریق PL/SQL

برای اینکار هیچ پکیج PL/SQl از قبل نوشته شده ای وجود نداره برای رسیدن به نتیجه باید یک external table ساخت و با استفاده از یک pre-processor اطلاعات مورد نیاز رو برگردوند متاسفانه این pre-processor ما براساس پلتفرم کار میکنه

برای سیستم عاملهای یونیکس بیس و خانواده لینوکس

step0:

[oracle@localhost]$ df -B 1 /usr
Filesystem 1B-blocks Used Available Use% Mounted on
/dev/sda3 24770654208 22113492992 1398870016 95% /
step1: 

[oracle@localhost ~]$ cat /tmp/demo/demo.dat
/usr
step2: 

[oracle@localhost ~]$ cat /tmp/demo/df.sh
#!/bin/bash
/bin/df -B 1 `/bin/cat ${1}` | /bin/awk 'NR == 2 {print $4}'
step3: 

create or replace directory DEMO as '/tmp/demo'
step4: 

CREATE TABLE
df
(
free NUMBER
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY DEMO
ACCESS PARAMETERS
(
RECORDS DELIMITED BY NEWLINE CHARACTERSET WE8MSWIN1252
NOBADFILE
NOLOGFILE
PREPROCESSOR demo:'df.sh'
FIELDS TERMINATED BY "|" LDRTRIM
REJECT ROWS WITH ALL NULL FIELDS
(
free CHAR
)
)
LOCATION
(
'demo.dat'
)
)
REJECT LIMIT UNLIMITED
;
step5: 

SQL> select * from df;

FREE
----------
1398870016

فقط نکته‌ای که داره اینه که سایز پارتیشن‌ها رو براساس نقاط مانت شده درمیاره و اون نقطه مانت شده ای که میدید حتما باید رو یه پارتیشن جدا باشه تا سایزش رو نشون بده و اگه اون نقطه زیرمجموعه یه نقظه دیگه باشه حتما باید نقطه اصلی رو بدید تا سایز اون پارتیشن رو بفهمید

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

نگاهی بر معماری Oracle Data Guard - قسمت دوم

تو این اسلاید راجع به روش‌هایی که میشه با اونها دیتاگارد رو مدیریت کرد صحبت کرده

  • زمانی که broker پیکربندی شده باشد
  • ابزار خط فرمان DGMGRL
  • ابزار EM Grid Control
  • با استفاده از دستورات SQL و کوئری گرفتن از viewهای دیتادیکشنری

زمانی که broker پیکربندی نشده باشد

  • فقط با استفاده از دستورات SQL و کوئری گرفتن از viewهای دیتادیکشنری

اما اگه Gap ای بین دیتابیس primary و standby ایجاد بشه یعنی حتی یک redo سمت primary نوشته شده باشه ولی در سمت standby به هر دلیلی نوشته نشده باشه حالت Gap‌ به وجود میاد

کی ممکنه Gap اتفاق بیوفته:

  • مشکل شبکه
  • مشکل پروسس LNS (ارسال کننده)
  • مشکل پروسس RFS (دریافت کننده)

تو این حالت دیتابیس standby با دیتابیس primary به طور کامل sync نیستند

راه‌حل اوراکل برای این مشکل به ۲ صورت است:

  • Automatic
  • Manual

خب فرض کنید Gap ای بین دیتابیس‌هامون داریم و redo log fileهامون جلو رفتن چون ممکنه زمان زیادی Gap‌ ایجاد شده باشه و ادمی هم متوجه Gap نشده باشه تو این حالت ممکنه بارها redo log buffer ما خالی و پر شده باشه و عملاً sync کردن دیتا رو با مشکل مواجه کنه

همچنین online redo log fileها هم بارها log switch براشون رخ داده و overwrite شدن پس دیگه امکان خوندن از online redo log fileها هم نیس

اینجاست که Archiveهای ما به کمکمون میان

حالت Automatic

تو این حالت RFS به جای اینکه redoها رو بگیره به طور خودکار archiveها رو می‌گیره و شروع به apply کردن archiveها میکنه

حالت Manual

فرضاً redoها تا ۱۰ تا seq انتقال پیدا می‌کنند(apply می‌شوند) ولی آرشیو‌های redo شماره ‍۱۱ وجود نداره ولی ۱۲ به بعد آرشیوهاش موجوده و هرچی هم سرور رو جستجو می‌کنید seq شماره ۱۱ رو پیدا نمی‌کنید این Gap فقط با روش manual حل میشه

مثلاً ۱۰ تا seq به سمت دیتابیس گارد نرفته‌اند تو این حالت تمام redoهای archive شده در سمت دیتابیس primary به محض برقراری ارتباط شبکه بین دیتابیسها شروع به apply شدن می‌کنند

اینجا کانفیگ از اول روشی غلط است چون فقط یک یا چند seq انتقال پیدا نکرده‌اند

انشالله تو پستی جداگونه این مطلب رو شرح خواهم داد

Manually Resolving Gaps - Oracle Data Guard 11gR2

۱۸ شهریور ۹۵ ، ۲۰:۲۱ ۰ نظر
مهدی غفاری

نگاهی بر معماری Oracle Data Guard - قسمت اول

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

 

بعد از کامل کردن این سری از اسلایدها شما قراره:

  • کامپوننت‌ها و اجزای دیتاگارد رو بشناسید
  • اختلاف بین physical standby و logical standby رو بدونید
  • فواید پیاده‌سازی دیتاگارد رو بشناسید

نکته: کلاً وقتی دیتاگارد راه میندازیم یعنی ۲ تا سرور داریم یکی سرور اصلی primary و یکی سرور دیتاگارد که بهش standby می‌گیم (چون همیشه آماده به خدمته)

ادامه مطلب...
۲۳ مرداد ۹۵ ، ۱۷:۱۸ ۳ نظر
مهدی غفاری

نگاهی بر معماری Oracle Database 11g - قسمت سوم

نگاهی بر معماری Oracle Database 11g - قسمت اول

نگاهی بر معماری Oracle Database 11g - قسمت دوم

LGWR

کار background process log writer اینه که تمام redo entryها رو که توی log buffer نوشته میشه رو توی redo log file بنویسه

LGWR تعداد نداره یعنی همیشه یکی است و اگه این background process پایین بیاد دیتابیس کلاً shutdown میشه

زمانهای نوشتن:

  • اگر کاربر دستور commit رو بزنه
  • وقتی که 1/3 redo log buffer پر بشه
  • قبل از شروع نوشتن بافر در دیسک توسط DBW
  • هر ۳ ثانیه یکبار

سرعت نوشتن LGWR بسایر بیشتر از DBW ه چون فقط به انتهای یک فایل باینری redo entryها رو میبره

LGWR به صورت چرخشی بین redo log file ها عمل میکنه که بهش log witch میگیم

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

نگاهی بر معماری Oracle Database 11g - قسمت دوم

نگاهی بر معماری Oracle Database 11g - قسمت اول

KEEP buffer pool

اگه جداول base ما در محاسباتمون زیاد استفاده میشه (موقع join ها) و گزارش‌گیری‌های زیادی ازشون انجام میشه برای اوراکل نمیصرفه هر دفعه اطلاعات شما رو بیاره تو database buffer cache پس اوراکل جدول رو KEEP میکنه یعنی جدول base رو میخونه میاره تو حافظه تو محفظه‌ی KEEP buffer pool پس دیتایی که دائما توی گزارش‌هامون مورد استفاده قرار میگیره و تغییراتی روش انجام نمیشه رو اوراکل به صورت KEEP نگه میداره مگر اینکه دیتابیس بیاد پایین یا برق سرور بره

همچنین این کار موقع ساختن جدول یا بعدش با دستور alter امکان پذیره همچنین می‌تونید برای اینکار اسکریپت هم بنویسید

 Alter table emp storage (buffer_pool Keep);

یه نمونه اسکریپت

Oracle Automating Script for KEEP Pool Caching Tables & Indexes db_keep_cache_size

BEST PRACTICE اینه که فقط جداول پایه با حجم کم رو KEEP‌ کنید در کل جداولی با داده کم و کاربرد زیاد مثل اطلاعات: شهرها، فرمولهای مالی، نرخ سود، نام دپارتمان‌ها و ...

 

نکته: هیچوقت یک جدول بالای 1 میلیون رکورد رو KEEP نکنید چون بی‌خودی حافظه رو میگیره

نکته: اگه دیتا زیاده و تغییرات داره بهتره از TimesTen استفاده بشه (این محصول دیتا رو کلاً میخونه میذاره تو حافظه بعد خودش دیتابیس رو مدیریت میکنه که اگه دیتا تغییر کرد دیتای حافظه هم تغییر کنه و ...)

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

نگاهی بر معماری Oracle Database 11g - قسمت اول

تو این پست میخوایم نگاهی دوباره بر معماری اوراکل از روی اسلایدهای دانشگاه اوراکل بندازیم.

دریافت
حجم: 558 کیلوبایت
توضیحات: Less01_Architecture

دریافت
حجم: 23 مگابایت
توضیحات: تمام اسلایدهای اوراکل ورکشاپ ۱ به همراه اسکریپت‌ها 

نگاهی بر معماری Oracle Database 11g - قسمت اول

نگاهی بر معماری Oracle Database 11g - قسمت دوم

نگاهی بر معماری Oracle Database 11g - قسمت سوم

یادتون باشه اگه معماری اوراکل رو خوب ندونید برای tuning اون نمیتونید مانور زیادی انجام بدید. پس اول باید معماری رو خوب بلد باشیم که چه اتفاقهایی تو سیستم میوفته بعد برای tun‌ کردن دیتابیس اقدام کنیم.

ادامه مطلب...
۰۳ خرداد ۹۵ ، ۱۱:۰۴ ۴ نظر
مهدی غفاری

اتصال Oracle به SQL Server با Oracle Database Gateway

با اومدن ورژن 11g، اوراکل محصول جدیدی رو به عنوان Database Gateway معرفی کرد که میتوان از آن برای اتصال به MSSQL و دیتابیس‌های مختلف دیگه استفاده کرد.

Database Gateway با ورژن‌های 10.1.0.5، 10.2.0.3 بعد از اعمال patchهای امنیتی سازگاره همچنین به طور مستقیم با ورژن‌های 10.2.0.4، 10.2.0.5، 11.1 و 11.2 مشکلی نداره

مراحل زیر رو دنبال کنید و یادتون باشه این مراحل روی پلتفرم‌های Linux/Unix کار میکنه البته برای باقی سیستم‌عامل‌ها هم مراحل شبیه همین مراحل‌اند:

  1. اگه قبلاً Oracle Database Gateways رو دانلود نکردید تو قدم اول باید دانلود رو انجام بدید.
  2. Oracle Database Gateway رو برای Microsoft SQL Server نصب کنید.
  3. Database Gateway رو برای اتصال به Microsoft SQL Server کانفیگ کنید (DG4MSQL).

دانلود نرم‌افزار

Oracle Database Gateways رو از Oracle eDelivery یا Metalink دانلود کنید.

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