Data Guard Physical Standby Setup in Oracle11.2 & 後加 Data Guard Broker 之01(先無Broker)
阿新 • • 發佈:2020-07-24
1.假設條件
您有兩臺伺服器,其中裝有作業系統,並在其上安裝了Oracle Linux 7 和Oracle Database 11.2.0.4。
主伺服器xag1124a 上安裝了例項。
備伺服器xag1124b 上僅軟體安裝及監聽。
2.檢查主資料庫是否處於存檔日誌模式
[oracle@xag1124a ~]$ sqlplus / as sysdba SQL> select log_mode,open_mode,flashback_on from v$database; LOG_MODE OPEN_MODE FLASHBACK_ON ------------ -------------------- ------------------ ARCHIVELOG READ WRITE NO SQL> show parameter recovery; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /u02/fra db_recovery_file_dest_size big integer 10G recovery_parallelism integer 0
3.主庫如果是noarchivelog模式,則切換到archivelog模式(可選)
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
4.主庫啟用強制日誌記錄
ALTER DATABASE FORCE LOGGING;
ALTER SYSTEM SWITCH LOGFILE;
5.主檢查DB_NAME和DB_UNIQUE_NAME引數的設定
SQL> show parameter db_name NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_name string DB11G SQL> show parameter db_unique_name NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_unique_name string DB11G SQL> alter system set db_unique_name='DB11G_PRI' scope=spfile; SQL> shutdown immediate; SQL> startup; SQL> show parameter db_unique_name NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_unique_name string DB11G_PRI
6.初始化引數
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(DB11G_PRI,DB11G_STBY)'; --Maximum Performance ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY'; ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE; ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SCOPE=SPFILE; ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=30; ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE; ALTER SYSTEM SET FAL_SERVER=DB11G_STBY; -- ALTER SYSTEM SET DB_FILE_NAME_CONVERT='DB11G_STBY','DB11G_PRI' SCOPE=SPFILE; --ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='DB11G_STBY','DB11G_PRI' SCOPE=SPFILE; ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
7.Service Setup(主備)
cat $ORACLE_HOME/network/admin/tnsnames.ora
------------------------------------------------------------------------------
DB11G_PRI =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xag1124a)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = DB11G)
)
)
DB11G_STBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xag1124b)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = DB11G)
)
)
------------------------------------------------------------------------------
7.主庫備份(可選)
$ rman target=/
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
8.建立備用控制檔案和PFILE(在主庫上操作)
ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/db11g_stby.ctl';
CREATE PFILE='/tmp/initDB11G_stby.ora' FROM SPFILE;
#修改PFILE,使條目與備用資料庫相關。我正在複製原始伺服器,因此在我的情況下,我只需要修改以下引數。
*.db_unique_name='DB11G_STBY'
*.fal_server='DB11G_PRI'
*.log_archive_dest_2='SERVICE=db11g_pri ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_PRI'
9.手動方式建立備庫(和如下方法二選一)--備機上操作
9.1 在備用伺服器上建立必要的目錄
$ mkdir -p /u01/app/oracle/oradata/DB11G
$ mkdir -p /u01/app/oracle/fast_recovery_area/DB11G
$ mkdir -p /u01/app/oracle/admin/DB11G/adump
9.2 將檔案從主伺服器複製到備用伺服器
$ # Standby controlfile to all locations.
$ scp oracle@xag1124a:/tmp/db11g_stby.ctl /u01/app/oracle/oradata/DB11G/control01.ctl
$ cp /u01/app/oracle/oradata/DB11G/control01.ctl /u01/app/oracle/oradata/DB11G/control02.ctl
$ # Archivelogs and backups
$ scp -r oracle@ol5-112-dga1:/u02/fra/DB11G/archivelog /u02/fra/DB11G
$ scp -r oracle@ol5-112-dga1:/u02/fra/DB11G/backupset /u02/fra/DB11G
$ # Parameter file.
$ scp oracle@xag1124a:/tmp/initDB11G_stby.ora /tmp/initDB11G_stby.ora
$ # Remote login password file.
$ scp oracle@xag1124a:$ORACLE_HOME/dbs/orapwDB11G $ORACLE_HOME/dbs
9.3 啟動監聽器
lsnrctl start
9.4 恢復備份
$ export ORACLE_SID=DB11G
$ sqlplus / as sysdba
SQL> CREATE SPFILE FROM PFILE='/tmp/initDB11G_stby.ora';
9.5 恢復備份檔案
$ export ORACLE_SID=DB11G
$ rman target=/
RMAN> STARTUP MOUNT;
RMAN> RESTORE DATABASE;
9.6 建立重做日誌
#為備用資料庫建立聯機重做日誌
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL;
ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/online_redo01.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/online_redo02.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/online_redo03.log') SIZE 50M;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
#在備用資料庫和主資料庫上都建立備用重做日誌
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 10 ('/u01/app/oracle/oradata/DB11G/standby_redo01.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 11 ('/u01/app/oracle/oradata/DB11G/standby_redo02.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 12 ('/u01/app/oracle/oradata/DB11G/standby_redo03.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 13 ('/u01/app/oracle/oradata/DB11G/standby_redo04.log') SIZE 50M;
10.自動方式建立備庫(和如上方法二選一)
10.1 在備用伺服器上建立必要的目錄
$ mkdir -p /u01/app/oracle/oradata/DB11G
$ mkdir -p /u01/app/oracle/fast_recovery_area/DB11G
$ mkdir -p /u01/app/oracle/admin/DB11G/adump
10.2 將檔案從主伺服器複製到備用伺服器
$ # Standby controlfile to all locations.
$ scp oracle@xag1124a:/tmp/db11g_stby.ctl /u01/app/oracle/oradata/DB11G/control01.ctl
$ cp /u01/app/oracle/oradata/DB11G/control01.ctl /u01/app/oracle/oradata/DB11G/control02.ctl
$ # Parameter file.
$ scp oracle@xag1124a:/tmp/initDB11G_stby.ora /tmp/initDB11G_stby.ora
$ # Remote login password file.
$ scp oracle@xag1124a:$ORACLE_HOME/dbs/orapwDB11G $ORACLE_HOME/dbs
10.3 使用 active duplicate 時 備用伺服器需要在“ listener.ora”檔案中進行靜態偵聽器配置
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = DB11G)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = DB11G)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xag1124b)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
10.4 在備用伺服器上啟動偵聽器
$ lsnrctl start
10.5 在主伺服器上建立備用重做日誌
#該DUPLICATE命令在備用資料庫上自動建立備用資料庫重做日誌。為了確保將主資料庫配置為進行切換,我們必須在主伺服器上建立備用重做日誌
ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/DB11G/standby_redo01.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/DB11G/standby_redo02.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/DB11G/standby_redo03.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/DB11G/standby_redo04.log') SIZE 50M;
10.6 在備用伺服器上啟動輔助例項
$ export ORACLE_SID=DB11G
$ sqlplus / as sysdba
SQL> STARTUP NOMOUNT PFILE='/tmp/initDB11G_stby.ora';