Read-only Oracle Home در اوراکل 21c(تغییر مسیر دایرکتوری dbs و network)

یکی از فیچرهای جدیدی که در اوراکل 18c ارائه شد Read-only Oracle Home بود که مطابق با آن، logfileها و فایلهای پیکربندی موجود در مسیر ORACLE_HOME نظیر listener.ora، sqlnet.ora، spfile.ora و … به دایرکتوریهای زیرشاخه ORACLE_BASE منتقل می شوند(عمده فایلهای پیکربندی، در زیر دایرکتوری network/admin و dbs قرار می گیرند).

انتقال فایلهای پیکربندی از ORACLE_BASE به ORACLE_HOME سبب شده تا نیاز به تغییر در فایلهای ORACLE_HOME به حداقل برسد به طوری که اگر یک Read-only Oracle Home را در پارتیشن read-only قرار دهیم، اوراکل بدون مشکل به کارش ادامه خواهد داد مگر آنکه نیاز به اعمال patch بر روی نرم افزار داشته باشیم که در این صورت باید پارتیشن را در حالت read write قرار دهیم.

Read-only Oracle Home در نسخه 18c به صورت پیش فرض فعال نیست و برای فعال کردن آن می بایست از دستور roohctl –enable استفاده کرد:

 [oracle@RAC3 ~]$ cd /oracle18c/home/bin/

[oracle@RAC3 bin]$ orabasehome

/oracle18c/home

[oracle@RAC3 bin]$ ./roohctl -enable

Enabling Read-Only Oracle home.

Update orabasetab file to enable Read-Only Oracle home.

Orabasetab file has been updated successfully.

Create bootstrap directories for Read-Only Oracle home.

Bootstrap directories have been created successfully.

Bootstrap files have been processed successfully.

Read-Only Oracle home has been enabled successfully.

[oracle@RAC3 bin]$ orabasehome

/oracle18c/base/homes/OraDB18Home1

دستور orabasehome در محیط read-write Oracle home مقدار متغیر ORACLE_HOME را برمی گرداند این دستور در حالت read-only Oracle home مسیر ORACLE_BASE/homes را نمایش می دهد.

بنابرین با توجه به خروجی دستور orabasehome، مسیر فایلهای پیکربندی از oracle18c/home/ به oracle18c/base/homes/OraDB18Home1/ تغییر کرده است(منظور از عبارت OraDB18Home1 همان HOME_NAME است که در oraInventory ثبت می شود).

در اوراکل نسخه 19c تغییر جدی و مشهودی در این زمینه ایجاد نشده و صرفا امکان استفاده از این ویژگی همانند قبل در این نسخه هم وجود دارد اما در نسخه 21c، اوراکل ویژگی Read-only Oracle Home را به صورت پیش فرض فعال کرده و با نصب اوراکل نسخه 21c، فایلهای پیکربندی در sub-directoryهای ORACLE_BASE ایجاد خواهند شد.

[oracle@RAC3 ~]$ /oracle21c/home/bin/orabasehome

/oracle21c/base/homes/OraDB21Home1

با نصب نرم افزار در این نسخه شاهد دو دایرکتوری جدید در مسیر ORACLE_BASE خواهیم بود:

[oracle@RAC3 ~]$ cd /oracle21c/base

 [oracle@RAC3 base]$ ls

cfgtoollogs  dbs  diag  homes

دایرکتوری dbs معادل همان dbsای است که در نسخه های قبلی در ORACLE_HOME ایجاد می شد و همچنین ساختار دایرکتوری homes به شکل زیر است:

 در محیط Read-Only Oracle home اگر فایلهای پیکربندی در مسیر ORACLE_HOME تنظیم شوند، عملا بلااستفاده خواهند بود:

[oracle@RAC2 ~]$ /oracle21c/home/bin/orabasehome

/oracle21c/base/homes/OraDB21Home1

[oracle@RAC2 ~]$ vi /oracle21c/home/network/admin/tnsnames.ora

PDB1 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.20)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = pdb1)

    )

  )

[oracle@RAC2 ~]$ tnsping pdb1

TNS Ping Utility for Linux: Version 21.0.0.0.0 – Production on 04-SEP-2021 16:11:09

Copyright (c) 1997, 2021, Oracle.  All rights reserved.

Used parameter files:

TNS-03505: Failed to resolve name

[oracle@RAC2 ~]$

در صورتی که با تنظیم این net service name در مسیر ORACLE_BASE دستور tnsping بدون خطا اجرا خواهد شد:

[oracle@RAC2 ~]$ vi /oracle21c/base/homes/OraDB21Home1/network/admin/tnsnames.ora

PDB1 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.20)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = pdb1)

    )

  )

 [oracle@RAC2 ~]$ tnsping pdb1

TNS Ping Utility for Linux: Version 21.0.0.0.0 – Production on 04-SEP-2021 16:13:45

Copyright (c) 1997, 2021, Oracle.  All rights reserved.

Used parameter files:

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.20)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = pdb1)))

OK (0 msec)

 

ایجاد دیتابیس در محیط Read-Only Oracle home

با ایجاد دیتابیس جدید خواهیم دید که spfile،  password file و همه فایلهای که در نسخه های قبلی در مسیر ORACLE_HOME/dbs ایجاد می شدند، در این نسخه در مسیر ORACLE_BASE/dbs قرار گرفته اند:

[oracle@oLinux7 ~]$ cd /oracle21c/base/dbs/

[oracle@oLinux7 dbs]$ ls

hc_db21c.dat  initdb21c.ora  lkDB21C  orapwdb21c  snapcf_db21c.f  spfiledb21c.ora

همچنین فایلهای پیکربندی Oracle Net در مسیر ORACLE_BASE/homes/OraDB21Home1/network/admin ایجاد خواهند شد:

[oracle@oLinux7 ~]$ cd /oracle21c/base/homes/OraDB21Home1/network/admin

[oracle@oLinux7 admin]$ ls

listener.ora  tnsnames.ora

 

غیر فعال کردن Read-Only Oracle home در اوراکل 21c

اگر با Read-Only Oracle home در نسخه 21c راحت نیستید، می توانید بلافاصله بعد از نصب نرم افزار اوراکل، با اجرای دستور زیر، این ویژگی را غیرفعال کنید:

[oracle@RAC3 ~]$ /oracle21c/home/bin/roohctl -disable

Disabling Read-Only Oracle home.

Update orabasetab file to disable Read-Only Oracle home.

Orabasetab file has been updated successfully.

Read-Only Oracle home has been disabled successfully.

Check the log file /oracle21c/base/cfgtoollogs/roohctl/roohctl-210901PM051806.log for more details.

با ایجاد دیتابیس جدید در این محیط، فایلهای پیکربندی در مسیر ORACLE_HOME قرار خواهند گرفت:

[oracle@RAC3 ~]$ cd /oracle21c/home/dbs/

[oracle@RAC3 dbs]$ ls

hc_db21.dat  init.ora  lkDB21  orapwdb21  spfiledb21.ora

 

ارتباط با نویسنده مطلب:vahidusefzadeh@ کانال تخصصی اوراکل و لینوکس: OracleDB@

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.