oracle 11g Data Guard物理備份庫

兩臺oracle未安裝ARC,俺是小白,佔時不會玩arc。ADB高手在於分享,俺小白將
下面是Data Guard 主備環境配置過程分享給大家。備份是物理Data Guard
一,
系統:centos 6.4   
IP 主:192.168.153.131  oracle 企業 Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 
   備:192.168.153.134  oracle 企業 Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 
(1)在主庫上打開archive log
[oracle@node1 ~]$ sqlplus  /  as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Sun Apr 23 10:04:49 2017

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /oracle/app/product/11.2/db/dbs/arch
Oldest online log sequence     3
Next log sequence to archive   5
Current log sequence   
(2) 
在主庫上設置閃回大小       
SQL>  alter system set db_recovery_file_dest_size=50g scope=spfile;

System altered.

(3)在主庫上設置閃迴路徑及打開閃回
SQL> alter system set db_recovery_file_dest='/oracle/app/product/11.2/db/dbs/arch'  scope=spfile;

System altered.

SQL> alter  database flashback on;
alter  database flashback on
*
ERROR at line 1:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-38709: Recovery Area is not enabled.


SQL> 
SQL> exit 
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> shutdown immediate;
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 1048059904 bytes
Fixed Size                  2219992 bytes
Variable Size             725614632 bytes
Database Buffers          314572800 bytes
Redo Buffers                5652480 bytes
Database mounted.
SQL> alter  database flashback on;

Database altered.

SQL> select  flashback_on from v$database;

FLASHBACK_ON
------------------------------------
YES

SQL> alter database open;

Database altered.

(4)在主庫上查看閃回
SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;

FILE_TYPE                                PERCENT_SPACE_USED
---------------------------------------- ------------------
PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------------------- ---------------
CONTROL FILE                                              0
                        0               0

REDO LOG                                                  0
                        0               0

ARCHIVED LOG                                              0
                        0               0


FILE_TYPE                                PERCENT_SPACE_USED
---------------------------------------- ------------------
PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------------------- ---------------
BACKUP PIECE                                              0
                        0               0

IMAGE COPY                                                0
                        0               0

FLASHBACK LOG                                           .02
                        0               1


FILE_TYPE                                PERCENT_SPACE_USED
---------------------------------------- ------------------
PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------------------- ---------------
FOREIGN ARCHIVED LOG                                      0
                        0               0


7 rows selected.

SQL> show parameter recover;

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
db_recovery_file_dest                string
/oracle/app/product/11.2/db/db
s/arch
db_recovery_file_dest_size           big integer
50G
recovery_parallelism                 integer
0
(4)在主庫上創建表空間做測試
SQL> create   tablespace shanghai datafile '/oracle/app/oradata/test1/shanghai01.dbf' size  100m  autoextend on;

Tablespace created.

SQL> create user  shanghai  identified  by  shanghai  default   tablespace shanghai;

User created.

SQL>  grant  connect,resource  to shanghai;

Grant succeeded.

SQL> grant dba to shanghai;

Grant succeeded.

(5)在主庫上打開強制寫日誌
SQL> select  force_logging from v$database;

FORCE_
------
NO

SQL> alter  database force  logging;

Database altered.

(6)在主庫上創建standby 日誌,通過redo與備庫進行同步

SQL> select  group#,member from V$logfile;

    GROUP#
----------
MEMBER
--------------------------------------------------------------------------------
         3
/oracle/app/oradata/test1/redo03.log

         2
/oracle/app/oradata/test1/redo02.log

         1
/oracle/app/oradata/test1/redo01.log


SQL> alter database add  standby  logfile  group 11 '/oracle/app/oradata/test1/standby_redo11.log' size 50m;

Database altered.

SQL> alter database add  standby  logfile  group 12 '/oracle/app/oradata/test1/standby_redo12.log' size  50m;

Database altered.

SQL>  alter database add  standby  logfile  group 13  '/oracle/app/oradata/test1/standby_redo13.log'  size 50m;

Database altered.

SQL> alter database add  standby  logfile  group 14  '/oracle/app/oradata/test1/standby_redo14.log'  size  50m;

Database altered.

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

    GROUP#
----------
MEMBER
--------------------------------------------------------------------------------
         3
/oracle/app/oradata/test1/redo03.log

         2
/oracle/app/oradata/test1/redo02.log

         1
/oracle/app/oradata/test1/redo01.log


    GROUP#
----------
MEMBER
--------------------------------------------------------------------------------
        11
/oracle/app/oradata/test1/standby_redo11.log

        12
/oracle/app/oradata/test1/standby_redo12.log

        13
/oracle/app/oradata/test1/standby_redo13.log


    GROUP#
----------
MEMBER
--------------------------------------------------------------------------------
        14
/oracle/app/oradata/test1/standby_redo14.log


7 rows selected.

(7)
在主庫創建pfile文件,後面住庫啓動的時候要用到pfile文件,將主庫file文件複製爲備庫文件,我這裏是沒有修改前複製,也可以是修改後複製,將其scp到備份相應目錄
        cp  -rq  inittest1.ora  inittest2.ora
     
SQL> create pfile  from spfile;

File created.

SQL> 
SQL> exit 
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@node1 ~]$ cd  /oracle/app/product/11.2/db/dbs/
[oracle@node1 dbs]$ ll
total 40
drwxr-xr-x 3 oracle oinstall 4096 Apr 23  2017 arch
-rw-rw---- 1 oracle oinstall 1544 Apr 23  2017 hc_DBUA0.dat
-rw-rw---- 1 oracle oinstall 1544 Apr 23  2017 hc_test1.dat
-rw-r--r-- 1 oracle oinstall 2851 May 15  2009 init.ora
-rw-r--r-- 1 oracle oinstall 1524 Apr 23 02:37 inittest1.ora
-rw-r--r-- 1 oracle oinstall  906 Apr 23 02:24 inittest1.ora.bak
-rw-r--r-- 1 oracle oinstall 1524 Apr 23 02:37 inittest2.ora
-rw-r----- 1 oracle oinstall   24 Apr 23  2017 lkTEST1
-rw-r----- 1 oracle oinstall 1536 Apr 23  2017 orapwtest1
-rw-r----- 1 oracle oinstall 2560 Apr 23  2017 spfiletest1.ora

下面是主庫pfile修改後的內容inittest1.ora


[oracle@node1 dbs]$ cat  inittest1.ora
test1.__db_cache_size=310378496
test1.__java_pool_size=4194304
test1.__large_pool_size=4194304
test1.__oracle_base='/oracle/app'#ORACLE_BASE set from environment
test1.__pga_aggregate_target=423624704
test1.__sga_target=629145600
test1.__shared_io_pool_size=0
test1.__shared_pool_size=297795584
test1.__streams_pool_size=0
*.audit_file_dest='/oracle/app/admin/test1/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/oracle/app/oradata/test1/control01.ctl','/oracle/app/oradata/test1/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='test1'
*.db_recovery_file_dest_size=53687091200
*.db_recovery_file_dest='/oracle/app/product/11.2/db/dbs/arch'
*.diagnostic_dest='/oracle/app'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=test1XDB)'
*.memory_target=1050673152
*.open_cursors=300
*.processes=1500
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=1655
*.undo_tablespace='UNDOTBS1'
下面是修改的的內容
db_unique_name=test1
log_archive_config='dg_config=(test1,test2)'
log_archive_dest_1='location=/oracle/app/product/11.2/db/dbs/arch  valid_for=(all_logfiles,all_roles) db_unique_name=test1'
log_archive_dest_2='service=test2 lgwr async  valid_for=(online_logfiles,primary_roles) db_unique_name=test2'
log_archive_dest_state_1=enable
log_archive_dest_state_2=enable
db_file_name_convert='/oracle/app/oradata/test2','/oracle/app/oradata/test1'
log_file_name_convert='/oracle/app/oradata/test2','/oracle/app/oradata/test1'
fal_server=test2
fal_client=test1
standby_file_management=auto
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

下面是備份庫pfile文件內容inittest2.ora
cat 
test1.__db_cache_size=310378496
test1.__java_pool_size=4194304
test1.__large_pool_size=4194304
test1.__oracle_base='/oracle/app'#ORACLE_BASE set from environment
test1.__pga_aggregate_target=423624704
test1.__sga_target=629145600
test1.__shared_io_pool_size=0
test1.__shared_pool_size=297795584
test1.__streams_pool_size=0
*.audit_file_dest='/oracle/app/admin/test2/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/oracle/app/oradata/test2/control01.ctl','/oracle/app/oradata/test2/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='test1'
*.db_recovery_file_dest_size=53687091200
*.db_recovery_file_dest='/oracle/app/product/11.2/db/dbs/arch'
*.diagnostic_dest='/oracle/app'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=test1XDB)'
*.memory_target=1050673152
*.open_cursors=300
*.processes=1500
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=1655
*.undo_tablespace='UNDOTBS1'
db_unique_name=test2
log_archive_config='dg_config=(test1,test2)'
log_archive_dest_1='location=/oracle/app/product/11.2/db/dbs/arch  valid_for=(all_logfiles,all_roles) db_unique_name=test2'
log_archive_dest_2='service=test1 lgwr async  valid_for=(online_logfiles,primary_roles) db_unique_name=test1'
log_archive_dest_state_1=enable
log_archive_dest_state_2=enable
db_file_name_convert='/oracle/app/oradata/test1','/oracle/app/oradata/test2'
log_file_name_convert='/oracle/app/oradata/test1','/oracle/app/oradata/test2'
fal_server=test1
fal_client=test2
standby_file_management=auto
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

(8)在主庫上創建控制文件

SQL> alter database  create   standby controlfile  as '/oracle/app/oradata/test1/control03.ctl';

Database altered.
(9)配置監聽,將主備庫監聽都起來,lsnrctl start   
 測試主備是否通  tnsping  test2
                  tnsping  test1
主庫
[oracle@node1 admin]$ cat  listener.ora
# listener.ora Network Configuration File: /oracle/app/product/11.2/db/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = test1)
      (ORACLE_HOME = /oracle/app/product/11.2/db)
      (SID_NAME = test1)
    )
  )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = node1)(PORT = 1521))
  )

ADR_BASE_LISTENER = /oracle/app
[oracle@node1 admin]$ 
[oracle@node1 admin]$ cat  tnsnames.ora
# tnsnames.ora Network Configuration File: /oracle/app/product/11.2/db/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

TEST2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.153.134)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = test2)
    )
  )

TEST1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.153.131)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = test1)
    )
  )

[oracle@node1 admin]$ 

備份庫
[root@node2 admin]# cat  listener.ora
# listener.ora Network Configuration File: /oracle/app/product/11.2/db/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = test2)
      (ORACLE_HOME = /oracle/app/product/11.2/db)
      (SID_NAME = test2)
    )
  )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = node2)(PORT = 1521))
  )

ADR_BASE_LISTENER = /oracle/app

[root@node2 admin]# 
[root@node2 admin]# cat  tnsnames.ora
# tnsnames.ora Network Configuration File: /oracle/app/product/11.2/db/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

TEST2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.153.134)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = test2)
    )
  )

TEST1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.153.131)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = test1)
    )
  )

[root@node2 admin]# 



SQL> 
SQL> exit 
Disconnected
[oracle@node1 dbs]$ 
[oracle@node1 dbs]$ lsnrctl  start

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 23-APR-2017 03:25:35

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

Starting /oracle/app/product/11.2/db/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /oracle/app/product/11.2/db/network/admin/listener.ora
Log messages written to /oracle/app/diag/tnslsnr/node1/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node1)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                23-APR-2017 03:25:35
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/app/product/11.2/db/network/admin/listener.ora
Listener Log File         /oracle/app/diag/tnslsnr/node1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node1)(PORT=1521)))
Services Summary...
Service "test1" has 1 instance(s).
  Instance "test1", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[oracle@node1 dbs]$ 
[oracle@node1 dbs]$ 


(10)用之前創建的pfile啓動主庫
[oracle@node1 dbs]$ sqlplus /  as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Sun Apr 23 03:25:58 2017

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

Connected to an idle instance.

SQL> startup pfile='/oracle/app/product/11.2/db/dbs/inittest1.ora';
ORACLE instance started.

Total System Global Area 1048059904 bytes
Fixed Size                  2219992 bytes
Variable Size             729808936 bytes
Database Buffers          310378496 bytes
Redo Buffers                5652480 bytes
ORA-00214: control file '/oracle/app/oradata/test1/control01.ctl' version 772  這裏是1和3控制文件不一樣報錯,也是pfile文件裏面加了一個103的控制文件路徑,將路徑去掉
inconsistent with file '/oracle/app/oradata/test1/control03.ctl' version 768  


SQL> shutdown immediate;
ORA-01507: database not mounted


ORACLE instance shut down.
SQL> 
SQL> 
SQL> startup pfile='/oracle/app/product/11.2/db/dbs/inittest1.ora';
ORACLE instance started.

Total System Global Area 1048059904 bytes
Fixed Size                  2219992 bytes
Variable Size             729808936 bytes
Database Buffers          310378496 bytes
Redo Buffers                5652480 bytes
Database mounted.
Database opened.
(11)創建spfile文件,住庫原先是有spfile文件,但是原先的spfile文件不是dg環境的文件,如果將住庫關閉,在刺用startup啓動時,會有錯誤
SQL> create   spfile from pfile;
.
關閉主庫
shutdown immediate;
先在備份庫創建完相應的目錄
複製數據文件,控制文件,redo文件,注意控制文件和文件的屬性,這裏是複製上面創建的控制文件不是主庫源先的控制文件。
scp  *.log [email protected]:/oracle/app/oradata/test2/
scp  *.dbf  [email protected]:/oracle/app/oradata/test2/
scp   control03.ctl [email protected]:/oracle/app/oradata/test2/
 

二,下面是備份庫的操作

(1)創建pfile文件的相應目錄
mkdir   /oracle/app/product/11.2/db/dbs/arch -p
mkdir  /oracle/app/oradata/test2 -p
mkdir  /oracle/app/admin/test2/adump -p
mkdir  /oracle/app/admin/test2/dpdump  -p 
mkdir   /oracle/app/admin/test2/pfile -p

啓動備份庫到nomount 狀態
SQL> startup  nomount
SQL> alter  database mount  atandby  database  這個步驟做完後會有RFS進程,如果沒有請查看日誌
SQL> select process,pid,status,client_process from  v$managed_standby;

PROCESS                   PID STATUS                   CLIENT_PROCESS
------------------ ---------- ------------------------ ----------------
ARCH                     3678 CONNECTED                ARCH
ARCH                     3680 CONNECTED                ARCH
ARCH                     3682 CLOSING                  ARCH
ARCH                     3684 CONNECTED                ARCH
RFS                      3698 IDLE                     N/A
RFS                      3692 IDLE                     UNKNOWN
RFS                      3694 IDLE                     UNKNOWN
RFS                      3696 IDLE                     LGWR

SQL> alter database recover managed standby  database  disconnect from session; 這個步驟做完後會有MRP0進程,如果沒有請看日誌
QL> select process,pid,status,client_process from  v$managed_standby;

PROCESS                   PID STATUS                   CLIENT_PROCESS
------------------ ---------- ------------------------ ----------------
ARCH                     3678 CONNECTED                ARCH
ARCH                     3680 CONNECTED                ARCH
ARCH                     3682 CLOSING                  ARCH
ARCH                     3684 CONNECTED                ARCH
RFS                      3698 IDLE                     UNKNOWN
RFS                      3692 IDLE                     UNKNOWN
RFS                      3727 IDLE                     UNKNOWN
RFS                      3696 IDLE                     LGWR
MRP0                     3715 WAIT_FOR_LOG             N/A


下面是一些備份庫的查詢
SQL> select  sequence# from v$log;

 SEQUENCE#
----------
        10
         0
         0

SQL> show parameter instance_name;

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
instance_name                        string
test2
SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)
--------------
             9

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
----------------------------------------
NOT ALLOWED

SQL>  select switchover_status from v$database;

SWITCHOVER_STATUS
----------------------------------------
NOT ALLOWED

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

MAX(SEQUENCE#)
--------------
             9

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

MAX(SEQUENCE#)
--------------
            10

SQL> select  database_role,open_mode from v$database;

DATABASE_ROLE                    OPEN_MODE
-------------------------------- ----------------------------------------
PHYSICAL STANDBY                 MOUNTED

SQL> select    status from v$instance;

STATUS
------------------------
MOUNTED





下面是住庫的一些查看下
Database altered.

SQL> select  sequence# from v$log; 

 SEQUENCE#
----------
        10
         8
         9

SQL> show parameter instance_name;

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
instance_name                        string
test1
SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)
--------------
             9

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
----------------------------------------
TO STANDBY

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

MAX(SEQUENCE#)
--------------
             9

SQL> alter  system switch logfile;

System altered.

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

MAX(SEQUENCE#)
--------------
            10

SQL> 
SQL> 
SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
----------------------------------------
TO STANDBY

SQL> select process,pid,status,client_process from  v$managed_standby;

PROCESS                   PID STATUS                   CLIENT_PROCESS
------------------ ---------- ------------------------ ----------------
ARCH                     3548 CLOSING                  ARCH
ARCH                     3550 CLOSING                  ARCH
ARCH                     3552 CLOSING                  ARCH
ARCH                     3554 CLOSING                  ARCH
LNS                      3556 WRITING                  LNS

SQL> 
SQL> select  database_role,open_mode from v$database;

DATABASE_ROLE                    OPEN_MODE
-------------------------------- ----------------------------------------
PRIMARY                          READ WRITE

SQL> select    status from v$instance;

STATUS
------------------------
OPEN
下面是一些報錯 解決方法是,在主庫創建密碼文件後,將其scp到備份庫,然後在啓動備份庫
orapwd  file=orapwtest1   password=oracle  entries=10 force=y
   
ORA-01034: ORACLE not available
PING[ARC2]: Heartbeat failed to connect to standby 'test2'. Error is 1034.
Sun Apr 23 03:37:48 2017
Error 1017 received logging on to the standby
------------------------------------------------------------
Check that the primary and standby are using a password file
and remote_login_passwordfile is set to SHARED or EXCLUSIVE, 
and that the SYS password is same in the password files.
      returning error ORA-16191
------------------------------------------------------------
Errors in file /oracle/app/diag/rdbms/test1/test1/trace/test1_arc2_3311.trc:
ORA-16191: Primary log shipping client not logged on standby
PING[ARC2]: Heartbeat failed to connect to standby 'test2'. Error is 16191.
Sun Apr 23 03:40:49 2017




   





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章