Oracle 11g DG主从复制集群搭建

oracle 11g DG主备安装手册

1 环境准备

1.1 硬件准备

3 DG配置

强制日志记录

#sqlplus 登录

sqlplus / as sysdba

#先关闭数据库

SQL> shutdown immediate

 #启动到nomount状态

SQL> startup nomount

#在启动到mount状态;

SQL> alter database mount;

#配置为强日志记录

SQL> alter database force logging;   #修改数据库为强制记日志,这是必须的操作,主库的每一步操作都得记录到日志中去。

#修改为归档模式

SQL> alter database archivelog;   #修改数据库为归档模式,因为dg是通过传送归档日志到备库然后应用来保证主备库一致的

创建redo 日志文件

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

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

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

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

查询日志文件

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

    GROUP# TYPE

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

MEMBER

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

         3 ONLINE

/data/oracle/oradata/orcl/redo03.log

         2 ONLINE

/data/oracle/oradata/orcl/redo02.log

         1 ONLINE

/data/oracle/oradata/orcl/redo01.log

    GROUP# TYPE

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

MEMBER

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

         4 STANDBY

/data/oracle/oradata/orcl/redo04.log

         5 STANDBY

/data/oracle/oradata/orcl/redo05.log

         6 STANDBY

/data/oracle/oradata/orcl/redo06.log

    GROUP# TYPE

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

MEMBER

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

         7 STANDBY

/data/oracle/oradata/orcl/redo07.log

7 rows selected.

创建pfile

SQL> create pfile from spfile;#这里创建pfile是为了做一些主库参数的配置,并且还得拷贝到备库再次修改成备库的配置。只要通过pfile才能在主备库之间建立联系(主库和备库中的pfile相似但有区别)

#再次关闭数据库并退出

SQL> shutdown immediate

SQL> exit

创建归档目录

#在目录/data/oracle/oradata/orcl 下创建(自定义,不固定)

cd /data/oracle/oradata/orcl

mkdir archivelog

配置监听,监听文件在/data/oracle/product/11.2.0/db_1/network/admin 下面

[oracle@localhost ~]$ cd /data/oracle/product/11.2.0/db_1/network/admin

[oracle@localhost admin]$ vi listener.ora

# listener.ora Network Configuration File: /data/oracle/product/11.2.0/db_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

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

    )

  )

#SID_NAME = orcl 就是在安装oracle软件的配置文件db_install.rsp 和创建数据库的配置文件dbca.rsp 中配置的SID

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = orcl)

      (ORACLE_HOME = /data/oracle/product/11.2.0/db_1)

      (SID_NAME = orcl) 

    )

  )

ADR_BASE_LISTENER = /data/oracle

#配置tns文件

[oracle@localhost admin]$ vi tnsnames.ora

# tnsnames.ora Network Configuration File: /data/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

ORA11G =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = ora11g)

    )

  )

ORCL =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

    )

  )

#该链接配置备库的链接,后面备库创建好了再配也可以

ORCL_ST = 

  (DESCRIPTION = 

    (ADDRESS_LIST = 

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

    ) 

    (CONNECT_DATA = 

      (SERVICE_NAME =orcl) 

      (UR=A)

    ) 

  ) 

#该链接配置主库链接,和上面一样的

ORCL_PD =

  (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      (SERVICE_NAME =orcl)

      (UR=A)

    )

  )

#监听配置好之后重启监听

lsnrctl stop

lsnrctl start

lsnrctl status

验证tns是否配置成功,如果不报错就说明tns配置成功

[oracle@localhost admin]$ tnsping ORCL_PD

[oracle@localhost admin]$ tnsping ORCL_ST

修改pfile文件,默认pfile文件在/data/oracle/product/11.2.0/db_1/dbs 下

[oracle@localhost ~]$  cd /data/oracle/product/11.2.0/db_1/dbs

[oracle@localhost dbs]$ vi initorcl.ora

orcl.__db_cache_size=822083584

orcl.__java_pool_size=16777216

orcl.__large_pool_size=16777216

orcl.__oracle_base='/data/oracle'#ORACLE_BASE set from environment

orcl.__pga_aggregate_target=402653184

orcl.__sga_target=1174405120

orcl.__shared_io_pool_size=0

orcl.__shared_pool_size=301989888

orcl.__streams_pool_size=0

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

*.audit_trail='db'

*.compatible='11.2.0.0.0'

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

*.db_block_size=8192

*.db_domain=''

*.db_name='orcl'

*.db_recovery_file_dest='/data/oracle/fast_recovery_area'

*.db_recovery_file_dest_size=4322230272

*.diagnostic_dest='/data/oracle'

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

*.open_cursors=300

*.pga_aggregate_target=386924544

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=1160773632

*.undo_tablespace='UNDOTBS1'

DB_UNIQUE_NAME=orcl_pd 

LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl_pd,orcl_st)' 

LOG_ARCHIVE_DEST_1= 

 'LOCATION=/data/oracle/oradata/orcl/archivelog

  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

  DB_UNIQUE_NAME=orcl_pd' 

LOG_ARCHIVE_DEST_2= 

 'SERVICE=orcl_st ASYNC 

  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

  DB_UNIQUE_NAME=orcl_st' 

LOG_ARCHIVE_DEST_STATE_1=ENABLE 

LOG_ARCHIVE_DEST_STATE_2=ENABLE 

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE 

LOG_ARCHIVE_FORMAT=%t_%s_%r.arc 

FAL_SERVER=orcl_st 

STANDBY_FILE_MANAGEMENT=AUTO

再次关闭数据库,并通过pfile启动到nomount状态,并且创建spfile

[oracle@oracle-tmp dbs]$ sqlplus / as sysdba

SQL> shutdown immediate

SQL> startup nomount pfile='/data/oracle/product/11.2.0/db_1/dbs/initorcl.ora'

SQL> create spfile from pfile;

SQL> alter database mount;

SQL> alter database open;

创建主库的备份目录

mkdir /data/oracle/oradata/orcl/backup

将目录/data/oracle/product/11.2.0/db_1/dbs 下的口令验证文件orapworcl 和pfile文件initorcl.ora 发送到备库的相同目录

[oracle@oracle-2 ~]$ cd /data/oracle/product/11.2.0/db_1/dbs/

[oracle@oracle-2 dbs]$ scp ./initorcl.ora 192.168.56.40:/data/oracle/product/11.2.0/db_1/dbs/

[oracle@oracle-2 dbs]$ scp ./orapworcl 192.168.56.40:/data/oracle/product/11.2.0/db_1/dbs/

3.2 备库配置

配置备库的监听

[oracle@localhost ~]$ cd /data/oracle/product/11.2.0/db_1/network/admin

[oracle@localhost admin]$ vi listener.ora

# listener.ora Network Configuration File: /data/oracle/product/11.2.0/db_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

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

    )

  )

#SID_NAME = orcl 就是在安装oracle软件的配置文件db_install.rsp 和创建数据库的配置文件dbca.rsp 中配置的SID

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = orcl)

      (ORACLE_HOME = /data/oracle/product/11.2.0/db_1)

      (SID_NAME = orcl) 

    )

  )

ADR_BASE_LISTENER = /data/oracle

#配置tns文件

[oracle@localhost admin]$ vi tnsnames.ora

# tnsnames.ora Network Configuration File: /data/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

ORA11G =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = ora11g)

    )

  )

ORCL =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

    )

  )

#该链接配置备库的链接,后面备库创建好了再配也可以

ORCL_ST = 

  (DESCRIPTION = 

    (ADDRESS_LIST = 

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

    ) 

    (CONNECT_DATA = 

      (SERVICE_NAME =orcl) 

      (UR=A)

    ) 

  ) 

#该链接配置主库链接,和上面一样的

ORCL_PD =

  (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

      (SERVICE_NAME =orcl)

      (UR=A)

    )

  )

#监听配置好之后重启监听

lsnrctl stop

lsnrctl start

lsnrctl status

验证tns是否配置成功,如果不报错就说明tns配置成功

[oracle@localhost admin]$ tnsping ORCL_PD

[oracle@localhost admin]$ tnsping ORCL_ST

#Oracle 11G静态监听,需要手动注册,Oracle 12C 之后就是动态监听,无需手动注册

sqlplus / as sysdba

SQL>alter system register;

System altered.

修改从主库发送过来的pfile(注意,此处黑色部分是从主库拷贝过来的

[oracle@localhost ~]$  cd /data/oracle/product/11.2.0/db_1/dbs

[oracle@localhost dbs]$ vi initorcl.ora

orcl.__db_cache_size=822083584

orcl.__java_pool_size=16777216

orcl.__large_pool_size=16777216

orcl.__oracle_base='/data/oracle'#ORACLE_BASE set from environment

orcl.__pga_aggregate_target=402653184

orcl.__sga_target=1174405120

orcl.__shared_io_pool_size=0

orcl.__shared_pool_size=301989888

orcl.__streams_pool_size=0

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

*.audit_trail='db'

*.compatible='11.2.0.0.0'

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

*.db_block_size=8192

*.db_domain=''

*.db_name='orcl'

*.db_recovery_file_dest='/data/oracle/fast_recovery_area'

*.db_recovery_file_dest_size=4322230272

*.diagnostic_dest='/data/oracle'

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

*.open_cursors=300

*.pga_aggregate_target=386924544

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=1160773632

*.undo_tablespace='UNDOTBS1'

*.log_file_name_convert='/data/oracle/oradata/orcl','/data/oracle/oradata/orcl'

*.db_file_name_convert='/data/oracle/oradata/orcl','/data/oracle/oradata/orcl'

DB_UNIQUE_NAME=orcl_st

LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl_pd,orcl_st)'

LOG_ARCHIVE_DEST_1= 

 'LOCATION=/data/oracle/oradata/orcl/archivelog

  VALID_FOR=(ALL_LOGFILES,ALL_ROLES) 

  DB_UNIQUE_NAME=orcl_st' 

LOG_ARCHIVE_DEST_2= 

 'SERVICE=orcl_st ASYNC 

  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) 

  DB_UNIQUE_NAME=orcl_pd' 

LOG_ARCHIVE_DEST_STATE_1=ENABLE 

LOG_ARCHIVE_DEST_STATE_2=ENABLE 

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE 

LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

FAL_SERVER=orcl_pd

STANDBY_FILE_MANAGEMENT=AUTO

备库

mkdir /data/oracle/oradata/orcl/backup

启动备库到nomount状态

sqlplus / as sysdba

SQL> shutdown immediate

SQL> startup nomount pfile="/data/oracle/product/11.2.0/db_1/dbs/initorcl.ora"

SQL> quit

使用rman 开始ADG

#使用rman链接主库和备库

[oracle@oracle-1 dbs]$ rman target sys/oracle@orcl_pd auxiliary sys/oracle@orcl_st

#开始同步

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

RMAN> exit;

备库开启apply service

 [oracle@oracle-1 dbs] sqlplus / as sysdba

 #打开数据库

 SQL> alter database open;

 #检查数据库状态

 SQL> select open_mode from v$database;

 OPEN_MODE 

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

READ ONLY 

SQL> alter database recover managed standby database disconnect from session;

4 测试

在主库创建表并插入数据

SQL> create table Csong(id number(10),name varchar2(20));

SQL> insert into Csong values(1,'Csong'); 

SQL> insert into Csong values(3,'sc'); 

SQL> commit; 

SQL> alter system switch logfile;

在备库检查是否同步

SQL> desc Csong;

SQL> select * from Csong;

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是在 Oracle 11g 中搭建 Data Guard 的基本步骤: 1. 在主库上启用归档模式: ``` ALTER DATABASE ARCHIVELOG; ``` 2. 创建备库的控制文件,并将其复制到备库: ``` ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/u01/app/oracle/oradata/standby/control01.ctl'; ``` 3. 在备库上创建一个备库参数文件,其中包括主库的连接信息和备库的名称和路径: ``` DB_NAME='standby' DB_UNIQUE_NAME='standby' LOG_ARCHIVE_CONFIG='DG_CONFIG=(PRIMARY,STANDBY)' LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/oradata/standby/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby' REMOTE_LOGIN_PASSWORDFILE='EXCLUSIVE' STANDBY_FILE_MANAGEMENT='AUTO' ``` 4. 在备库上创建一个静态服务名,以便主库和备库之间进行通信: ``` ALTER SYSTEM SET SERVICE_NAMES='standby' SCOPE=BOTH; ``` 5. 在备库上启动实例并连接到主库: ``` STARTUP NOMOUNT; ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=primary LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primary'; ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE; ALTER DATABASE MOUNT STANDBY DATABASE; ``` 6. 在主库上启用归档模式并启用归档日志传输: ``` ALTER DATABASE ARCHIVELOG; ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=standby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby'; ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE; ``` 7. 在备库上启动应用服务: ``` ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT; ``` 8. 在主库上创建一个 Data Guard broker 配置文件(可选): ``` DGMGRL> CREATE CONFIGURATION 'dgconfig' AS PRIMARY DATABASE IS 'primary' CONNECT IDENTIFIER IS primary; DGMGRL> ADD DATABASE 'standby' AS CONNECT IDENTIFIER IS standby MAINTAINED AS PHYSICAL; DGMGRL> ENABLE CONFIGURATION; ``` 以上是在 Oracle 11g 中搭建 Data Guard 的基本步骤,您可以按照上述步骤进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值