نصب و راه اندازی اوراکل و کانفیگ گارد بر روی ویندوز سرور

در بسیاری از سازمان‌ها، امنیت و پایداری داده‌ها از مهم‌ترین نیازهای زیرساختی محسوب می‌شود. Oracle Data Guard راهکاری قدرتمند برای ایجاد پایگاه داده‌ی پشتیبان (Standby) است که در صورت بروز مشکل در پایگاه داده‌ی اصلی (Primary)، بتوان به‌سرعت سرویس‌دهی را ادامه داد.
در این راهنما، گام‌به‌گام نصب Oracle Database 19c بر روی ویندوز سرور و سپس پیکربندی Data Guard برای ایجاد یک پایگاه داده‌ی Primary و یک Standby شرح داده می‌شود. تمامی مراحل با جزئیات عملی آورده شده‌اند تا در پیاده‌سازی محیط تست یا حتی محیط عملیاتی کاربرد داشته باشند.

پیش‌فرض‌های محیط آزمایشگاهی

برای اجرای این سناریو، ما یک محیط آزمایشگاهی بر پایه VMware Workstation ایجاد کرده‌ایم. مشخصات کلی به صورت زیر در نظر گرفته شده است:

  • سیستم‌عامل:
    Windows Server 2022 Datacenter (نصب روی هر دو ماشین مجازی)

  • نسخه اوراکل:
    Oracle Database 19c (نسخه 19.3) – نصب به صورت Single Instance

  • نام ماشین‌ها (Computer Name):

    • سرور اصلی (Primary): winmain

    • سرور گارد (Standby): winguard

  • آدرس‌های IP:

    • Primary → 192.168.188.15

    • Standby → 192.168.188.16

    • Subnet Mask: 255.255.255.0

    • Gateway: 192.168.188.1

  • کاربران ویندوز:

    • Administrator (با پسورد دلخواه)

    • oracle (کاربری اختصاصی برای اجرای نرم‌افزار اوراکل، با پسورد دلخواه و دسترسی لازم به پوشه‌های بالا)

  • پورت ارتباطی اوراکل:
    پورت پیش‌فرض 1521 باز و در فایروال مجاز شده است.

مرحله ۱: آماده‌سازی ویندوز سرورها

تغییر نام کامپیوتر (Computer Name)

  1. روی دسکتاپ یا منوی Start روی This PC یا Server Manager راست‌کلیک کنید و گزینه Properties را انتخاب نمایید.

  2. در پنجره بازشده، سمت راست روی Advanced system settings کلیک کنید.

  3. در تب Computer Name روی Change کلیک کنید.

  4. نام جدید را وارد کنید:

    • سرور اصلی (Primary): winmain

    • سرور پشتیبان (Standby): winguard

  5. OK کنید و سیستم را Restart نمایید.

تنظیم IP ثابت

  1. روی آیکون شبکه پایین سمت راست (کنار ساعت) راست‌کلیک کرده و گزینه Open Network & Internet settings را انتخاب کنید.

  2. در بخش Change adapter options، کارت شبکه (Ethernet) را انتخاب کنید.

  3. روی کارت شبکه راست‌کلیک → Properties.

  4. روی Internet Protocol Version 4 (TCP/IPv4) دابل‌کلیک کنید.

  5. گزینه Use the following IP address را انتخاب نمایید:

    • Primary → 192.168.188.15

    • Standby → 192.168.188.16

    • Subnet mask: 255.255.255.0

    • Default gateway: (مثلاً 192.168.188.1)

    • DNS: همان Gateway یا DNS داخلی

  6. OK کنید.

فعال کردن remote desktop

  1. از Start منو Server Manager رو باز کن.

  2. سمت چپ روی Local Server کلیک کن.

  3. در بخش Properties آیتم Remote Desktop رو می‌بینی → روش کلیک کن.

  4. پنجره System Properties باز می‌شه (مثل همون مسیر قدیمی).

  5. گزینه Allow remote connections to this computer رو انتخاب کن.

ویرایش فایل hosts

  1. مسیر زیر را در Notepad (Run as Administrator) باز کنید:

C:\Windows\System32\drivers\etc\hosts

     2. این خطوط را اضافه نمایید:

192.168.188.15   winmain
192.168.188.16   winguard

فعال‌سازی Remote Desktop

  1. از منوی Start، Server Manager را باز کنید.

  2. در بخش Local Server، گزینه Remote Desktop را بیابید و روی آن کلیک کنید.

  3. در پنجره بازشده، Allow remote connections to this computer را انتخاب کنید.

 

تنظیم پسورد برای Administrator

  1. روی Start راست‌کلیک → Computer Management.

  2. از منوی سمت چپ: Local Users and Groups → Users.

  3. روی کاربر Administrator راست‌کلیک کنید → Set Password.

  4. پسورد دلخواه را وارد نمایید.

 

ایجاد کاربر Oracle

  1. در Computer Management به مسیر Local Users and Groups → Users بروید.

  2. راست‌کلیک روی UsersNew User.

  3. نام کاربری: oracle

  4. پسورد دلخواه وارد کنید.

  5. تیک Password never expires را بزنید و گزینه User must change password at next logon را بردارید.

 

مرحله ۲: آماده‌سازی مسیرها و مجوزها

ایجاد مسیرهای لازم

روی هر دو سرور پوشه‌های زیر را بسازید:

C:\app\oracle
C:\app\oracle\product\19c\db_home
C:\app\oracle\oradata
C:\app\oracle\fra
C:\app\oracle\admin

اختصاص دسترسی‌ها به کاربر oracle:

می‌تونی سریع همه مجوزها رو با CMD بزنی:

icacls "C:\app\oracle" /grant oracle:(OI)(CI)F /T
icacls "C:\app\oracle\product\19c\db_home" /grant oracle:(OI)(CI)F /T
icacls "C:\app\oracle\oradata" /grant oracle:(OI)(CI)F /T
icacls "C:\app\oracle\fra" /grant oracle:(OI)(CI)F /T
icacls "C:\app\oracle\admin" /grant oracle:(OI)(CI)F /T

 

  • (OI)(CI) یعنی Permission برای فایل‌ها و پوشه‌های داخل هم اعمال میشه.

  • /T یعنی recursive (همه زیرپوشه‌ها).

  • F یعنی Full Control.


خروجی دستور:

C:\Users\Administrator>icacls "C:\app\oracle" /grant oracle:(OI)(CI)F /T
processed file: C:\app\oracle
processed file: C:\app\oracle\admin
processed file: C:\app\oracle\fra
processed file: C:\app\oracle\oradata
processed file: C:\app\oracle\product
processed file: C:\app\oracle\product\19c
processed file: C:\app\oracle\product\19c\db_home
processed file: C:\app\oracle\product\19c\db_home\WINDOWS.X64_193000_db_home.zip
Successfully processed 8 files; Failed processing 0 files

C:\Users\Administrator>icacls "C:\app\oracle\product\19c\db_home" /grant oracle:(OI)(CI)F /T
processed file: C:\app\oracle\product\19c\db_home
processed file: C:\app\oracle\product\19c\db_home\WINDOWS.X64_193000_db_home.zip
Successfully processed 2 files; Failed processing 0 files

C:\Users\Administrator>icacls "C:\app\oracle\oradata" /grant oracle:(OI)(CI)F /T
processed file: C:\app\oracle\oradata
Successfully processed 1 files; Failed processing 0 files

C:\Users\Administrator>icacls "C:\app\oracle\fra" /grant oracle:(OI)(CI)F /T
processed file: C:\app\oracle\fra
Successfully processed 1 files; Failed processing 0 files

C:\Users\Administrator>icacls "C:\app\oracle\admin" /grant oracle:(OI)(CI)F /T
processed file: C:\app\oracle\admin
Successfully processed 1 files; Failed processing 0 files

 

مرحله ۳: نصب نرم‌افزار Oracle

  1. فایل Oracle Database 19c را در مسیر:

C:\app\oracle\product\19c\db_home\

و در همین مسیر extract  می کنیم. هم در سرور اصلی و هم  در سرور گارد.

بعد از extract میریم برای نصب.

روی setup راست کلیک می کنیم و run as administrator اجرا می کنیم

در صفحه اول set up software only رو انتخاب می کنیم

در صفحه دوم single instance database installation  رو انتخاب می کنیم

در صفحه سوم enterprise edition رو انتخاب می کنیم.

در صفحه چهارم use existing windows user رو انتخاب می کنیم و در قسمت user name نام oracle رو وارد می کنیم.

در صفحه پنجم مقدار oracle base را برابر C:\app\oracle می گذاریم. این مقدار همان مقدار پیشنهادی است.

در صفحه شش پیش نیازها را چک می کند.

در صفحه هفتم دستور نصب را می زنیم.

در صفحه هشتم پیشرفت کار رو می بینید و در صفحه نهم با موفقیت نصب شده.

 

مرحله ۴: پیکربندی Listener

با اجرای دستور زیر:

روی هر دو سرور با زدن دستور netca یا اونطور که در ویندوز نمایش داده میشه net configuration assistant رو اجرا می کنیم

در صفحه اول listener configuration رو در نظر می گیریم

در صفحه دوم add  رو انتخاب می کنیم

در صفحه سوم اسم listener و همچنین پسوردی که برای کاربر oracle در نظر گرفته بودیم رو وارد می کنیم.

در صفحه بعد همان tcp رو می گذاریم باشد.

همان پورت 1521 بصورت پیش فرض را وارد می کنیم.

در صفحه بعد next را می زنیم

و finish

 

مرحله ۵: ایجاد دیتابیس اصلی (Primary):

برای اینکار به مسیر 

C:\app\oracle\product\19c\db_home\bin

می رویم و بر روی dbca کلیک می کنیم.

create a database > advanced configuration > general purpose or transaction processing >

اسم دیتابیس را orcl و اسم sid  را نیز orcl می گذاریم. دیتابیس را از نوع container می سازیم و اسم pdb  را نیز orclpdb میگذاریم.

در صفحه بعد use following for the datbase storage attributes  می گذازیم و از نوع file system  و مسیر را 


{ORACLE_BASE}\oradata\{DB_UNIQUE_NAME}


می گذاریم بماند. تیک use oracle-managed files (omf) را هم می زنیم

در صفحه بعد تیک specify fast recovery area را می زنیم و مسیر را به مسیری که ساختیم تغییر می دهیم

 

{ORACLE_BASE}\fra\{DB_UNIQUE_NAME}

 

همینطور تیک ENABLE ARCHIVING را هم میزنیم.

در صفحه بعد همان LISTENERی که ساختیم را انتخاب می کنیم

در صفحات DATA FAULT چیزی را انتخاب نمی کنیم

در صفحه بعد چون محیط تست است، همه چیز را پیش فرض می گذاریم

در  صفحه بعد همه تیکها را بر میداریم

در صفحه بعد همه پسوردها را یکی می دهیم و پسورد کاربر اوراکل سیستم عامل را نیز وارد می کنیم.

صفحه بعد را رها می کنیم و نصب را می زنیم.

 

پیکربندی Standby Logfile و Log Archive Config

ابتدا روی دیتابیس اصلی یک CMD باز کنید و دستورات زیر را برای اضافه کردن standby logfile اجرا کنید:

با دستور 

sqlplus / as sysdba

به دیتابیس وصل می شویم.

alter database add standby logfile size 200m;
alter database add standby logfile  size 200m;
alter database add standby logfile  size 200m;
alter database add standby logfile  size 200m;

تعداد standby logfile باید یک عدد بیشتر از تعداد redo logfile‌های اصلی باشد و اندازه آن‌ها نیز برابر انتخاب شود.

سپس برای آماده‌سازی Data Guard پارامتر log_archive_config را مقداردهی کنید:

 alter system set log_archive_config='dg_config=(orcl,orclg)';

پیکربندی Listener در سرور Standby

قبل از شروع عملیات duplicate، باید تنظیمات شبکه در هر دو سرور به‌درستی انجام شده باشد. ابتدا فایل listener.ora در سرور گارد (Standby) را ویرایش کنید. مسیر فایل:

C:\app\oracle\product\19c\db_home\network\admin\listener.ora

قبل از تغییر:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\oracle\product\19c\db_home)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\oracle\product\19c\db_home\bin\oraclr19.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = winguard)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

 

نسخه اصلاح‌شده:

LISTENER =
  (ADDRESS_LIST =
    (ADDRESS=(PROTOCOL=TCP)(HOST=winguard)(PORT=1521))
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = orclg)
      (ORACLE_HOME = C:\app\oracle\product\19c\db_home)
      (GLOBAL_DBNAME = orclg)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\oracle\product\19c\db_home)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\oracle\product\19c\db_home\bin\oraclr19.dll")
    )
  )

سپس listener را ریستارت کنید:

lsnrctl stop

lsnrctl start

lsnrctl status

خروجی status باید نشان دهد که سرویس orclg و CLRExtProc به‌درستی ثبت شده‌اند.

C:\Users\Administrator>lsnrctl status

LSNRCTL for 64-bit Windows: Version 19.0.0.0.0 - Production on 23-AUG-2025 14:26:54

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=TCP)(HOST=winguard)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for 64-bit Windows: Version 19.0.0.0.0 - Production
Start Date                23-AUG-2025 14:25:21
Uptime                    0 days 0 hr. 1 min. 37 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   C:\app\oracle\product\19c\db_home\network\admin\listener.ora
Listener Log File         C:\app\oracle\diag\tnslsnr\WIN-8N55M4BH8S2\listener\alert\log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN-8N55M4BH8S2)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
  Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "orclg" has 1 instance(s).
  Instance "orclg", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

 

پیکربندی فایل tnsnames.ora

فایل tnsnames.ora هم در همان مسیر network\admin قرار دارد. تنظیمات هر دو سرور باید یکدیگر را بشناسند.

روی سرور اصلی (Primary):

 

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = winmain)(PORT = 1521))


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = winmain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

ORCLG =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = winguard)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orclg)
    )
  )
روی سرور گارد (Standby):

LISTENER_ORCLG =
  (ADDRESS = (PROTOCOL = TCP)(HOST = winguard)(PORT = 1521))


ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = winmain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

ORCLG =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = winguard)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orclg)
    )
  )

ساخت PFILE برای Standby

روی سرور اصلی وارد SQL*Plus شوید و یک PFILE مخصوص Standby بسازید:

sqlplus / as sysdba
create pfile='C:\app\oracle\product\19c\db_home\database\initorclg.ora' from spfile;

این فایل را به سرور Standby منتقل کنید و مطابق نیاز ویرایش کنید. نسخه نمونه:

*.audit_file_dest='C:\app\oracle\admin\orclg\adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='C:\APP\ORACLE\ORADATA\ORCLG\CONTROLFILE\O1_MF_xxx.CTL','C:\APP\ORACLE\FRA\ORCLG\CONTROLFILE\O1_MF_xxx.CTL'
*.db_block_size=8192
*.db_create_file_dest='C:\app\oracle\oradata'
*.db_name='orcl'
*.db_unique_name='orclg'
*.db_recovery_file_dest='C:\app\oracle\fra'
*.db_recovery_file_dest_size=12732m
*.diagnostic_dest='C:\app\oracle'
*.enable_pluggable_database=true
*.local_listener='LISTENER_ORCLG'
*.log_archive_format='%t_%s_%r.dbf'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=1639m
*.processes=320
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=4914m
*.undo_tablespace='UNDOTBS1'
*.log_archive_config='dg_config=(orcl,orclg)'

مقدار db_unique_name باید حتماً متفاوت از Primary باشد (اینجا orclg).

انتقال Password File

از روی Primary فایل پسورد را کپی کنید:

  • مسیر روی Primary:

C:\app\oracle\product\19c\db_home\database\PWDorcl.ora

کپی به Standby و تغییر نام به:

C:\app\oracle\product\19c\db_home\database\PWDorclg.ora

ایجاد سرویس اینستنس روی Standby

در ویندوز برای بالا آوردن Instance باید سرویس بسازیم. در CMD اجرا کنید:

oradim -new -sid orclg -startmode auto

پسورد کاربر oracle را وارد کنید. حالا سرویس OracleServiceORCLG در Windows Services ایجاد می‌شود.

ساخت SPFILE از PFILE:

sqlplus sys@orclg as sysdba

create spfile='C:\app\oracle\product\19c\db_home\database\spfileorclg.ora'
  from pfile='C:\app\oracle\product\19c\db_home\database\initorclg.ora';

shutdown immediate;
startup nomount;

show parameter spfile;

باید مقدار spfile روی مسیر ساخته‌شده اشاره کند.

اجرای RMAN Duplicate

روی Primary وارد RMAN شوید:

rman target sys@orcl auxiliary sys@orclg

سپس دستور زیر را بزنید:

DUPLICATE TARGET DATABASE
  FOR STANDBY
  FROM ACTIVE DATABASE
  DORECOVER
  NOFILENAMECHECK;

اگر همه چیز رو تا حالا با من درست پیش اومده باشید، دستور duplicate با موفقیت  انجام میشه.

روی دیتابیس گارد این تنظیمات رو انجام میدیم.

تنظیم Auto Start در ویندوز

بعد از ساخت موفق، در قسمت Services ویندوز سرویس OracleServiceORCLG را از حالت Manual به Automatic تغییر دهید.

تنظیم Environment Variables (گرافیکی)

  • روی This PC راست‌کلیک کنید → Properties

  • سمت راست روی Advanced system settings بزنید

  • در تب Advanced → Environment Variables

در بخش System variables مقادیر زیر را اضافه کنید:

Variable name: ORACLE_HOME
Variable value: C:\app\oracle\product\19c\db_home

Variable name: ORACLE_SID
Variable value: orclg

همچنین متغیر Path را ویرایش کرده و این مقدار را اضافه کنید:

C:\app\oracle\product\19c\db_home\bin

 

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

sqlplus / as sysdba

اگر این کار رو انجام ندید یا بصورت محلی تنظیم نکنید،در هنگام اتصال به دیتابیس بدون پسورد ،  با خطای زیر مواجه میشید

ERROR: ORA-12560: TNS:protocol adapter error

 

فعال‌سازی Data Guard Broker

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

ALTER SYSTEM SET dg_broker_start=TRUE SCOPE=BOTH;

 

با دستور زیر به دیتابیس اصلی وصل میشیم:

dgmgrl sys@orcl

بعد از اتصال ساخت کانفیگ اصلی با اضافه کردن دیتابیس اصلی

CREATE CONFIGURATION dg_cfg AS PRIMARY DATABASE IS orcl CONNECT IDENTIFIER IS orcl;

اضافه کردن گارد

ADD DATABASE orclg AS CONNECT IDENTIFIER IS orclg MAINTAINED AS PHYSICAL;

فعال کردن کانفیگ

ENABLE CONFIGURATION;

 

بعد از مدت کوتاهی دستور show configuration رو بزنید.

خروجی:

DGMGRL> show configuration;

Configuration - dg_cfg

  Protection Mode: MaxPerformance
  Members:
  orcl  - Primary database
    orclg - Physical standby database

Fast-Start Failover:  Disabled

Configuration Status:
SUCCESS   (status updated 10 seconds ago)

تبریک! Data Guard روی ویندوز سرور 2022 با Oracle 19c به‌درستی پیکربندی و آماده استفاده است. حتی پس از ریستارت سرورها، سرویس‌ها به‌صورت خودکار شروع خواهند شد و دیتابیس گارد در مدار باقی می‌ماند.