【DG實驗】搭建physical standby——copy files

來源:互聯網
上載者:User

搭建 physical standby——copy資料檔案

一、DG環境說明

資料庫版本:11.2.0.1.0

作業系統:redhat linux 5

主庫:192.168.88.3 sharon

備庫:192.168.88.2 sharon

使用靜態IP,要確保IP是固定的,不要用DHCP來分配!

 

二、具體步驟

1. 啟動force logging

SQL> ALTER DATABASE FORCE LOGGING;

檢查:

SQL> select force_logging from v$database;

FORCE_LOG

---------

YES

 

2. 啟動歸檔模式

SQL> archive log list;

SQL> shutdown immediate

SQL> startup mount

SQL> alter database archivelog;

SQL> alter system setlog_archive_dest_1='location=/u01/arch/' scope=spfile;

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            /u01/arch/

Oldest online log sequence     91

Next log sequence to archive   92

Current log sequence           92

 

3. 檢查口令檔案

[oracle@sharon ~]$ cd $ORACLE_HOME/dbs

[oracle@sharon dbs]$ ll

total 44

-rw-rw---- 1 oracle oinstall  1544 Apr 21 12:35 hc_sharon.dat

-rw-r----- 1 oracle oinstall12920 May  3  2001 initdw.ora

-rw-r----- 1 oracle oinstall  8385 Sep 11 1998 init.ora

-rw-rw---- 1 oracle oinstall    24 Apr 21 12:43 lkSHARON

-rw-r----- 1 oracleoinstall  1536 Apr 21 12:46 orapwsharon

-rw-r----- 1 oracle oinstall  3584 Apr 22 09:01 spfilesharon.ora

如果不存在,手工建立,使用orapwd命令。 這個命令怎麼用,就不多做說明,不清楚的google一下:

[oracle@dg1 /]$ orapwd file=/u01/app/oracle/product/11.2.0/db_1/dbs/ orapwdave password=admin entries=30

 

4. 在主備庫分別建立listener,並啟動

用netca命令來調用圖形化介面建立!

 

5.在主備庫添加Oracle Net Service(tnsnames.ora),配置靜態監聽

使用netmgr命令來調用圖形化介面建立。

配置靜態監聽:

注意大小寫。有一次做的時候,執行個體名是大寫的,配置的動態監聽中sid 寫成了小寫,導致rman duplicate的時候連不上!

【說明】

*4、5兩步可以一起用netmgr來做,一次性搞定,比較方便!

*可以直接修改listener.ora,tnsnames.ora來配置監聽和oraclenet service,但是不建議這麼做,很容易出錯,多一個空格少一個空格就可能導致服務無法用,還是建議用工具來配置!

*配置靜態監聽預設連接埠號碼為1521,若衝突配置其他的連接埠號碼需要手工註冊以下。

[oracle@sharon admin]$ netmgr

[oracle@sharon admin]$ cat tnsnames.ora

# tnsnames.ora NetworkConfiguration File:/u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

# Generatedby Oracle configuration tools.

--注意我這裡的提示,它是使用工具產生的。

 

SHARON_PD =

 (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      (SERVICE_NAME = sharon)

    )

 )

 

SHARON_ST =

 (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

   (CONNECT_DATA =

      (SERVICE_NAME = sharon)

    )

 )

 

[oracle@sharon admin]$ cat listener.ora

# listener.ora NetworkConfiguration File:/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

# Generatedby Oracle configuration tools.

 

SID_LIST_LISTENER =

 (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = sharon)

      (ORACLE_HOME =/u01/app/oracle/product/11.2.0/dbs)

      (SID_NAME = sharon)

    )

 )

 

LISTENER =

 (DESCRIPTION_LIST =

    (DESCRIPTION =

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

    )

 )

 

配置好重啟下監聽:

[oracle@sharon admin]$ lsnrctl stop

[oracle@sharon admin]$ lsnrctl start

[oracle@sharon admin]$ lsnrctl status

LSNRCTL for Linux: Version11.2.0.1.0 - Production on 24-APR-2013 10:40:28

 

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

 

Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.88.2)(PORT=1521)))

STATUS of the LISTENER

------------------------

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version11.2.0.1.0 - Production

Start Date                24-APR-2013 10:40:03

Uptime                    0 days 0 hr. 0 min. 26 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File  /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

Listener Log File        /u01/app/oracle/diag/tnslsnr/sharon/listener/alert/log.xml

Listening Endpoints Summary...

 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.88.2)(PORT=1521)))

Services Summary...

Service "sharon" has 1instance(s).

 Instance "sharon", status UNKNOWN,has 1 handler(s) for this service...

The command completedsuccessfully

*狀態為UNKNOWN就代表是靜態監聽

 

tnsping下各服務,看是否通

[oracle@sharon admin]$ tnsping sharon_pd

TNS Ping Utility for Linux: Version 11.2.0.1.0- Production on 26-APR-2013 09:52:51

 

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

 

Used parameter files:

 

 

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION =(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.88.3)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = sharon_pd)))

OK (0 msec)

[oracle@sharon admin]$ tnsping sharon_st

TNS Ping Utility for Linux: Version 11.2.0.1.0- Production on 26-APR-2013 09:52:51

 

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

 

Used parameter files:

 

 

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION =(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.88.2)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = sharon_st)))

OK (0 msec)

 

6.在主庫建立standbycontrol file

這裡一定要把資料庫啟動到mount狀態來建立:

SQL> alter database create standby controlfile as '/u01/control01.ctl';

*資料庫執行個體是會不停地更新控制檔案的,因為如果我們不關閉執行個體,直接把資料檔案copy到備庫,這個操作上是沒有問題的,但是當我們開啟資料庫的時候,一定會提示我們如下的錯誤:

ORA-10458: standbydatabase requires recovery

ORA-01194: file 1 needsmore recovery to be consistent

ORA-01110: data file 1:'/u01/app/oracle/oradata/dave/system01.dbf'

我們說的copy 方法,就是直接把資料檔案,online redo 檔案直接copy到備庫。 

主庫一直保持mount
狀態!

 

7.在主庫建立pfile檔案並修改pfile內容

SQL> create pfile from spfile;

在pfile添加如下內容:
#add for primary dg
*.db_unique_name='sharon_pd' 
*.log_archive_config='dg_config=(sharon_pd,sharon_st)'
*.log_archive_dest_1='location=/u01/archlog valid_for=(all_logfiles,all_roles) db_unique_name=sharon_pd'
*.log_archive_dest_2='service=sharon_st reopen=120 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=sharon_st'
*.log_archive_dest_state_1=enable 
*.log_archive_dest_state_2=enable 
*.standby_file_management='auto'
*.fal_server='sharon_st'

*.fal_client=’sharon_pd’   –10g 要寫!11g不需要寫!

注意: 
(1)在oracle 11g中,廢棄了fal_client 參數,也就是說不用配置。
(2)log_archive_dest_n 這個參數中的Oracle Net Service名首位是一樣的,前面寫哪個,最後的db_unique_name就寫哪個,不要搞錯了。
(3)如果主備庫的路徑不同,修改在主庫的參數檔案裡添加如下2個參數:
*.log_file_name_convert='/u02/oradata/orcl/','/u03/oradata/orcl/'
*.db_file_name_convert='/u02/oradata/orcl/','/u03/oradata/orcl/'

--用修改過的pfile重建spfile:

Shutdown 再建立

用pfile啟動到mount

SQL>startup mount pfile=’$ORACLE_HOME/dbs/initsharon.ora’;
SQL> create spfile from pfile;

 

8.在備庫建立相關的目錄

因為我們的備庫沒有建立執行個體,所以是沒有相關的目錄的,我們需要參考主庫的位置來建立。
以免遺漏可以看主庫的pfile來建立!

[oracle@sharon oracle]$ pwd

/u01/app/oracle

[oracle@sharon oracle]$ ls

admin  checkpoints diag  fast_recovery_area  oradata product

--FRA:

[oracle@sharon sharon]$ pwd

/u01/app/oracle/fast_recovery_area/sharon

--DATAFILE:

[oracle@sharon sharon]$ pwd

/u01/app/oracle/oradata/sharon

[oracle@sharon sharon]$ pwd

/u01/app/oracle/admin/Sharon

[oracle@sharon sharon]$ mkdir –p /u01/app/oracle/oradata/sharon

[oracle@sharon sharon]$ mkdir –p /u01/app/oracle/fast_recovery_area/sharon

[oracle@sharon sharon]$ mkdir –p /u01/app/oracle/admin/sharon/adump

[oracle@sharon sharon]$ mkdir –p /u01/app/oracle/admin/sharon/dpdump

 

9. 將主庫的參數檔案copy到備庫並修改

[oracle@sharon dbs]$ scp initsharon.ora 192.168.88.2:/u01/app/oracle/product/11.2.0/db_1/dbs

參數檔案,我們在主庫的pfile中已經修改,我們這裡只需要該2個參數即可:

#add for standby dg
*.db_unique_name='sharon_st' 
*.log_archive_config='dg_config=(sharon_pd,sharon_st)'
*.log_archive_dest_1='location=/u01/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=sharon_st'
*.log_archive_dest_2='service=sharon_pd reopen=120 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=sharon_pd'
*.log_archive_dest_state_1=enable 
*.log_archive_dest_state_2=enable 
*.standby_file_management='auto'
*.fal_server='sharon_pd'
*.fal_client='sharon_st'  --10g要寫!11g不用寫!

 

10.將主庫的密碼檔案,控制檔案,資料檔案,記錄檔copy到備庫

--口令檔案:
[oracle@sharon dbs]$ scp orapwsharon 192.168.88.2:/u01/app/oracle/product/11.2.0/db_1/dbs

--控制檔案:

--從備庫取:注意修改了控制檔案的名稱:

[oracle@sharon sharon]$ scp 192.168.88.3:/u01/control01.ctl /u01/app/oracle/oradata/sharon/control01.ctl
[oracle@sharon sharon]$ scp 192.168.88.3:/u01/control01.ctl /u01/app/oracle/fast_recovery_area/sharon/control02.ctl

注意:11g的控制檔案在不同的目錄下面,control02.ctl在FRA中!

--資料檔案
[oracle@sharon sharon]$ scp 192.168.88.3:/u01/app/oracle/oradata/sharon/*.dbf /u01/app/oracle/oradata/sharon/

 

11.啟動備庫並應用applyservice

[oracle@sharon sharon]$sqlplus / as sysdba

--11g直接startup

SQL> startup

SQL> select open_modefrom v$database;

OPEN_MODE

--------------------

READONLY

 

--10g:
SQL> startup nomount;
SQL>alter database mount standby database ; 
SQL>alter database recover managed standby database disconnect from session; 

 

12. 將主庫啟動到open 狀態並檢查DG 配置是否有錯誤

我們在建立standby 控制檔案的是,把主庫啟動到mount狀態的。
SQL> alter database open;
Database altered.
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ WRITE
--查詢DG 狀態:
SQL> col error for a10
SQL> col dest_name for a20
SQL> select DEST_NAME,STATUS,PROCESS,ERROR,TRANSMIT_MODE from v$archive_dest WHERE TARGET='STANDBY';

DEST_NAME            STATUS    PROCESS    ERROR      TRANSMIT_MOD
-------------------- --------- ---------- ---------- ------------
LOG_ARCHIVE_DEST_2   VALID     LGWR                  ASYNCHRONOUS
如果DG 配置的有問題,這裡會顯示INVALID,並且error 會提示具體的錯誤原因,也可以查看alert log 來確定原因。

 

13. 在主備庫添加online redo log 和standby redo log

--主庫添加standby redo log:大小和online redo
相同,比online redo group
多一組。

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4('/u01/app/oracle/sharon/redo04.log') size 50M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5('/u01/app/oracle/sharon/redo05.log') size 50M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6('/u01/app/oracle/sharon/redo06.log') size 50M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7('/u01/app/oracle/sharon/redo07.log') size 50M;

--驗證:

SQL> col member for a50

SQL> select group#,type, member from v$logfile;

--備庫執行

SQL> col member for a50

SQL> select group#,type, member from v$logfile;

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4('/u01/app/oracle/oradata/sharon/redo04.log') size 50M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5('/u01/app/oracle/oradata/sharon/redo05.log') size 50M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6('/u01/app/oracle/oradata/sharon/redo06.log') size 50M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7('/u01/app/oracle/oradata/sharon/redo07.log') size 50M;

--驗證:

SQL> col member for a50

SQL> select group#,type, member from v$logfile;

 

--Oracle 11g的物理standby 備庫是啟動到read-only狀態的

SQL> alter database recover managed standbydatabase disconnect from session;

Database altered.

11g

SQL> select open_modefrom v$database;

OPEN_MODE

--------------------

READ ONLY WITH APPLY

 

測試:

--主庫:

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

--------------

            23

SQL> alter system switch logfile;
System altered.
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
            24

--查詢DG 狀態:

SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
            24

SQL> col error for a10

SQL> col dest_name for a20

SQL>select DEST_NAME,STATUS,PROCESS,ERROR,TRANSMIT_MODEfrom v$archive_dest WHERE TARGET='STANDBY';

DEST_NAME            STATUS    PROCESS   ERROR      TRANSMIT_MOD TARGET

----------------------------- ---------- ---------- ------------ -------

LOG_ARCHIVE_DEST_2   VALID     LGWR                  ASYNCHRONOUS
STANDBY

 

注意:

當監聽不在1521連接埠時,就需要設定local_listener參數。

將監聽的資訊添加到tnsnames.ora  檔案中。pmon在動態註冊監聽時要從tnsnames.ora中讀取資訊。

LISTENER =

(DESCRIPTION =

(ADDRESS = (PROTOCOL =TCP)(HOST = IP)(PORT = 1522))

)

然後以sys用戶運行:

SQL> alter system setlocal_listener=listener;

SQL> alter system register;

或者:

SQL> alter system setLOCAL_LISTENER='(ADDRESS = (PROTOCOL = TCP)(HOST = IP)(PORT = 1522))';

SQL> alter system register;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.