۳۵ مطلب با کلمه‌ی کلیدی «DBA» ثبت شده است

مروری اجمالی بر سخت‌افزاری‌های مورد نیاز کلاستر - قسمت اول

دریافت اسلایدها
حجم: 11.7 مگابایت

 

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

اینا رو حتما به عنوان یک DBA باید بدونید حتی باید به شرکت یا سازمان کمک کنید و LOM تهیه کنید که تجهیزات رو خریداری کنه

بعد از سخت‌افزار شما باید توپولوژی شبکه‌ی کلاستر رو هم بدونید برای کار عملی حتما لازمه که اینها رو بدونید

ما مدلهای مختلف سرور داریم

به سرورهای زیر ml server میگن که به صورت tower ای هستن

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

نصب Solaris x86 11 از روی ISO در Virtualbox - بخش اول

اخیراً من با یک DBA در حاشیه یکی از رویدادهای IOUG برخورد داشتم در صحبت‌هامون ایشون شکایت می‌کرد و می‌گفت که نمی‌تواند از Solaris 11.2 استفاده کند و حتی آن را نصب کند. ایشون منو چند هفته قبل دیده بود که در حال ارائه پیش‌نمایش Openstack بودم، بنابراین از من خواست که Solaris 11.2 را بر روی یک ماشین مجازی نصب کنم. و این هم چگونگی انجام قدم به قدم این کار:

اول از همه بایستی Solaris 11.2 x86 ISO را دانلود کنید. می‌توانید از اینجا دانلود کنید.

حالا یک ماشین‌مجازی جدید به اسم Solaris 11.2 demo ایجاد می‌کنیم.

 

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

لیست تغییرات جدول توسط کاربران

س: لیست تغیراتی که کاربران بر روی جدول T1 داده‌اند را نمایش دهید:

ج: با استفاده از کوئری زیر می‌توانید به این هدف برسید.

SQL> select commit_timestamp , logon_user, XID from flashback_transaction_query
where table_NAME='T1';
COMMIT_TI LOGON_USER                     XID
--------- ------------------------------ ----------------
12-MAY-15 MAHDI 02000000B8090000
12-MAY-15 MAHDI 02000000B8090000
12-MAY-15 MAHDI 02000000B8090000
12-MAY-15 MAHDI 08001C00C6090000

گزارش بالا لیست commitهایی که کاربران رو سطح دیتابیس رو جدول t1 انجام داده‌اند.

نکته: این گزارش نمونه‌ای از اطلاعات دیتادیکشنری است. همچنین همانطور که مشاهده می‌کنید این گزارش از flashback_transaction_query گرفته شده است.

XID = شماره پیگیری transaction است.

نمایش لیست فیلدهای جدول flashback_transaction_query

SQL> describ flashback_transaction_query;
Name Null? Type
----------------------------------------- -------- -----------------
XID                                                 RAW(8)
START_SCN NUMBER
START_TIMESTAMP DATE
COMMIT_SCN NUMBER
COMMIT_TIMESTAMP DATE
LOGON_USER VARCHAR2(30)
UNDO_CHANGE# NUMBER
OPERATION VARCHAR2(32)
TABLE_NAME VARCHAR2(256)
TABLE_OWNER VARCHAR2(32)
ROW_ID VARCHAR2(19)
UNDO_SQL VARCHAR2(4000)

نکته: اگر در حالت audit نباشید فیلد undo_sql, row_id اطلاعاتی در خود ندارد.

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

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

ساختار کامل ایجاد کاربر همراه با تعریف Default Tablespace

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

CREATE USER

CREATE USER sidney 
    IDENTIFIED BY out_standing1 
    DEFAULT TABLESPACE example 
    QUOTA 10M ON example 
    TEMPORARY TABLESPACE temp
    QUOTA 5M ON system 
    PROFILE app_user 
    PASSWORD EXPIRE;

این ساختار کلی و کامل تعریف یوزر در اوراکل است. همونطور که می‌بیندی هر یوزر موقع ایجاد یک DEFAULT TABLESPACE دارد که اگر مقداردهی نشود با DEFAULT TABLESPACE پیش‌فرض خود اوراکل مقداردهی می‌شود.

پس اگر table در این یوزر تعریف بشود و این یوزر schema یک جدول باشد (مالک یک جدول باشد) و آن جدول به یک tablespace اتصال داده نشده باشد اوراکل از DEFAULT TABLESPACE استفاده می‌کند.

تمامی یوزرها در اوراکل به صورت پیش‌فرض DEFAULT TABLESPACE اشون tablespace یوزر 01 است که محدودیتی ندارد.  

نکته: اگر خودتان به صورت دستی جدولی را به tablespace ای اتصال دهید دیگر جدول وارد default tablespace نمی‌شود و وارد آن tablespace موردنظرتان می‌شود.

نکته: اگر بخواهیم temporary tablespaceها را زمانی که پر شده خالی کنیم در وقتی که به هر دلیلی توسط دیتابیس به طور خودکار clear نمی‌شوند

باید به صورت دستی temporary tablespace را drop کنیم. 

temporary tablespace زمانی توسط اوراکل استفاده میشه که tablespace اصلی ما به مشکل بخوره (آفلاین بشه،‌مشکلی براش پیش بیاد)

temporary tablespace یه واحدیه بعد از Redo و قبل از DataFile که زمانی که مشکلی برای DataFile شما پیش بیاید temporary tablespace سریع جایگزین خواهد شد.

چند مثال از نحوه ایجاد کاربر:

Create user mahdi identified by 123 password expire;

در این صورت کاربر بعد از اولین ارتباط با بانک باید دستور password را جهت تغیر password وارد نماید.

Create user mahdi identified by 123 password expire account lock;

در این صورت بعد از تغییر پسورد توسط کاربر اکانت کاربر قفل می‌شود.

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

Oracle Users

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

Partitioning

Partitioning تو ۹۰ درصد مواقع به درد ما نمی‌خوره ولی زمانی که روی (Very Large Database (VLDB کار می‌کنیم که یک جدول ممکنه ۱ گیگ باشه اونوقت باید از تکه تکه کردن یا همون Partitioning استفاده کنیم.

چرا از Partitioning استفاده می‌کنیم؟

یه جدول ۱۰۰ گیگی رو در نظر بگیرید برای کش جدولی که به صورت فیزیکی ۱۰۰ گیگه تقریباً حداقل ۱۶ گیگ رم نیاز داریم، اما وقتی ما ۲ گیگ بیشتر رم نداریم باید چی کار کنیم؟ تو این شرایط اوراکل نمی‌تونه کش رو یکجا انجام بده پس به صورت پیش‌فرض اوراکل کش را تکه تکه انجام میده یعنی قسمتی را وارد SGA می‌کند و پردازش می‌کند و بعد از پردازش قسمتی دیگر را وارد SGA می‌کند و پردازش می‌کند. حتی اگر where هم گذاشته باشید این اتفاق بازهم می‌افته کل جدول رو تیکه تیکه میاره تو فضای SGA و توسط PGA پردازش می‌کنه و به همین ترتیب تا پایان پردازش کل جدول ادامه میده.

توی ۹۰ درصد مواقع شاید من لازم داشته باشم به این روش عمل کنم:

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

DataDictionaryهای مربوط به TableSpaceها

دیتادیکشنری جداولی هستند که به صورت پیش‌فرض در اوراکل وجود دارند و ساختار دیتابیس رو نگه‌داری می‌کنند. اونایی که اولشون DBA است جدول هستند و اونایی که اولشون V است VIEW هستند.

یه وضعیتی روی TableSpaceها وجود داره که شما می‌تونید به وسیله دیتا دیکشنری اسم همه TableSpaceهاتون رو پیدا کنید:

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

SQL> DESCRIB DBA_TABLESPACES;
Name Null? Type
----------------------------------------- -------- ---------------
 TABLESPACE_NAME                            NOT NULL  VARCHAR2(30)
BLOCK_SIZE NOT NULL NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT NUMBER
MIN_EXTENTS NOT NULL NUMBER
MAX_EXTENTS NUMBER
MAX_SIZE NUMBER
PCT_INCREASE NUMBER
MIN_EXTLEN NUMBER
STATUS VARCHAR2(9)
CONTENTS VARCHAR2(9)
LOGGING VARCHAR2(9)
FORCE_LOGGING VARCHAR2(3)
EXTENT_MANAGEMENT VARCHAR2(10)
ALLOCATION_TYPE VARCHAR2(9)
PLUGGED_IN VARCHAR2(3)
SEGMENT_SPACE_MANAGEMENT VARCHAR2(6)
DEF_TAB_COMPRESSION VARCHAR2(8)
RETENTION VARCHAR2(11)
BIGFILE VARCHAR2(3)
PREDICATE_EVALUATION VARCHAR2(7)
ENCRYPTED VARCHAR2(3)
COMPRESS_FOR VARCHAR2(30)

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

TableSpaceهای حجیم

هر دیتافایل در اوراکل تا حجم 8 اگزابایت معادل 8 میلیون ترابایت می‌تواند مقدار‌دهی شود. و توجه داشته باشید که یک دیتابیس از یک مخزن می‌تواند به طور نامحدود دیتافایل داشته باشد.

برای ایجاد TableSpaceهای حجیم بهتره در اوراکل از دستور زیر استفاده کنید، چون مکانیزم index گذاری DataFileهای حجیم فرق میکنه و دیگه snapshot بیس نیست:

Create bigfile tablespace ts datafile ‘d:\root\a.dbf’ size 100g;

نکته: بعد از زدن دستور ایجاد دیتافایل با سایز زیاد مدت زمانی طول می‌کشد تا initialize انجام شود. اندازه ۱۰۰ گیگ Gap رو ایجاد می‌کنه ته فایل رو می‌بنده.

نکته: اگر تمام فضای پارتیشن شما با دیتافایل پر شود نه بخشی از آن تمام آن بخش به دیتافایل اختصاص می‌یابد و دیگر قابل recovery نیز نیست.

نکته: معمولاً از حجم ۱ تا ۱۰ گیگ به بالا وقتی شما دارید دیتافایل ایجاد می‌کنید تا سقف ۸ اگزابایت tablespace ای که ایجاد می‌کنید بهتره bigfile‌ باشه

m = megabyte
g = gigabyte
t = terabyte
p = petabyte
e = exabyte

س: ۵ اگزابایت چند بایت است؟

ج: 5.0 × 1015 kilobytes به سرچ زیر در گوگل دقت کنید:

https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=5+exabyte+convert+to+kilobyte

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

فقط خواندنی و فقط نوشتنی کردن یک TableSpace

برای اینکه یک TableSpace را به حالت read only ببریم از دستور زیر استفاده می‌کنیم، در این حالت از جداولی که روی TableSpace ما هستند فقط میشه select گرفت و نمیشه ورود داده کرد:

نکته: وقتی می‌خواهیم در یک بازه زمانی اصلاً ورود و یا تغییر داده روی فیلدها انجام نشود، از این حالت استفاده می‌کنیم.

alter tablespace ts read only;

برای اینکه TableSpace را به حالت اول برگردونیم از دستور زیر استفاده می‌کنیم، در این حالت هم اجازه خواندن را می‌دهیم و هم اجازه نوشتن را:

alter tablespace ts read write;

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

جلوگیری از log کردن داده‌های تغیر پیدا کرده در TableSpace

برای این کار از دستور زیر موقع ایجاد TableSpace استفاده می‌کنیم:

create tablespace ts datafile 'd:\root\a.dbf' size 100m nologging;
۱۳ ارديبهشت ۹۴ ، ۲۰:۳۴ ۰ نظر
مهدی غفاری

عمومی‌کردن بانک‌اطلاعاتی برای استفاده سایرکاربران

یه وقتایی هست که می‌خوایم دیتابیس رو ببریم رو حالتی که از نظر عموم کاربران در دسترس نیست در واقع دیتابیس تو این حالت open ایت ولی فقط برای ادمین‌های قدرمتند اوراکل open است. اصطلاحاً به این ادمین‌ها ادمین‌های restrictED گفته می‌شود.(یعنی ادمین‌هایی که می‌خوان با دسترسی مشخص به دیتابیس وصل بشوند)

با زدن دستور زیر دیتابیس ما به حالت restrict می‌رود:حالت یواشکی  (روی کاربران جاری اثر ندارد و هیچ کس به جز خود شما و کاربر SYS دسترسی به دیتابیس را ندارد)

alter system enable restricted session;

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

alter system disable restricted session;

س: چه کاربرانی می‌توانند تو مد restric به دیتابیس وصل بشوند؟

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

grant sysdba to [USER];

نکته: role کاربر system به صورت پیش‌فرض dba و role کاربر sys به صورت پیش‌فرض sysdba است:

system = dba
sys = sysdba

بردن به حالت یواشکلی (روی کاربران جاری اثر ندارد و فقط مدیران(role dba) دسترسی دارند):

alter system quiesce restricted;

خارج کردن از این حالت:

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