且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

dataguard-创建物理备库全程解析

更新时间:2022-03-27 06:43:19

                                                            创建 物理备库

   本文主要记录了创建物理备库的完整过程,以便实践中参考.耐于机器配置,此实验实现的是在本机上建立两个数据库TEST和STD_ASSG,TEST是主库,STD_ASSG
是备库,最后实现主库发生日志切换后,全部应用于物理备库

一 创建物理备库需要的目录
[oracle@dbsv admin]$ cd std_assg/
[oracle@dbsv std_assg]$ ls
[oracle@dbsv std_assg]$ mkdir arch
[oracle@dbsv std_assg]$ mkdir adump
[oracle@dbsv std_assg]$ mkdir bdump
[oracle@dbsv std_assg]$ mkdir cdump
[oracle@dbsv std_assg]$ mkdir udump
[oracle@dbsv std_assg]$ mkdir flash
[oracle@dbsv std_assg]$ cd $ORACLE_BASE/oradata
[oracle@dbsv oradata]$ mkdir STD_ASSG
二创建sys用户需要的密码文件
[oracle@dbsv dbs]$ ls orapw*
orapwdBAKDB.pwd  orapwdorcl  orapworcl  orapwstdby  orapwTEST
[oracle@dbsv dbs]$ cp orapwTEST orapwSTD_ASSG
三创建备库的日志文件
1 启动已有主库
[oracle@dbsv ~]$ export ORACLE_SID=TEST
[oracle@dbsv ~]$ sqlplus / as sysdba
2查看备库日志情况
SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;
GROUP#    THREAD#  SEQUENCE# ARC STATUS
---------- ---------- ---------- --- ----------
         4          0          0 YES UNASSIGNED
         5          0          0 YES UNASSIGNED
         6          0          0 YES UNASSIGNED
3 建立备库日志
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 '/u01/app/oracle/oradata/STD_ASSG/std.redo' SIZE 50M;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 8 '/u01/app/oracle/oradata/STD_ASSG/std2.redo' SIZE 50M;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 9 '/u01/app/oracle/oradata/STD_ASSG/std3.redo' SIZE 50M;

Database altered.

四修改初始化参数,配置物理备库需要的信息
vi initTEST.ora
# for primary role
DB_NAME=TEST
DB_UNIQUE_NAME=TEST
LOG_ARCHIVE_CONFIG='DG_CONFIG=(TEST,STD_ASSG)'
#CONTROL_FILES='/u01/app/oracle/oradata/TEST/control1.ctl', '/u01/app/oracle/oradata/TEST/control2.ctl', '/u01/app/oracle/oradata/TEST/control3.ctl'
LOG_ARCHIVE_DEST_1=
 'LOCATION=/u01/app/oracle/admin/TEST/arch/
  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
  DB_UNIQUE_NAME=TEST'
LOG_ARCHIVE_DEST_2=
 'SERVICE=STD_ASSG LGWR ASYNC
  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
  DB_UNIQUE_NAME=STD_ASSG'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
LOG_ARCHIVE_MAX_PROCESSES=30

# for standby role
FAL_SERVER=STD_ASSG
FAL_CLIENT=TEST
DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/STD_ASSG/','/u01/app/oracle/oradata/TEST/'
LOG_FILE_NAME_CONVERT=
 '/u01/app/oracle/oradata/STD_ASSG/','/u01/app/oracle/oradata/TEST/'
STANDBY_FILE_MANAGEMENT=AUTO

复制并修改主库参数文件,改为备库可用参数文件
1,$ s/TEST/STD_ASSG/g
# for primary role
DB_NAME=TEST
DB_UNIQUE_NAME=STD_ASSG
LOG_ARCHIVE_CONFIG='DG_CONFIG=(STD_ASSG,TEST)'
#CONTROL_FILES='/u01/app/oracle/oradata/STD_ASSG/control1.ctl', '/u01/app/oracle/oradata/STD_ASSG/control2.ctl', '/u01/app/oracle/oradata/STD_ASSG/control3.ctl'
LOG_ARCHIVE_DEST_1=
 'LOCATION=/u01/app/oracle/admin/STD_ASSG/arch/
  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
  DB_UNIQUE_NAME=STD_ASSG'
LOG_ARCHIVE_DEST_2=
 'SERVICE=TEST LGWR ASYNC
  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
  DB_UNIQUE_NAME=TEST'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc
LOG_ARCHIVE_MAX_PROCESSES=30

# for standby role
FAL_SERVER=TEST
FAL_CLIENT=STD_ASSG
DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/TEST/','/u01/app/oracle/oradata/STD_ASSG/'
LOG_FILE_NAME_CONVERT=
 '/u01/app/oracle/oradata/TEST/','/u01/app/oracle/oradata/STD_ASSG/'
STANDBY_FILE_MANAGEMENT=AUTO

五 创建备库的控制文件
SQL> startup mount
ORACLE instance started.

Total System Global Area  452984832 bytes
Fixed Size                  1262308 bytes
Variable Size             230690076 bytes
Database Buffers          213909504 bytes
Redo Buffers                7122944 bytes
Database mounted.
SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/u01/app/oracle/oradata/STD_ASSG/STDASSG.ctl';

Database altered.

SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/u01/app/oracle/oradata/STD_ASSG/STDASSG2.ctl';

Database altered.

SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/u01/app/oracle/oradata/STD_ASSG/STDASSG3.ctl';

Database altered.

六 复制数据文件到备库相应目录
[oracle@dbsv TEST]$ cp *.dbf ../STD_ASSG/
七配置网络
STD_RSSG =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = tcp)(HOST = dbsv)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = STD_ASSG)
    )
  )
八配置备库初始化参数文件
[oracle@dbsv admin]$ export ORACLE_SID=STD_ASSG
[oracle@dbsv admin]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.3.0 - Production on Sun Apr 27 18:26:55 2014

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

Connected to an idle instance.
SQL> create spfile from pfile='initSTD_ASSG.ora'
  2  ;

File created.
启动到控制文件状态
SQL> startup mount
ORACLE instance started.

Total System Global Area  452984832 bytes
Fixed Size                  1262308 bytes
Variable Size             138415388 bytes
Database Buffers          306184192 bytes
Redo Buffers                7122944 bytes
Database mounted.
九 启动日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Database altered.

十测试物理备库是否可以使用
1 在主库上
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME
 FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
SEQUENCE# FIRST_TIME          NEXT_TIME
---------- ------------------- -------------------
       …
  47 2014-04-27:18:52:51 2014-04-27:18:56:08
        47 2014-04-27:18:52:51 2014-04-27:18:56:08
        48 2014-04-27:18:56:08 2014-04-27:20:38:43
        48 2014-04-27:18:56:08 2014-04-27:20:38:43
        49 2014-04-27:20:38:43 2014-04-27:20:39:36

 SEQUENCE# FIRST_TIME          NEXT_TIME
---------- ------------------- -------------------
        49 2014-04-27:20:38:43 2014-04-27:20:39:36
        50 2014-04-27:20:39:36 2014-04-27:20:40:48
        50 2014-04-27:20:39:36 2014-04-27:20:40:48
        51 2014-04-27:20:40:48 2014-04-27:20:46:28
        51 2014-04-27:20:40:48 2014-04-27:20:46:28

SQL> ALTER SYSTEM SWITCH LOGFILE;

System altered.


2 在备库上
SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG
    ORDER BY SEQUENCE#;
  2 
 SEQUENCE# APP
---------- ---
        44 YES
        45 YES
        46 YES
        47 YES
        48 YES
        49 YES
        50 YES
        51 YES

8 rows selected.
证明备库日志在备库已被应用