Oracle 12C 单实例DG搭建

  • 主库搭建安装(仅安装数据库软件)

Oracle 12C 单实例DG搭建_第1张图片

Oracle 12C 单实例DG搭建_第2张图片

Oracle 12C 单实例DG搭建_第3张图片

Oracle 12C 单实例DG搭建_第4张图片

  • 备库搭建安装(克隆安装)
  • 打包安装完成的数据库软件传送至备机

[oracle@oraclenode1 ~]$ cd /data

[oracle@oraclenode1 ~]$tar zcf  oracle-clone.tar.gz  oracle/ oraInventory/

[oracle@oraclenode1 ~]$ scp oracle-clone.tar.gz oracle2:/data

[oracle@oraclenode2 ~]$rm –rf /data/oraInventory/*

[oracle@oraclenode2 ~]$$ORACLE_HOME/clone/bin/clone.pl

\ORACLE_BASE=/data/oracle  \ORACLE_HOME=/data/oracle/product/12.1.0/dbhome_1

\OSDBA_GROUP=dba OSOPER_GROUP=dba 

\OSBACKUPDBA_GROUP=dba 

\OSRACDBA_GROUP=dba 

\INVENTORY_LOCATION=/data/oraInventory -defaultHomeName

Oracle 12C 单实例DG搭建_第5张图片

Oracle 12C 单实例DG搭建_第6张图片

  • 主数据库监听配置

# netca

Oracle 12C 单实例DG搭建_第7张图片

Oracle 12C 单实例DG搭建_第8张图片

Oracle 12C 单实例DG搭建_第9张图片

Oracle 12C 单实例DG搭建_第10张图片

Oracle 12C 单实例DG搭建_第11张图片

Oracle 12C 单实例DG搭建_第12张图片

Oracle 12C 单实例DG搭建_第13张图片

  • 主库数据库实例安装

# dbca

Oracle 12C 单实例DG搭建_第14张图片

Oracle 12C 单实例DG搭建_第15张图片

Oracle 12C 单实例DG搭建_第16张图片

Oracle 12C 单实例DG搭建_第17张图片

Oracle 12C 单实例DG搭建_第18张图片

Oracle 12C 单实例DG搭建_第19张图片

Oracle 12C 单实例DG搭建_第20张图片

Oracle 12C 单实例DG搭建_第21张图片

  • 标准版没有此项

Oracle 12C 单实例DG搭建_第22张图片

Oracle 12C 单实例DG搭建_第23张图片

Oracle 12C 单实例DG搭建_第24张图片

Oracle 12C 单实例DG搭建_第25张图片

Oracle 12C 单实例DG搭建_第26张图片

Oracle 12C 单实例DG搭建_第27张图片

  • 从库网络配置

# netmgr

Oracle 12C 单实例DG搭建_第28张图片

Oracle 12C 单实例DG搭建_第29张图片

Oracle 12C 单实例DG搭建_第30张图片

Oracle 12C 单实例DG搭建_第31张图片

Oracle 12C 单实例DG搭建_第32张图片

  • 从库配置netca

Oracle 12C 单实例DG搭建_第33张图片

Oracle 12C 单实例DG搭建_第34张图片

  • 此处的service name为主库Service name

Oracle 12C 单实例DG搭建_第35张图片

Oracle 12C 单实例DG搭建_第36张图片

  • 此处为主库的hostname

Oracle 12C 单实例DG搭建_第37张图片

Oracle 12C 单实例DG搭建_第38张图片

  • 此处为主库的net service name

Oracle 12C 单实例DG搭建_第39张图片

Oracle 12C 单实例DG搭建_第40张图片

Oracle 12C 单实例DG搭建_第41张图片

Oracle 12C 单实例DG搭建_第42张图片

  • 配置data guard
  • 主库配置
  • 归档配置
  • 查看归档和日志强制logging状态

[oracle@oraclenode1 ~]$ sqlplus / as sysdba

SQL> select log_mode,force_logging from v$database;

  • 把数据库启动到mount状态

SQL> shutdown immediate

SQL> startup mount

Oracle 12C 单实例DG搭建_第43张图片

  • 开启归档

SQL> alter database archivelog;

  • 日志强制logging

SQL> alter database force logging;

Oracle 12C 单实例DG搭建_第44张图片

  • 查看是否开启

Oracle 12C 单实例DG搭建_第45张图片

  • 创建standby控制文件

SQL>alter database create standby controlfile as '/data/oracle/oradata/onisdb/standby.ctl';

  • 添加standby的redo日志
  • 查看主库在线日志大小和组数

SQL> select group#,bytes/1024/1024 from v$log;

  • 查看从库在线日志大小和组数

select group#,bytes/1024/1024 from v$standby_log;

Oracle 12C 单实例DG搭建_第46张图片

  • 创建必要目录

mkdir -p /data/oracle/{onlinelog,datafile}

mkdir -p /data/oracle/onisdb/archivelog

  • 增加standby日志

SQL> alter database add standby logfile group 4 '/data/oracle/onlinelog/stdredo01.log' size 50M;

SQL> alter database add standby logfile group 5 '/data/oracle/onlinelog/stdredo02.log' size 50M;

SQL> alter database add standby logfile group 6 '/data/oracle/onlinelog/stdredo03.log' size 50M;

SQL> alter database add standby logfile group 7 '/data/oracle/onlinelog/stdredo04.log' size 50M;

Oracle 12C 单实例DG搭建_第47张图片

  • 确认备库日志

SQL> select group#,bytes/1024/1024 from v$standby_log;

Oracle 12C 单实例DG搭建_第48张图片

  • 修改参数文件

SQL> alter system set log_archive_config='DG_CONFIG=(onisdb,sonisdb)'; 

SQL> alter system set log_archive_dest_2='SERVICE=sonisdb VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=sonisdb' scope=spfile; 

SQL> alter system set log_archive_dest_state_1='enable'; 

SQL> alter system set log_archive_dest_state_2='enable'; 

SQL> alter system set db_file_name_convert='/data/oracle/datafile','/data/oracle/datafile' scope=spfile; 

SQL> alter system set log_file_name_convert='/data/oracle/onlinelog','/data/oracle/onlinelog' scope=spfile; 

SQL> alter system set fal_server='sonisdb'; 

SQL> alter system set fal_client='onisdb'; 

SQL> alter system set standby_file_management='AUTO';

SQL> quit

Oracle 12C 单实例DG搭建_第49张图片

  • 修改listener.ora配置文件

[oracle@oraclenode1 ~]$ vi /data/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora

  • 增加如下配置

SID_LIST_LISTENER =

 (SID_LIST =

    (SID_DESC =

    (GLOBAL_DBNAME = onisdb)

    (ORACLE_HOME = /data/oracle/product/12.1.0/dbhome_1)

    (SID_NAME = onisdb)

    )

  )

Oracle 12C 单实例DG搭建_第50张图片

修改tnsnames.ora配置文件

[oracle@oraclenode1 ~]$vi /data/oracle/product/12.1.0/dbhome_1/network/admin/tnsnames.ora

  • 增加如下配置

SONISDB =

 (DESCRIPTION =

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

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = sonisdb.localdomain)

    )

  )

Oracle 12C 单实例DG搭建_第51张图片

  • 重启监听

[oracle@oraclenode1 ~]$ lsnrctl stop

[oracle@oraclenode1 ~]$ lsnrctl start

Oracle 12C 单实例DG搭建_第52张图片

  • 生成参数文件

[oracle@oraclenode1 ~]$sqlplus / as sysdba

SQL> create pfile from spfile;

  • 修改参数文件
  • 添加如下行

*.db_unique_name='onisdb'

*.log_archive_dest_1='LOCATION=/data/oracle/sonisdb/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=sonisdb'

SQL> create spfile from pfile;

  • 打开数据库

SQL> alter database open;

  • 传输文件到从库

[oracle@oraclenode1 ~]$ cd /data/oracle/product/12.1.0/dbhome_1/dbs/

[oracle@oraclenode1 dbs]$ scp initonisdb.ora orapwonisdb  

\oraclenode2:/data/oracle/product/12.1.0/dbhome_1/dbs/

  • 从库配置
  • 参数配置文件修改

[oracle@oraclenode2 ~]$ cd /data/oracle/product/12.1.0/dbhome_1/dbs/

[oracle@oraclenode2 dbs]$ mv initonisdb.ora initsonisdb.ora 

[oracle@oraclenode2 dbs]$ mv orapwonisdb orapwsonisdb

[oracle@oraclenode2 dbs]$ vi initsonisdb.ora

  • 修改如下行

*.audit_file_dest='/data/oracle/admin/sonisdb/adump'

*.control_files='/data/oracle/oradata/sonisdb/control01.ctl','/data/oracle/oradata/sonisdb/control02.ctl'

*.db_unique_name='sonisdb'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=sonisdbXDB)'

*.fal_client='sonisdb'

*.fal_server='onisdb'

*.log_archive_config='DG_CONFIG=(onisdb,sonisdb)'

*.log_archive_dest_1='LOCATION=/data/oracle/sonisdb/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=sonisdb'

*.log_archive_dest_2='SERVICE=onisdb VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=onisdb'

Oracle 12C 单实例DG搭建_第53张图片

  • 创建必要的目录

[oracle@oraclenode2 dbs]$ mkdir -p /data/oracle/admin/sonisdb/adump

[oracle@oraclenode2 dbs]$ mkdir -p /data/oracle/oradata/{onisdb,sonisdb}

[oracle@oraclenode2 dbs]$ mkdir -p /data/oracle/{datafile,onlinelog}

[oracle@oraclenode2 dbs]$ mkdir -p /data/oracle/sonisdb/archivelog

  • 修改tnsnames.ora配置文件

[oracle@oraclenode1 ~]$vi /data/oracle/product/12.1.0/dbhome_1/network/admin/tnsnames.ora

  • 增加如下配置

SONISDB =

 (DESCRIPTION =

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

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = sonisdb.localdomain)

    )

  )

Oracle 12C 单实例DG搭建_第54张图片

  • 重启监听

[oracle@oraclenode1 ~]$ lsnrctl stop

[oracle@oraclenode1 ~]$ lsnrctl start

Oracle 12C 单实例DG搭建_第55张图片

  • 启动从库到nomount状态

[oracle@oraclenode2 ~]$ sqlplus / as sysdba

SQL> startup nomount

Oracle 12C 单实例DG搭建_第56张图片

  • 验证监听
  • 主库验证监听

[oracle@oraclenode1 ~]$ tnsping onisdb

[oracle@oraclenode1 ~]$ tnsping sonisdb

Oracle 12C 单实例DG搭建_第57张图片

[oracle@oraclenode1 ~]$ sqlplus sys/81977100@onisdb as sysdba

[oracle@oraclenode1 ~]$ sqlplus sys/81977100@sonisdb as sysdba

Oracle 12C 单实例DG搭建_第58张图片

  • 备库验证监听

[oracle@oraclenode2 ~]$ tnsping onisdb

[oracle@oraclenode2 ~]$ tnsping sonisdb

Oracle 12C 单实例DG搭建_第59张图片

[oracle@oraclenode2 ~]$ sqlplus sys/81977100@onisdb as sysdba

[oracle@oraclenode2 ~]$ sqlplus sys/81977100@sonisdb as sysdba

Oracle 12C 单实例DG搭建_第60张图片

  • 恢复数据
  • 主库操作

[oracle@oraclenode1~]$rman target sys/81977100@onisdb \

auxiliary sys/81977100@sonisdb

Oracle 12C 单实例DG搭建_第61张图片

RMAN> duplicate target database for standby from active database nofilenamecheck dorecover;

Oracle 12C 单实例DG搭建_第62张图片

  • 备库开启实时应用模式

SQL> alter database open read only;

SQL> alter database recover managed standby database using current logfile disconnect from session;

Oracle 12C 单实例DG搭建_第63张图片

alter system switch logfile;

select thread#,max(sequence#) from v$log_history group by thread#;

select process,status from v$managed_standby;

select max(sequence#) from v$standby_log;

select max(sequence#) from v$archived_log;

  • 测试同步
  • 主库

SQL>create table test as select * from dba_objects where rownum < 101;

  • 备库

#su - oracle

$sqlplus / as sysdba

SQL>select count(*) from test;

 

你可能感兴趣的:(运维,服务器,数据库,linux,centos,运维,服务器)