oracle_dataGuard_11G
【李紅】--切記_從庫只安裝例項_不需要 dbca 建立資料庫 但是 netca 建立監聽看個人喜歡,我反正是建立了。
【DataGuard_主資料庫的引數配置】
1.啟用force logging功能
SQL> select force_logging from v$database; //檢視資料庫有沒有開啟此功能如果不是 YES是NO的話執行下面一條語句。如果是的話,則不需要執行
SQL> alter database force logging;
2.啟用歸檔
SQL> archive log list;
SQL> select log_mode from v$database;
歸檔有兩個引數如下:
SQL> show parameter log;
檔名格式的引數:log_archive_format
SQL> alter system set log_archive_format='%t_%s_%r.arc' scope = spfile; //修改預設檔案引數:log_archive_format
位置:log_archive_dest
SQL> alter system set log_archive_dest_1='location=/u02/oracle/archive'; //設定歸檔檔案路徑
SQL> shutdown immediate; //修改配置需要重啟資料庫例項
SQL> startup mount;//啟動到mount 狀態修改歸檔
SQL> alter database archivelog;//開啟資料庫的歸檔模式
SQL> alter database open;//啟動資料庫
3.設定主庫監聽
主庫:
做靜態監聽 1522 埠
備庫:
做靜態監聽 1522 埠
[oracle@DBprimary admin]$ pwd
/u01/app/oracle/product/11.2.0/db_1/network/admin
[oracle@DBprimary admin]$ ls
listener.orasamplesshrept.lsttnsnames.ora
[oracle@DBprimary admin]$ vim listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary.localdomain)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
LISTENER1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary.localdomain)(PORT = 1522))
)
)
)
SID_LIST_LISTENER1 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = primary)
(SID_NAME = primary)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
)
)
ADR_BASE_LISTENER = /u01/app/oracle
[oracle@primary ~]$ lsnrctl start listener1//啟動剛剛配置的靜態監聽
4.配置主庫的初始化引數:
SQL> show parameter db_unique_name;//檢視自己的服務名
SQL> alter system set db_unique_name = '自己要設定的服務名'scope=spfile;//修改之後需要重啟資料庫_根據需要,這一步可以不操作
SQL> alter system set log_archive_config='DG_CONFIG=(primary,standby)' scope=both;
SQL> show parameter log_archive_config;//檢視設定的DG_CONFIG
SQL> alter system set log_archive_dest_1='LOCATION=/u02/oracle/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary' scope=both;
SQL> alter system set log_archive_dest_2='SERVICE=tnsstandby LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby' scope=both;
SQL> quit;
[oracle@primary admin]$ pwd
/u01/app/oracle/product/11.2.0/db_1/network/admin
[oracle@primary admin]$ ls
listener.orasamplesshrept.lsttnsnames.ora
[oracle@primary admin]$ vim tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
PRIMARY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)
tnsstandby =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby.localdomain)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)
[oracle@primary admin]$ sqlplus / as sysdba
SQL> show parameter db_file;
db_file_name_convert//設定這個引數:資料檔案
SQL> show parameter log;
log_file_name_convert//設定這個引數:重做日誌檔案
SQL> select name from v$datafile;//檢視資料庫的資料存放路徑
SQL> alter system set db_file_name_convert='/u01/app/oracle/oradata/standby','/u01/app/oracle/oradata/primary' scope = spfile;//做對望在前的繫結地址
SQL> select * from v$logfile;//檢視redo日誌
SQL> alter system set log_file_name_convert='/u01/app/oracle/oradata/standby','/u01/app/oracle/oradata/primary' scope = spfile;//做對望在前的繫結地址
SQL> show parameter standby;
SQL> alter system set standby_file_management = auto;
SQL> show parameter fal;
fal_client//這個引數可以不配置_如果要配置可以看下邊的alter
fal_server//這個引數可以不配置_如果要配置可以看下邊的alter
SQL> alter system set fal_client='tnsprimary' scope = both;
SQL> alter system set fal_server='tnsstandby' scope = both;
【DataGuard_備資料庫的引數配置】
1.拷貝密碼檔案
主庫和備庫的 oracle 使用者的sys 密碼必須一致。
在主庫上操作:
[oracle@primary admin]$ cd $ORACLE_HOME/dbs
[oracle@primary dbs]$ pwd
/u01/app/oracle/product/11.2.0/db_1/dbs
[oracle@primary dbs]$ scp orapwprimary root@備庫IP:/u01/app/oracle/product/11.2.0/db_1/dbs
在備庫上操作:
[oracle@standby dbs]$ ll
total 16
-rw-rw----. 1 oracle oinstall 1544 Mar 28 15:13 hc_standby.dat
-rw-r--r--. 1 oracle oinstall 2851 May 152009 init.ora
-rw-r-----. 1 oracle oinstall24 Mar 15 14:53 lkDBSTANDB
-rw-r-----1 rootroot1536 Mar 29 13:27 orapwprimary
[oracle@standby dbs]$ mv orapwprimary orapwstandby
[oracle@standby dbs]$ ll
total 16
-rw-rw----. 1 oracle oinstall 1544 Mar 28 15:13 hc_standby.dat
-rw-r--r--. 1 oracle oinstall 2851 May 152009 init.ora
-rw-r-----. 1 oracle oinstall24 Mar 15 14:53 lkDBSTANDB
-rw-r-----1 rootroot1536 Mar 29 13:27 orapwstandby
[oracle@standby dbs]$ orapwd file=orapwstandby password =//或者這樣設定密碼也可以
[oracle@standby dbs]$ touch initstandby.ora//建立一個啟動檔案,因為備庫不需要dbca來建立資料庫,所以指定給檔案的形式
[oracle@primary dbs]$ strings spfileprimary.ora //在主庫上操作檢視這個檔案
[oracle@standby dbs]$ vim initstandby.ora //編輯檔案類容
db_name='standby'
db_unique_name='standby'
memory_target=1580204032
audit_file_dest='/u01/app/oracle/admin/standby/adump'
compatible='11.2.0.4.0'
control_files='/u01/app/oracle/oradata/standby/control01.ctl','/u01/app/oracle/fast_recovery_area/standby/control02.ctl'
fal_client='tnsstandby'
fal_server='tnsprimary'
log_archive_config='DG_CONFIG=(primary,standby)'
log_archive_dest_1='LOCATION=/u02/oracle/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby'
log_archive_dest_2='SERVICE=tnsstandby LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primary'
db_file_name_convert='/u01/app/oracle/oradata/primary','/u01/app/oracle/oradata/standby'
log_file_name_convert='/u01/app/oracle/oradata/primary','/u01/app/oracle/oradata/standby'
log_archive_format='%t_%s_%r.arc'
standby_file_management='AUTO'
[oracle@standby ~]$ mkdir -p /u01/app/oracle/admin/standby/adump//建立目錄
[oracle@standby ~]$ mkdir -p /u01/app/oracle/oradata/standby
[oracle@standby ~]$ mkdir -p /u02/oracle/archive
2.建立例項_啟動到mount狀態
[oracle@standby dbs]$ sqlplus / as sysdba
SQL> create spfile from pfile;//建立啟動檔案
File created.
SQL> startup nomount;//啟動到nomount狀態
ORACLE instance started.
Total System Global Area 1586708480 bytes
Fixed Size2253624 bytes
Variable Size922750152 bytes
Database Buffers654311424 bytes
Redo Buffers7393280 bytes
SQL> show parameter spfile;//檢視啟動檔案的路徑地址_可以不看
NAMETYPE VALUE
------------------------------------ ----------- ------------------------------
spfilestring /u01/app/oracle/product/11.2.0
.4/db_1/dbs/spfilestandby.ora
SQL> show parameter log;//可以同過log日誌進行檢視_設定的引數
3.配置靜態監聽_和主庫配置是一樣的
重要:為什麼一定要配置靜態監聽
nomount 狀態下必須使用靜態監聽才能連線到例項
[oracle@Standby admin]$ cd /u01/app/oracle/product/11.2.0.4/db_1/network/admin///進入該目錄
[oracle@Standby admin]$ vim listener.ora//編輯檔案類容
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0.4/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby.localdomain)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
LISTENER1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby.localdomain)(PORT = 1522))
)
)
)
SID_LIST_LISTENER1 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = primary)
(SID_NAME = standby)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/db_1)
)
)
ADR_BASE_LISTENER = /u01/app/oracle
[oracle@Standby admin]$ lsnrctl start//啟動監聽
[oracle@Standby admin]$ lsnrctl start listener1//啟動靜態監聽
[oracle@Standby admin]$ sqlplus / as sysdba//進入資料庫
SQL> select status from v$instance;//檢視資料庫處於什麼樣的狀態
STATUS
------------
STARTED
4.tns配置
先在主庫上操作_如下:
[oracle@Primary admin]$ cd /u01/app/oracle/product/11.2.0.4/db_1/network/admin
[oracle@Primary admin]$ vim tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0.4/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
PRIMARY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)
tnsstandby =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby.localdomain)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)
tnsprimary =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary.localdomain)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)
後再從庫上操作_如下:
[oracle@Standby admin]$ cd /u01/app/oracle/product/11.2.0.4/db_1/network/admin
[oracle@Standby admin]$ vim tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0.4/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
STANDBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)
tnsstandby =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby.localdomain)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)
tnsprimary =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = primary.localdomain)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primary)
)
)
5.測試tns
主庫_從庫都做以下操作,通過OK才能行
tnsping tnsprimary
tnsping tnsstandby
6.測試連線資料庫
主庫_從庫都做以下操作,通過OK才能行在這裡我就不寫備庫的操作了!
[oracle@Primary admin]$ sqlplus sys/oracle@tnsprimary as sysdba//主庫上操作
SQL*Plus: Release 11.2.0.4.0 Production on Sat Mar 30 12:05:05 2019
Copyright (c) 1982, 2013, Oracle.All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
[oracle@Primary admin]$ sqlplus sys/oracle@tnsstandby as sysdba//主庫上操作
SQL*Plus: Release 11.2.0.4.0 Production on Sat Mar 30 12:06:44 2019
Copyright (c) 1982, 2013, Oracle.All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
【DataGuard主備庫引數檢查】
[oracle@Primary admin]$ sqlplus / as sysdba//主庫上操作
SQL> show parameter db_unique_name;//檢查db_unique_name是否一致
SQL> show parameter compa;//檢視版本資訊是否一致
SQL> show parameter log_archive_config;//檢視 DG_config
SQL> show parameter log_archive_dest_1;//檢視歸檔路徑_指定詳細資訊
SQL> show parameter log_archive_dest_2;//檢視歸檔路徑_指定詳細資訊
SQL> show parameter db_file;//檢視資料檔案存放路徑
SQL> show parameter log_file_name_convert;//檢視資料LOG存放路徑
SQL> show parameter log_archive_format;
[oracle@Standby admin]$ sqlplus / as sysdba//從庫上操作
SQL> show parameter db_unique_name;//檢查db_unique_name是否一致
SQL> show parameter compa;//檢視版本資訊是否一致
SQL> show parameter log_archive_config;//檢視 DG_config
SQL> show parameter log_archive_dest_1;//檢視歸檔路徑_指定詳細資訊
SQL> show parameter log_archive_dest_2;//檢視歸檔路徑_指定詳細資訊
SQL> show parameter db_file;//檢視資料檔案存放路徑
SQL> show parameter log_file_name_convert;//檢視資料LOG存放路徑
SQL> show parameter log_archive_format;
【從庫操作】
[oracle@Standby ~]$ cd $ORACLE_HOME/dbs//發現從庫的db_unique_name是主庫的db_unique_name需要更改
[oracle@Standby dbs]$ vim initstandby.ora//編輯檔案類容往這個檔案裡面插入一條新資料——如下:
db_unique_name='standby'//原有的檔案內容不變,只是插入一條新的內容進去
[oracle@Standby dbs]$ sqlplus / as sysdba//進入資料庫
SQL> shtudown immediate;//關閉資料庫
SQL> create spfile from pfile;//重新建立啟動檔案_因為你修改配置了,需要重新建立一個啟動檔案
SQL> startup nomount;//啟動到nomount狀態下
【使用 Duplicate 建立物理 standby】備註:主庫上操作
[oracle@Primary primary]$ rman target sys/oracle@tnsprimary auxiliary sys/oracle@tnsstandby//這是第一種連線方式_下邊的是第二種方式
[oracle@Primary admin]$ rmantarget sys/oracle@tnsprimary//建立
RMAN> connect auxiliary sys/oracle@tnsstandby//連線輔助例項備庫就是輔助例項
RMAN> duplicate target database for standby from active database nofilenamecheck;//主備連線例項