وبلاگ مسعود حاجی حسن پور

راهکار های عملی اوراکل

راهکار های عملی اوراکل

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

دستاوردها
طبقه بندی موضوعی

۲ مطلب در مهر ۱۳۹۶ ثبت شده است

Oracle ACFS

ACFS

با سلام خدمت دوستان عزیز،
امروز قصد دارم کمی در مورد ASM Cluster File System, ACFS بنویسم.


ASM Volume چیست ؟
ASM Volume یک فایل است مانند دیگر فایل ها در ASM که از redundancy ASM پیروی میکند و extent های آن مانند فایل های دیگر بین disk ها برای IO بهتر توزیع میگردد. باید دقت گردد که یک Volume با استفاده از ASM Dynamic Volume Manager, ADVM به OS ارایه میگردد. با استفاده از ADVM مانند دیگر فایل سیستم ها، کاربران در سیستم عامل میتوانند به Volume درخواست IO داشته باشند. یک volume به عنوان یک block device به OS ارایه میگردد پس با دستور ها ای مانند mkfs میتواند آن را فرمت نمود. فایل سیستم ها ای مانند ext4, fat32, ntfs, xfs, acfs, ...


 ACFS چیست ؟
ACFS یک کلاستر فایل سیستم چند منظوره هست که شما در آن میتوانید انواع فایل ها از قبیل متن، عکس، موسیقی، ORACLE_HOME پایگاه داده و... را در آن ذخیره کنید که قسمتی از ASM می باشد. باید دقت داشت که در ACFS تقریبا همه چیز را میتوان ذخیره کرد به جز CRS_HOME, boot_device. یعنی باینری فایل های ASM در درون ACFS نمیتواند قرار گیرد چون برای load کردن ACFS نیاز به دسترسی به CRS_HOME میباشد که درصورتی که CRS_HOME درون ACFS باشد این مهم امکان پذیر نمیباشد. به درستی ACFS چون یک کلاستر فایل سیستم می باشد Managing Concurrency را انجام میدهد.

بیایید با یکدیگر یک سناریو ساخت ASCF را دنبال کنیم. شما به چند طریق میتوانید یک ACFS فایل سیستم ایجاد کنید :
  1. sqlplus
  2. asmcmd
  3. asmca
  4. enterprise manager
ما در اینجا از command line استفاده خواهیم گرد:

۱- در این مرحله اول یک volume در ASM diskgroup ایجدا میکنیم:

SQLPLUS Example:
[grid@rac1 ~]$ sqlplus / as sysasm
SQL> ALTER DISKGROUP DATA ADD VOLUME ACFSVOL3 SIZE 10G;

Diskgroup altered.

SELECT volume_name, volume_device FROM V$ASM_VOLUME 
     WHERE volume_name ='ACFSVOL3';
VOLUME_NAME VOLUME_DEVICE ----------------- -------------------------------------- ACFSVOL3 /dev/asm/acfsvol3-123 ASMCMD Example: [grid@rac1 ~]$ asmcmd volcreate -G data -s 10G ACFSVOL3 [grid@rac1 ~]$ asmcmd volinfo -G data ACFSVOL3 Diskgroup Name: DATA Volume Name: ACFSVOL3 Volume Device: /dev/asm/acfsvol3-123
State: ENABLED ...


۲- خوب تا الان یک volume در ASM diskgroup +DATA به حجم 10G ایجاد کردیم. حالا وقت این است که یک فایل سیستم برروی volume ایجاد کنیم که در اینجا ما یک ACFS برروی volume ایجاد خواهیم کرد. دقت کنید که از این پس volume با استفاده از ADVM به صورت یک block device به OS با آدرس /dev/asm/acfsvol3-123 ارایه شده است.


[grid@rac1 ~]$ /sbin/mkfs -t acfs /dev/asm/volume1-123

mkfs.acfs: version                   = 11.2.0.4.0.0
mkfs.acfs: on-disk version           = 39.0
mkfs.acfs: volume                    = /dev/asm/volume1-123
mkfs.acfs: volume size               = 10737418240
mkfs.acfs: Format complete.


۳- در مرحله فوق اگر دقت کرده باشبد ما با کاربر grid  فایل سیستم ابجاد کردیم. دقت کنید که بعد از ساخت block device مالک آن چه کسی هست ؟! در اینحا مالک asmadmin میباشد پس مالک یا کاربر root میتواند filesystem  ایجاد کند که با با استفاده از مالک چنین کاری انجام دادیم. حالا وقت آن است که یک mount point  ایجاد کرده و block device فرمت شده را بر روی یک مسیر mount کنیم.


[root@rac1 ~]$ /bin/mount -t acfs /dev/asm/volume1-123 /u01/app/acfsmounts/myacfs


۴- در مرحله فوق ما عملیات mount را انجام دادیم. دقت کنید تنها با کاربر root این امکان وجود دارد که عملیات mount  را انجام بدید. این مرحله را روی تمام node های کلاستر باید تک تک انجام بدید. ولی یک کار ساده تر وجود دارد که خود clusterware شروع میکند به mount کردن block device برروی mount point ها بر روی تمام نود ها. دقت کنید که این مرحله یک مرحله optional هست. اسم این مرحله acfs registery می باشد.


[grid@rac1 ~]$ /sbin/acfsutil registry -a /dev/asm/volume1-123 /u01/app/acfsmounts/myacfs

acfsutil registry: mount point /u01/app/acfsmounts/myacfs successfully added 
  to Oracle Registry


دقت کنید در مرحله فوق oracle clusterware عملیات mounting و مانیتور کردن آن را به صورت automatic انجام میدهد. چگونگی کار به این صورت است که clusterware آن را به صورت یک resource در OCR ثبت میکند، پس به صورت خودکار در هنگام بالا آمدن شروع به mount کردن block device ها در mount point ها میکند، و در هنگام پایین آمدن کلاستر، clusterware با رعایت ترتیب وابستگی ها شروع به dismount کردن block device ها میکند. پس این گونه هست که از ACFS میتوان به عنوان shared oracle db home استفاده کرد. لازم به ذکر است، در حالت نصب standalone, چنین چیزی بی معنی است چون OCR وجود ندارد و حتما block device ها باید به صورت دستی mount گردد.


[root@rac1 ~]$ /u01/app/11.2.0.4/grid/bin/crsctl stat res ora.registry.acfs
NAME=ora.registry.acfs
TYPE=ora.registry.acfs.type
TARGET=ONLINE        , ONLINE        , ONLINE
STATE=ONLINE on rac1, ONLINE on rac2, ONLINE on rac3


اگر مسیر تمام mount point ها و block device  ها را ندانیم مشکلی نیست با دستور زیر با کاریر root میتوانی تمام آنها را mount کنیم:

[root@rac1 ~]$ /bin/umount -t acfs -a
[root@rac1 ~]$ /sbin/mount.acfs -o all

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

شاد و پیروز باشید.

Sync Password file between primary and data guard in Oracle 12cR2

passwordfile

سلام دوستان عزیز امیدوارم حالتان خوب باشد.

یکی از قابلیت های جدید که در پایگاه داده Oracle 12cR2 معرفی شده، همسان شدن password file بین primary و dataguard می باشد.

 به مثال زیر توجه بقرمایید:

[oracle@myos ~]$ dgmgrl sys/123@cdbp
DGMGRL for Linux: Release 12.2.0.1.0 - Production on Tue Oct 07 07:38:15 2017

Copyright (c) 1982, 2016, Oracle and/or its affiliates.  All rights reserved.

Welcome to DGMGRL, type "help" for information.
Connected to "cdbp"
Connected as SYSDBA.
DGMGRL> show configuration;

Configuration - dg

  Protection Mode: MaxPerformance
  Members:
  cdbp   - Primary database
    cdbpst - Physical standby database 

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS   (status updated 46 seconds ago)

DGMGRL> exit
[oracle@myos ~]$ sqlplus sys/123@cdbp as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Tue Oct 07 07:42:19 2017

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> alter user sys identified by masoud;

User altered.

SQL> connect sys/masoud@cdbp as sysdba
Connected.
SQL> connect sys/masoud@cdbpst as sysdba
Connected.

تنها کاری که انجام دادم تغییر در password file توی پایگاه داده primary بود و این تغییر به صورت خودکار نیز بر روی پایگاه داده guard اعمال شد. در صورتی که این کار را در ورژن های قبل باید به صورت دستی انجام میدادیم.


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

شاد و پیروز باشید.