مشاوره و پشتیبانی #پایگاه داده #هوش تجاری

۱۰۵ مطلب با موضوع «پایگاه‌داده :: Oracle DBA» ثبت شده است

راهنمای سریع بازیابی گام به گام بلاک‌های خراب با استفاده از RMAN

میخواهیم مثال ساده‌ای از چگونگی به کارگیری ویژگی بازیابی بلاک‌های خراب با RMAN را ارائه دهیم. اگر دیتابیسی تمام وقت 24/7 دارید و نمی‌توانید آن را خاموش کنید می‌توان از بازیابی بلاک برای رفع خرابی بلاک‌های دیسک استفاده کنید. این ویژگی همچنین راهی سریع برای چک کردن بودن یا نبودن بلاک‌های خراب در دیتابیس را فراهم میکنه. یادتون باشه بک‌آپ‌های گرفته شده با RMAN صحت کارکردن دیتابیس را تایید نمیکنن.

خب پس rman را در حالت nocatalog یا catalog-mode اجرا کنید و به دیتابیس از طریق rman وصل شوید.

اگه لازمه از یه بک‌آپ قدیمی که کنترل فایل اون در repository اطلاعات RMAN شناخته سده نیست بازیابی رو انجام بدید، ممکنه لازم باشه از از catalog-mode استفاده کنید.

در سیستم‌عامل دستور زیر را اجرا کنید:

$ rman target / nocatalog
or
$ rman target sys/<sys_password> nocatalog

دستور تایید اعتبار که شامل “check logical” است را اجرا کنید.

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

دستورات کاربردی لینوکس برای DBAها

تو لینوکس همه چی به صورت فایل‌ه (دایرکتوری، فایل، دیوایس‌ها، پراسس‌ها و ...) خب از کجا بفهمیم یک فایل به صورت دایرکتوری هستش یعنی فایلی که فایلهای دیگه رو درون خودش آدرس‌دهی کرده برای اینکار از دستور زیر استفاده می‌کنیم:

[root@db01 ~]# ls -l
total 104
-rw-------. 1 root root  1808 May 17 11:06 anaconda-ks.cfg
drwxr-xr-x. 2 root root  4096 May 17 11:11 Desktop
drwxr-xr-x. 2 root root  4096 May 17 11:11 Documents
drwxr-xr-x. 2 root root  4096 May 17 11:11 Downloads
-rw-r--r--. 1 root root 51955 May 17 11:06 install.log
-rw-r--r--. 1 root root 10033 May 17 11:04 install.log.syslog
drwxr-xr-x. 2 root root  4096 May 17 11:11 Music
drwxr-xr-x. 2 root root  4096 May 17 11:11 Pictures
drwxr-xr-x. 2 root root  4096 May 17 11:11 Public
drwxr-xr-x. 2 root root  4096 May 17 11:11 Templates
drwxr-xr-x. 2 root root  4096 May 17 11:11 Videos

تو اطلاعات permision‌ فایل اگه اولین حرف d بود یعنی دایرکتوری‌ه و اگه - یعنی فایل‌ه

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

برگزاری ورکشاپ تخصصی مدیریت پایگاه داده اوراکل

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

https://evand.ir/events/oracle

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

عوض کردن DB_NAME دیتابیس با استفاده از NID

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

درسته که تغییر DBID با nid، اثرات غیرقابل برگشتی روی توانایی‌های بک‌آپ و ریکاوری داره، اما تغییر DB_NAME دیتابیس به‌طور چشمگیری پیامدهای کمتری داره، چون:

  1. بک‌آپ‌هایی که قبلاً گرفته شده‌اند را بی‌اعتبار نمی‌کنه
  2. آرشیولاگ‌هایی که قبلاً ساخته شده‌اند را بی‌اعتبار نمی‌کنه
  3. به open کردن پایگاه داده به وسیله‌ی ریست‌لاگ نیازی نداره

خب بیایید db_name پایگاه داده را بدون تغییر dbid دیتابیس تغییر بدیم. (نکته: در هر حال باید حواستان به اثرات احتمالی هم باشه) 

SQL> shutdown immediate;
Database dismounted.
ORACLE instance shut down.

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

charcter setهای دیتابیس برای داده فارسی

  • AR8MSWIN256
  • AL16UTF8
  • AL32UTF8
  • UFT8

AR8MSWIN256

نکته: قدیمها به جای AR8MSWIN256 از WE8ISO8859P1 استفاده میکردن بدون اینکه دلیلش رو بدونن، در حقیقت این استاندارد قبل از اومدن AR8MSWIN256 رواج داشت ولی دیگه قابل قبول نیست

AR =همون Arabic

تو ویندوز XP اگه به قسمت Regional and Language Option برید تو قسمت Code page conversion table استاندارهای ذخیره کاراکترها رو می‌بینید (تو ویندوز اگه اسکرول کنید بیاین پایین استاندارد 1256 (ANSI - Arabic) رو می‌بینید)

تو این استاندارد ذخیره‌سازی به غیر از حروف عربی ۴ حرف اضافه فارسی هم اضافه شده (گچ پژ)

8 = یعنی ۸ بیت (۱ بایت)

نکته: ۱ بایت همیشه ۸ بیت نبود تو یونیکس‌های قدیمی ۱ بایت ۷ بیت بود

MS = مخفف Microsoft

WIN = مخفف Windows

256 = به همون 1256 اشاره داره

نکته: پس اگه دیتابیستون رو روی charcter set: AR8MSWIN256 بذارید هر کاراکتر ۱ بایت‌ه پس اگه بگیم (20)varchar2 ما می‌تونیم ۲۰ تا کاراکتر تایپ کنیم

AL16UTF8

AL = همون Alternative

16 = یعنی ۱۶ بیت یا همون ۲ بایت

پس هر کاراکتر AL ما ۲ بایت میگیره

پس اگه ما یکبار 'mahdi' رو به صورتی انگلیسی تایپ کنیم ۵ بایت اشغال میشه

و برای 'مهدی' ۸ بایت اشغال میشه

AL32UTF8

AL = همون Alternative

32 = یعنی ۳۲ بیت یا همون ۴ بایت

پس هر کاراکتر AL ما ۳۲ بایت میگیره

پس اگه ما یکبار 'mahdi' رو به صورتی انگلیسی تایپ کنیم ۵ بایت اشغال میشه

و برای 'مهدی' ۱۶ بایت اشغال میشه

UFT8

utf8 برای همه نوع کاراکتر ۳ بایت اشغال میکنه

پس وقتی از char موقع ایجاد جدولتون استفاده می‌کنید دقیقاً بسته به character set دیتابیستون شما کاراکترها رو مشخص می‌کنید

مثلاً اگه بگید:

varchar2(20) char => دقیقاً 20 کاراکتر میشه در این فیلد ذخیره کرد حالا بسته به character set دیتابیس ممکنه هر حرف رو ۲ بایت، ۳ بایت، ۴ بایت در نظر بگیره

برای آشنایی بیشتر با character setها به سایت http://unicode.org سر بزنید.

همچنین خوبه به این مستند مایکروسافتی هم سر بزنید.

۰۵ تیر ۹۵ ، ۱۶:۳۵ ۰ نظر
مهدی غفاری

انواع Data Type در Oracle Database 11g

  • varchar استاندارد ANSI داره
  • varchar2 استاندارد oracle رو داره (ماکزیمم 4000 بایت تو 11g و 32767 بایت تو 12c)
  • char به صورت ماکزیمم 255 بایت یا کاراکتر رو ساپورت میکنه
  • nvarchar2 به صورت ماکزیمم 2000 بایت یا کاراکتر
  • number به صورت ماکزیمم ۳۸ رقم
  • date شامل "قرن، سال، ماه، روز، ساعت، دقیقه، ثانیه" داره
  • timestamp تمام date رو داره بعلاوه اینکه ثانیه تا ۹ رقم ریزتر هم میشه
  • long برای کاراکتر استفاده میشه و ماکزیمم اون ۲ گیگ‌ه
  • long raw برای فایلهای باینری هستش و برای فایل‌های pdf, doc, mp3, avi, dll, ... هستش ماکزیمم ۲ گیگ

LOBs یا همون Large Objects

  • clob به صورت کاراکتره و ماکزیمم ۴ گیگ‌ه
  • nclob به صورت کاراکتر با ساپورت کاراکترهای national و ماکزیمم ۴ گیگ‌ه
  • blob به صورت binary برای فایلهای باینری هستش و برای فایل‌های pdf,rtf, doc, mp3, avi, dll, ... هستش، ماکزیمم ۴ گیگ
  • bfile در این type فایل‌ها به صورت اکسترنال و روی OS قرار داردند و درون bfile اشاره‌گر به فایل قرار دارد، ماکزیمم ۴ گیگ
  • securefile همون blob با سرعت و کارایی بیشتر

تفاوت بین long و long raw و LOBها

1:

اگه فیلدهای جدول شما به صورت زیر باشه به طور قطع شما موقع ساخت جدول به مشکل میخورید:

create table e(
e_id number(20),
f_name varchar(40 char),
...,
...,
cv long,
img long raw
);

نکته اینجاست که در یک جدول ۲ فیلد long نمیتوان داشت

2:

سرعت خوندن در log و LOBها متفاوته

در حقیقت long و long raw به صورت sequencial از حافظه میخونن(سریالی) و LOBها به صورت random access(مستقیم)

3:

در اوراکل با contex index یا همون oracle text میشه فیلدهای blob رو به صورت لغت به لغت ایندکس‌گذاری کرد همچنین به طور کامل از فارسی پشتیبانی میکنه

نکته: روز فیلدهای blob و clob نمیتوان index معمولی (b-tree ,bitmap) گذاشت

نکته: اگه فایل pdf داشته باشید context index نمیتونه فارسی‌ها رو ایندکس بکنه و فقط انگلیس‌ها رو ایندکس میکنه

4:

ذخیره فایلهای باینری مثل فیلم و موزیک در bfile عملکرد بهتری نسبت به فقط ذخیره آدرس فایل در varchar یا ... دارد

مثلا فرض کنید OS ما ویندوزه و فایلهای ما هم در درایوهای ویندوز قرار داره پس موقع ذخیره آدرس فایل در varchar آدرس فایلها به صورت ویندوزی است در این حالت اگه مسیر فایلها رو عوض کنیم کل مسیرهای ذخیره شده در دیتابیس هم باید عوض شود همچنین اگه سیستم‌عاملمون رو عوض کنیم و به unix baseها یا unix likeها که از استاندارد POSIX استفاده میکنن بریم دوباره کل مسیرها باید عوض شوند تازه اگه فایلها تو انتقال طبقه‌بندی و از هم جدا بشن درست کردن مسیرها بسیار کار مشکلی خواهد بود

برای رهایی از این مشکلات از bfile استفاده می‌کنیم و با ایجاد یک آبجکت دایرکتوری در دیتابیس مسیر فایلها رو ذخیره می‌کنیم در این رویکرد اگه سیستم‌عامل عوض شود یا بخوایم مسیر رو عوض کنیم فقط مسیر دایرکتوری رو عوض می‌کنیم

مزیت دیگه bfile نسبت به varchar برای ذخیره آدرس فایلها اینه که میتونیم رو فایلها ایندکس بذاریم(مثلا ایندکس روی doc, docx, rtf, ...) در صورتی که اگه از نوع varchar باشه فقط روی رشته‌ها ایندکس انجام میشه

اگه blob رو به bfile ببریم اولین مشکل میتونه تو خراب شدن پسوند فایلها در OS به وجود بیاد، دومین مشکل سر export گیری هستش اگه فایلها توی blob باشن با یه export تمام فایلها هم بک‌آپ گرفته میشن همچنین حجم بک‌آپ بالاتر میره

char

وقتی از data type char استفاده می‌کنید داده‌ها تو حافظه به صورت fix ذخیره می‌شوند

(پس سایز char به صورت fix ‌است) مثلاً:

Mahdi char(20) => 'Mahdi              '

مشکلات char

  • اشغال زیاد حافظه
  • مشکل در index و sort
  • مشکل در select (حتما باید موقع select ما trim کنیم رشته ورودی رو)
create table employees(
    employee_id number(10),
    f_name varchar2(40 char)
)

تو فیلد اول type ما در حقیقت 10 بایت‌ه و تعداد کاراکترهاش بسته به character set دیتابیس داره

و تو فیلد دوم type ما دقیقاً 40 کاراکتره

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

نگاهی بر معماری 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 مگابایت
توضیحات: تمام اسلایدهای اوراکل ورکشاپ ۱ به همراه اسکریپت‌ها

 

یادتون باشه اگه معماری اوراکل رو خوب ندونید برای 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 دانلود کنید.

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