Oracle 12c dataguard云上挖坑记--为某机场贵宾事务布置oracle 12c到云端51CTO博客 - AG环亚娱乐

Oracle 12c dataguard云上挖坑记--为某机场贵宾事务布置oracle 12c到云端51CTO博客

2019年03月06日12时51分31秒 | 作者: 智阳 | 标签: 文件,主库,履行 | 浏览: 1594

项目需求

据称现有环境为多节点RAC,办理本钱高,首要体现在没有专业技能人家对根底设施进行保护。迁移到云上今后,根底设施保护就节约掉了。并且后边容量扩大一挥而就,长途保护之类也比物理环境去现场操作便利许多。

但在云上,oracle RAC完结的两个前提条件同享存储及心跳网络,不被正式支撑,因而要在云上布置oracle RAC用于出产环境,不是一个好的解决方案。经过多轮评论,一致同意在百度云布置单实例oracle 12c,以dataguard办法来保护数据可用性。

当然,相对与RAC,单实例的体系负载才能要差许多;相同是两个节点,RAC两节点是一同对外供给读写效劳,而单实例dataguard,只要一台设备对外供给效劳,而另一台只能做备用,与主库进行数据同步罢了。考虑到实践事务访问量不大的状况,这样做也在可接受规模。

 

根底设施

两台云主机,暂时绑定公网ip,20M独享带宽。

资源装备为:cpu 8core,内存32G,体系盘50G,云盘1000G。

云主机默许没有swap,因而用这1000G云盘的部分做swap,其他用于装置目录及数据目录。

操作体系版别现已有别人选好,版别为CentOS release 6.8,我没有自主权,否则就选centos 7。不过6也好,关防火墙没centos 7那么繁琐。

曾经在阿里云布置了几套oracle 11g,用的centos 7,在履行正式装置指令./runInstaller 时,多要一步操作,即以oracle帐号帐号履行 export DISPLAY=:1,否则无法进行下一步。详细参阅我曾经的文章“阿里云布置oracle 11g”,衔接地址为 。

软件运用oracle 12c,有正式授权,让我自己去官网下载。这还真费事,先下载到自己的个人电脑(不能直接用wget,需求输入用户名及暗码验证—或许我不明白怎样在指令行拼接这个下载的url),再上传到云主机。挨近4G的文件,下载、上传花了太多时刻,唉!

 

oracle装置前的预备

首要进程有:预备交流分区及数据分区、修正主机名、修正体系相关装备及依靠包、预备桌面环境。

◎预备预备交流分区及数据分区

◆预备交流分区

fdisk /dev/vdb

mkswap /dev/vdb1

swapon /dev/vdb1

Fdisk操作进程中,分区代码选“82”,巨细为18G。履行完上述操作后,用指令free –m检查是否收效。

fdisk /dev/vdb

mkfs.ext4 /dev/vdb2

mkdir /u01

mount /dev/vdb2 /u01

为使挂接永久收效,需求对文件/etc/fstab做修正,参加交流分区及数据分区今后,/etc/fstab文件的内容如下所示:

[root@oradb162 ~]# more   /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4   localhost4.localdomain4

::1         localhost localhost.localdomain   localhost6 localhost6.localdomain6

#192.168.0.4 instance-umns7cw3-2   instance-umns7cw3-2.novalocal

192.168.0.4   oradb162

192.168.0.5   oradb95

[root@oradb95 ~]# more   /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4   localhost4.localdomain4

::1         localhost localhost.localdomain   localhost6 localhost6.localdomain6

192.168.0.5 oradb95 oradb95.novalocal

192.168.0.4 oradb162


改完后,假如履行hostname没见作用,再检查一遍与主机名相关文件的设置,然后重启体系试试。主机名收效后,用设定的称号替代ip地址,两机互ping测验网络连通性。

 

◎预备桌面环境

大部分状况下,我都用长途桌面办法装置oracle,这有助于把控整个装置进程,直观了解装置发展及发作的问题。桌面环境由xwindow及vncserver组成,默许状况下,云主机是没有装置这两个东西。屡次实践证明,vncserve合作xwindow为最佳组合,装置完就能用,不蓝屏或灰屏。详细的装置进程如下:

yum groupinstall "X   Window System" "Desktop" -y

yum install tigervnc-server   -y

装置完这两个东西今后,只需求发动vncserver,设置好用户名和暗码,留神输出,用客户端衔接的时分需求运用。

[root@oradb95 ~]# more oracle_rep.bash

#!/bin/bash

#writed by sery 2012-05-16

 

#

#install depending packages                       #

#

yum install gcc* gcc-* gcc-c++-*   glibc-devel-* glibc-headers-* compat-libstdc* \

libstdc* elfutils-libelf-devel*   libaio-devel* \

sysstat* unixODBC-* pdksh-* ksh   compat-libcap1

#add groups,user and create dir        #

/usr/sbin/groupadd -g 501 oinstall

/usr/sbin/groupadd -g 502 dba

useradd -u 1000 -g oinstall -G dba   oracle

 

mkdir /u01/app/

mkdir -p /u01/app/oraInventory

mkdir -p /u01/app/oracle

chown -R oracle:oinstall /u01/app

chmod -R 775 /u01/app

 

#modify    sysctl.conf                                    #

cat >> /etc/sysctl.conf   <<done

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000   65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

fs.aio-max-nr = 1048576

done

 

sysctl -p

 

#

#modify    /etc/security/limits.conf                          #

#

cat >> /etc/security/limits.conf   << done

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

done

 

#modify /etc/pam.d/login                                  #

echo "session    required       pam_limits.so">>/etc/pam.d/login

 

# setting user oracle env                                   #

cat >> /home/oracle/.bash_profile   <<done

export ORACLE_SID=gbdb

export ORACLE_UNQNAME=oradb162

export ORACLE_base=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/12.2.0

export PATH=$ORACLE_HOME/bin:$PATH

done


依靠包装置那步,或许有重复(装置xwindow桌面环境或许会顺带装置了一些依靠),不过假如现已装置过相关的包,履行进程会主动越过,不会有任何危险存在。履行这个脚本,完过后检查一下相关目录是否生成,装备文件是否被修正。

 

正式装置oracle

用vnc客户端衔接到云主机,进入体系桌面今后,至少开一个终端窗口,以root帐号履行指令“xhost +”,切换帐号到oracle ,指令为 “su – oracle”。再开一终端窗口,以root帐号把下载来的oracle解包,指令如下:

unzip   linuxx64_12201_database.zip

履行结束,将在当时途径生成目录database,把此目录仿制到/home/oracle,履行指令:

chown –R oracle:oinstall   /home/oracle/database

现在切换到oracle帐号那个终端窗口,履行“./runInstaller”,只要能出装置界面,一般都不会有问题。

[oracle@oradb95 ~]$ su – oracle

[oracle@oradb95 ~]$ lsnrctl start

[oracle@oradb95 ~]$ lsnrctl status

LSNRCTL for Linux: Version 12.2.0.1.0 -   Production on 14-JUN-2018 14:47:13

 

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

 

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

STATUS of the LISTENER

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version   12.2.0.1.0 - Production

Start Date                14-JUN-2018 10:32:21

Uptime                    0 days 4 hr. 14 min. 52   sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

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

Listening Endpoints Summary...

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

The listener supports no services

The command completed successfully

上述操作在两个效劳器都相同。

 

创立数据库(仅在主库操作)

持续在vnc客户端进行操作。终端窗口,以oracle帐号履行“dbca”,弹出图形操作界面,挑选“Create a database(创立一个数据库)”。

[root@oradb162 ~]# su   - oracle

[oracle@oradb162 ~]$ sqlplus / as sysdba;

 

SQL*Plus: Release 12.2.0.1.0 Production   on Fri Jun 15 10:35:53 2018

 

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

 

 

Connected to:

Oracle Database 12c Enterprise Edition   Release 12.2.0.1.0 - 64bit Production

 

SQL> select   count(*) from v$session;

 

  COUNT(*)

          46

假如得到如上的成果,能够以为一切正常。

前边我着重过,oracle 默许体系表空间太小,需求调整。有两种办法:一种是sqlplus客户端进去履行alter 句子,另一种是em浏览器办法。其实都是去操作那个sql句子罢了。下边以图形办法来演示这个更改进程,看起来更直观一些.

ALTER DATABASE DATAFILE   '/u01/app/oracle/oradata/GBDB/datafile/o1_mf_system_fl1mqhrq_.dbf' RESIZE 2G;

瞧,是不是跟sqlplus敲代码的作用相同呢?默许是810M,现在点“断定”按钮是更改收效。到oracle数据库目录实践检查,看文件巨细是否发作改动。

[oracle@oradb162 datafile]$ cd /u01/app/oracle/oradata/GBDB/datafile/

[oracle@oradb162 datafile]$ du -hs *

551M    o1_mf_sysaux_fl1msk5v_.dbf

2.1G      o1_mf_system_fl1mqhrq_.dbf

2.3M    o1_mf_temp_fl1mw9p0_.tmp

71M     o1_mf_undotbs1_fl1mtnct_.dbf

5.1M    o1_mf_users_fl1mtojb_.dbf

嘿嘿,没骗人呢,文件巨细的确变化了。再用此办法,把辅佐表空间调成1G的容量。

 

Datagurd完结进程

主备两机都需求操作,并且操作办法有差异,在描绘中,我会特别标明,不至于让别人困惑。

两台效劳器的监听器随oracle 12c的装置现已主动装备完结,默许监听并没有生成文件,需求手动或许履行netca去生成。

◆主库的监听文件内容为:

[oracle@oradb162 admin]$ pwd

/u01/app/oracle/product/12.2.0/network/admin

[oracle@oradb162 admin]$ more listener.ora

# listener.ora Network Configuration   File: /u01/app/oracle/product/12.2.0/network/admin/listener.ora

# Generated by Oracle configuration   tools.

 

LISTENER =

    (DESCRIPTION_LIST =

      (DESCRIPTION =

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

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

      )

    )

 

SID_LIST_LISTENER=

    (SID_LIST =

      (SID_DESC =

        (GLOBAL_DBNAME = gbdb)

        (ORACLE_HOME =/u01/app/oracle/product/12.2.0)

        (SID_NAME = gbdb)

      )

     )

 

◆备库的监听文件内容为:

[oracle@oradb162 admin]$ pwd

/u01/app/oracle/product/12.2.0/network/admin

[oracle@oradb162 admin]$ more listener.ora

# listener.ora Network Configuration   File: /u01/app/oracle/product/12.2.0/network/admin/listener.ora

# Generated by Oracle configuration   tools.

 

LISTENER =

    (DESCRIPTION_LIST =

      (DESCRIPTION =

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

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

      )

    )

 

SID_LIST_LISTENER=

    (SID_LIST =

      (SID_DESC =

        (GLOBAL_DBNAME = gbdb)

        (ORACLE_HOME =/u01/app/oracle/product/12.2.0)

        (SID_NAME = gbdb)

      )

     )


◎装备本地命名效劳

两台效劳器进行相同的操作。持续在vnc客户端,终端窗口以oracle帐号履行netca(开端用文本编辑器编写tnsname.ora文件,总是不可。比方榜首行要定格,不要有空格等,书写要求太严。后用图形创立,创立完检查文件,即不犯错,又了解本质)。鼠标选取第三项,如图所示:

[oracle@oradb95 admin]$ more tnsnames.ora

# tnsnames.ora Network Configuration   File: /u01/app/oracle/product/12.2.0/network/admin/tnsnames.ora

# Generated by Oracle configuration   tools.

 

ORADB162 =

    (DESCRIPTION =

      (ADDRESS_LIST =

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

      )

      (CONNECT_DATA =

        (SERVICE_NAME = gbdb)

      )

    )

 

ORADB95 =

    (DESCRIPTION =

      (ADDRESS_LIST =

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

      )

      (CONNECT_DATA =

        (SERVICE_NAME =   gbdb)

      )

    )

这样再也不必忧虑书写格局、写漏括号“)”啥的了。

得查验这些设置有没有用,在两台效劳器别离履行如下指令进行验证:

[oracle@oradb95 admin]$ tnsping oradb95

 

TNS Ping Utility for Linux: Version   12.2.0.1.0 - Production on 15-JUN-2018 12:08:46

 

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

 

Used parameter files:

 

 

Used TNSNAMES adapter to resolve the   alias

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

OK   (0 msec)

[oracle@oradb95 admin]$ tnsping oradb162

 

TNS Ping Utility for Linux: Version   12.2.0.1.0 - Production on 15-JUN-2018 12:08:51

 

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

 

Used parameter files:

 

 

Used TNSNAMES adapter to resolve the   alias

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

OK   (0 msec)


◎主库启用归档及force logging强制记载日志

1、归档操作:检查主库是否处于归档,假如不是,则启用它,详细指令如下(启用要在mount下进行):

SQL> archive   log list;

Database   log mode              No Archive Mode

Automatic   archival             Disabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     11

Current log sequence           13

 

SQL> alter   database archivelog;

 

Database altered.

SQL> archive   log list;

Database   log mode              Archive Mode

Automatic   archival             Enabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     11

Next log sequence to archive   13

Current log sequence           13

SQL> alter database open;

 

Database altered.


2、force logging强制记载日志:先检查是否启用,如未则启用之(可在数据库open状况下履行),进程如下:

SQL> select   force_logging from v$database;

 

FORCE_LOGGING

-

NO

 

SQL> alter   database force logging;

 

Database altered.

 

SQL> select   force_logging from v$database;

 

FORCE_LOGGING

-

YES

   

◎为备库预备操控文件

在主库上履行如下操作,生成的文件存放到一个暂时的方位,后边等其它文件都到齐后,再把它移动到适宜的方位。我参阅许多文档,都在创立者玩意,但实践上我用rman仿制办法创立备库,底子就不需求这个操控文件。剖析原因,应该是这样:备库以 startup nomount pfile 办法发动实例,只读取参数文件罢了;主库以rman一同连主备库,以指令“duplicate target database”从主库仿制所需文件,也包含了操控文件。

SQL> alter   database create standby controlfile as '/home/oracle/gdbd.ctl';            

 

Database altered.


◎主库创立standby redo log

尽量与主库现有的日志文件巨细相一致,创立的组不少于体系现有的。


查当时日志组巨细

SQL> select   GROUP#,BYTES/1024/1024 size_M,STATUS,ARCHIVED from v$log;

 

    GROUP#     SIZE_M STATUS           ARC

  -

           1        200 CURRENT          NO

           2        200 INACTIVE         YES

           3        200 INACTIVE         YES

查存储途径

SQL> select   MEMBER from v$logfile;

 

MEMBER

/u01/app/oracle/oradata/GBDB/onlinelog/o1_mf_3_fl1mvv1j_.log

/u01/app/oracle/fast_recovery_area/gbdb/GBDB/onlinelog/o1_mf_3_fl1mvvkc_.log

/u01/app/oracle/oradata/GBDB/onlinelog/o1_mf_2_fl1mvv0q_.log

/u01/app/oracle/fast_recovery_area/gbdb/GBDB/onlinelog/o1_mf_2_fl1mvvfs_.log

/u01/app/oracle/oradata/GBDB/onlinelog/o1_mf_1_fl1mvty3_.log

/u01/app/oracle/fast_recovery_area/gbdb/GBDB/onlinelog/o1_mf_1_fl1mvvgd_.log

 

6 rows selected.

#一个组两个成员,途径不同,巨细内容彻底一致。

[root@oradb162 ~]# diff   /u01/app/oracle/oradata/GBDB/onlinelog/o1_mf_3_fl1mvv1j_.log   /u01/app/oracle/fast_recovery_area/gbdb/GBDB/onlinelog/o1_mf_3_fl1mvvkc_.log

[root@oradb162 ~]# du   /u01/app/oracle/fast_recovery_area/gbdb/GBDB/onlinelog/o1_mf_3_fl1mvvkc_.log

204804    /u01/app/oracle/fast_recovery_area/gbdb/GBDB/onlinelog/o1_mf_3_fl1mvvkc_.log

[root@oradb162 ~]#   du /u01/app/oracle/oradata/GBDB/onlinelog/o1_mf_3_fl1mvv1j_.log

204804    /u01/app/oracle/oradata/GBDB/onlinelog/o1_mf_3_fl1mvv1j_.log

 

创立新的日志组,也存放在两个方位

 

SQL> alter   database add standby logfile group 4   ('/u01/app/oracle/oradata/GBDB/onlinelog/standby01.log','/u01/app/oracle/fast_recovery_area/gbdb/GBDB/onlinelog/stabdy01.log')   size 200M;

 

Database altered.

 

SQL> alter   database add standby logfile group 5   ('/u01/app/oracle/oradata/GBDB/onlinelog/standby02.log','/u01/app/oracle/fast_recovery_area/gbdb/GBDB/onlinelog/stabdy02.log')   size 200M;

 

Database altered.

 

SQL> alter   database add standby logfile group 6   ('/u01/app/oracle/oradata/GBDB/onlinelog/standby03.log','/u01/app/oracle/fast_recovery_area/gbdb/GBDB/onlinelog/stabdy03.log')   size 200M;

 

Database altered.

 

SQL> alter   database add standby logfile group 7 ('/u01/app/oracle/oradata/GBDB/onlinelog/standby04.log','/u01/app/oracle/fast_recovery_area/gbdb/GBDB/onlinelog/stabdy04.log')   size 200M;

 

Database altered.

 

验证所创立的组

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

           7          0          0 YES UNASSIGNED


◎预备初始化参数文件

主库上生成文件,仿制到备库,然后两个参数文件都需求做修正,以符合实践需求。主库上对参数的修正,能够直接在sqlplus里履行alter句子,但这不太稳妥,一旦犯错,简单给自己形成压力。主张修正参数文件前,做个原始备份,然后修正此参数文件。假如将来以此修正过的参数文件生成效劳器参数文件(spfile)出现异常,备份的那个参数文件就是后悔药。


◆履行以下指令生成参数文件:

 SQL>   create pfile='/home/oracle/initgd.ora' from   spfile;

 

File created.

修正修正前做个原始备份

[oracle@oradb162 ~]$ pwd

/home/oracle

[oracle@oradb162 ~]$ cp   initgd.ora initgd.ora.bk20180617

仿制一份参数文件initgd.ini到备库效劳器的/home/oracle目录,等候修正。


◆修正主库参数文件/home/oracle/initgb.ora

在源文件的根底上添加如下内容(一行太长,有些行主动换行了,书写时请留神):

*.db_unique_name='oradb162'

*.fal_client='oradb162'

*.fal_server='oradb95'

*.log_archive_config='DG_CONFIG=(oradb162,oradb95)'

*.log_archive_dest_1='LOCATION=/u01/app/oracle/fast_recovery_area/gbdb/   VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=oradb162'

*.log_archive_dest_2='SERVICE=oradb95   LGWR ASYNC VALID_FOR=(ALL_LOGFILES,PRIMARY_ROLES) DB_UNIQUE_NAME=oradb95'

*.log_archive_dest_state_1='ENABLE'

*.log_archive_dest_state_2='ENABLE'

*.standby_file_management='AUTO'


◆预备库参数文件/home/oracle/initgb.ora

从主库仿制文件,用相同途径。把所需文件放在/home/oracle目录,一来没权限缺乏的问题,而来不会与其它数据文件混在一同,等dataguard运转起来今后,这些文件就根本不再运用,不搅扰后期保护。

备库参数文件/home/oracle/initgb.ora的内容如下,与主库不同的当地,特别用底色做了符号。

[oracle@oradb95 ~]$ more initgb.ora

gbdb.__data_transfer_cache_size=0

gbdb.__db_cache_size=7918845952

gbdb.__inmemory_ext_roarea=0

gbdb.__inmemory_ext_rwarea=0

gbdb.__java_pool_size=67108864

gbdb.__large_pool_size=100663296

gbdb.__oracle_base='/u01/app/oracle'#ORACLE_BASE   set from environment

gbdb.__pga_aggregate_target=3388997632

gbdb.__sga_target=10099884032

gbdb.__shared_io_pool_size=536870912

gbdb.__shared_pool_size=1442840576

gbdb.__streams_pool_size=0

*.audit_file_dest='/u01/app/oracle/admin/gbdb/adump'

*.audit_trail='db'

*.compatible='12.2.0'

*.control_files='/u01/app/oracle/oradata/GBDB/controlfile/o1_mf_fl1mvrh4_.ctl','/u01/app/oracle/fast_recovery_area/gbdb/GBDB/controlfile

controlfile/o1_mf_fl1mvrls_.ctl'

*.db_block_size=8192

*.db_create_file_dest='/u01/app/oracle/oradata'

*.db_name='gbdb'

*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area/gbdb'

*.db_recovery_file_dest_size=8016m

*.diagnostic_dest='/u01/app/oracle'

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

*.local_listener='LISTENER_GBDB'

*.open_cursors=300

*.pga_aggregate_target=3209m

*.processes=640

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=9627m

*.undo_tablespace='UNDOTBS1'

 

*.db_unique_name='oradb95'

*.fal_client='oradb95'

*.fal_server='oradb162'

*.log_archive_config='DG_CONFIG=(oradb162,oradb95)'

*.log_archive_dest_1='LOCATION=/u01/app/oracle/fast_recovery_area/gbdb/   VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=oradb95'

*.log_archive_dest_2='SERVICE=oradb162 LGWR ASYNC   VALID_FOR=(ALL_LOGFILES,PRIMARY_ROLES) DB_UNIQUE_NAME=oradb162'

*.log_archive_dest_state_1='ENABLE'

*.log_archive_dest_state_2='ENABLE'

*.standby_file_management='AUTO'


两台云效劳器(主备库)资源装备、操作体系版别、oracle软件、目录结构彻底相同,因而不需求做日志和数据文件转化。书写参数文件一定要仔细认真,我在这儿踩了个大坑,整个端午节都耗在上边了。

参数文件里面有几个值,要特别留神。db_name、db_unique_name、service,该怎样填?与哪些项目想相关,是有必要弄清楚的。

(1)   db_name:主备库用相同的称号,这儿用的值是gbdb,oracle体系账号环境变量.bash_profile里面界说。

(2)   db_unique:主库与备库不同,主库界说为oradb162,备库为oradb95,与体系的/etc/hosts界说相同,也能够不同。也能够在oracle体系账号环境变量.bash_profile里面也设定一下。

(3)   service:这个最简单引起混杂,个人以为,应该是从tnsname.ora取值,取的是那个net service name,不是代码块里面那个service(代码块顶头的那行,没有括号,而真实的service,运用相同的设置gbdb,与sid也设定得相同了)。

我犯的初级过错就在参数文件的log_archive_dest_1这一行,由于这行很长,转化到下一行了,忧虑不是一个正行,因而运用了删去,未曾留神,把DB_UNIQUE_NAME=oradb162的字符“a”给删掉,变成DB_UNIQUE_NAME=ordb162,装备完今后,死活不能同步数据。检查oracle告警日志,有log1方针找不到的信息,一向以为是监听器监或许是是本地称号效劳tnsnames设置的问题呢。Sqlplus履行 show parameter log_archive_dest能得到一些有用信息。


◆备库效劳器创立所需目录

创立这些目录的依据来自参数文件/home/oracle/initgb.ora,需逐一核对创立。

1、 创立操控文件目录:

[oracle@oradb95 ~]$ mkdir   /u01/app/oracle/oradata/GBDB/controlfile -p

[oracle@oradb95 ~]$ mkdir   /u01/app/oracle/fast_recovery_area/gbdb/GBDB/controlfile -p

2、 创立归档日志目录:

[oracle@oradb95 ~]$mkdir /u01/app/oracle/fast_recovery_area/gbdb -p

这步重复了,在创立操控文件目录时,现已创立过了。

3、 创立审计文件目录:

[oracle@oradb95 ~]$ mkdir -p /u01/app/oracle/admin/gbdb/adump

◆备库效劳器预备暗码文件及操控文件

这两个文件都来自于主库效劳器,直接同步或许仿制过来,留神不要改动文件的属主,即这些文件的属主是oracle和oinstall。

1、 依据参数文件的界说,咱们需求把操控文件别离同步到目录(这个进程其实是多此一举了)/u01/app/oracle/oradata/GBDB/controlfile/,/u01/app/oracle/fast_recovery_area/gbdb/GBDB/controlfile/。

[oracle@oradb95 ~]$  cp gdbd.ctl /u01/app/oracle/oradata/GBDB/controlfile [oracle@oradb95 ~]$  cp gdbd.ctl   /u01/app/oracle/fast_recovery_area/gbdb/GBDB/controlfile/


2、 仿制数据库暗码文件到目录/u01/app/oracle/product/12.2.0/dbs.

[oracle@oradb95 ~]$ cp orapwgbdb /u01/app/oracle/product/12.2.0/dbs


文件坐落什么方位,一定要跟界说及oracle规则相符合。一些人写的文档,不做着重,一顿乱贴;在哪个机器操作,主机命名,不置可否,给初学者带来许多费事和困扰。

实践上,备库有参数文件和暗码文件就够了。假如在履行数据库仿制进程出现异常,极有或许是备库的目录没有被创立,依据提示创立就行。操控文件会主动被仿制过来,因而无需手动搞一遍。


◎仿制数据库到备库

分五个进程,有次序地进行。

◆榜首步:主库以mount参数发动实例:

SQL> startup mount   pfile='/home/oracle/initgb.ora';

ORACLE instance started.

 

Total System Global Area 1.0100E+10 bytes

Fixed Size                 12170040 bytes

Variable Size            1979714760 bytes

Database Buffers         8086618112 bytes

Redo Buffers               21381120 bytes

Database mounted.

参数文件有错的话,换成原始备份的那个,就能够康复到正常状况,比直接sql里改参数要稳妥一些。


◆第二步,备库发动oracle实例。一定要装置好oracle软件,仿制主库的暗码文件到对应的方位,还有那个参数文件,方位随意,能读取就行。

[oracle@oradb95 ~]$ sqlplus / as   sysdba

 

SQL*Plus: Release 12.2.0.1.0 Production on Tue Jun   19 12:59:58 2018

 

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

 

Connected to an idle instance.

 

SQL> startup nomount   pfile='/home/oracle/initgb.ora';

ORACLE instance started.

 

Total System Global Area 1.0100E+10 bytes

Fixed Size                 12170040 bytes

Variable Size              1979714760 bytes

Database Buffers         8086618112 bytes

Redo Buffers               21381120 bytes

留神:主库是mount参数,备库是nomount。nomount不需求运用操控文件。


◆第三步,rman连主备库,这个是在主库上进行的操作:

[oracle@oradb162 oradata]$rman target sys/Oradb_162@oradb162 auxiliary   sys/Oradb_162@oradb95

Recovery Manager: Release 12.2.0.1.0 - Production   on Tue Jun 19 12:46:55 2018

 

Copyright (c) 1982, 2017, Oracle and/or its   affiliates.  All rights reserved.

 

connected to target database: GBDB (DBID=2214703447,   not open)

connected to auxiliary database: GBDB (not   mounted)

留神:衔接字串只要@后边的效劳名不同,其它要相同哟。为了不引起紊乱,也能够简化成“rman target /  auxiliary sys/Oradb_162@oradb95”。


◆第四步,仿制数据库到备库,仍是在主库履行呢,就在rman提示符里面。

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

………很多输出,略…………………


这一步是简单出问题的当地,要留神看输出,最或许的原因就是需求的目录没有手艺创立。别的,假如跟我主意相同(主备目录结构相同、oracle sid也相同),那么用rman仿制时把参数“nofilenamecheck”加上。


◆第五步,主库翻开数据库。

SQL> alter database open;

 

Database altered.

   

◎发动备库,使其与主库同步

SQL> ALTER DATABASE RECOVER   MANAGED STANDBY DATABASE USING CURRENT LOGFILE  DISCONNECT FROM SESSION;

 

Database altered.

仿制完数据库今后,备库把自己切换成mount状况了,因而无需人为干与。

 

◎验证主备同步状况

暴力一点,主库上创立一个表空间,等候顷刻,别离检查两头文件的生成状况。

SQL> create tablespace   WUHUSER  datafile   ‘/u01/app/oracle/oradata/whcrm/wuhuser01.fbf’ size 10G;

登录到到备库,检查目录,看是否主动生成数据文件。

[oracle@oradb95 oradata]$ pwd

/u01/app/oracle/oradata

[oracle@oradb95 oradata]$ ls -al

total 4194332

drwxr-xr-x    4 oracle oinstall       4096 Jun   19 10:43 .

drwxrwxr-x 10 oracle oinstall       4096 Jun 18 14:15 ..

drwxr-xr-x    3 oracle oinstall       4096 Jun   18 22:17 gbdb

drwxr-xr-x    3 oracle oinstall       4096 Jun   18 15:27 GBDB

-rw-r-  1 oracle oinstall 4294975488 Jun 19 13:19   wuhuser01.dbf

一同也检查两头的oracle告警日志,做进一步核实。再增一法,主备库查归档状况。

主库履行

SQL> alter system switch logfile;

 

System altered

SQL> select   SEQUENCE#,FIRST_TIME,NEXT_TIME ,APPLIED from v$archived_log;

…………………………省掉若干…………………

SEQUENCE# FIRST_TIM NEXT_TIME APPLIED

- - -

        46   19-JUN-18 19-JUN-18 NO

        46   19-JUN-18 19-JUN-18 YES

        47   19-JUN-18 19-JUN-18 NO

        47   19-JUN-18 19-JUN-18 YES

        48   19-JUN-18 19-JUN-18 NO

        48 19-JUN-18 19-JUN-18 NO

 

94 rows selected.

备库履行

select SEQUENCE#,FIRST_TIME,NEXT_TIME ,APPLIED   from v$archived_log;

…………………………省掉若干…………………

SEQUENCE# FIRST_TIM NEXT_TIME APPLIED

- - -

        37   19-JUN-18 19-JUN-18 YES

        38   19-JUN-18 19-JUN-18 YES

        39   19-JUN-18 19-JUN-18 YES

        40   19-JUN-18 19-JUN-18 YES

        41   19-JUN-18 19-JUN-18 YES

        42   19-JUN-18 19-JUN-18 YES

        43   19-JUN-18 19-JUN-18 YES

        44   19-JUN-18 19-JUN-18 YES

        45   19-JUN-18 19-JUN-18 YES

        46   19-JUN-18 19-JUN-18 YES

        47 19-JUN-18   19-JUN-18 YES

 

 SEQUENCE#   FIRST_TIM NEXT_TIME APPLIED

- - -

        48 19-JUN-18 19-JUN-18   IN-MEMORY

 

34 rows selected.


Dataguard主备人物切换

为确保可靠性,需求进行主库->备库,备库->主库;原主库->主库,原备库->备库。能变过去也能变回来,方为能手。

切换有操作次序,需先在主库操作,使其变成备库,然后才能够在备库进行切换。

 

◎主库切换成备库

检查主库切换状况:

SQL> select switchover_status   from v$database;

 

SWITCHOVER_STATUS

TO STANDBY

主库变备库:

SQL> alter database commit to   switchover to standby;

 

Database altered.

主库再发动实例(现在人物是standby备库了)

SQL> startup   mount;

ORACLE instance started.

 

Total System Global Area 1.0100E+10 bytes

Fixed Size                 12170040 bytes

Variable Size            1979714760 bytes

Database Buffers         8086618112 bytes

Redo Buffers               21381120 bytes

Database mounted.

SQL> ALTER DATABASE RECOVER   MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

 

Database altered.

   

◎备库变主库

主库活着的话,履行“select switchover_status from v$database;”得到的输出为“NOT ALLOWED”。主库转化成备库完结后,再履行这个指令,这时输出为:

SQL> select switchover_status   from v$database;

 

SWITCHOVER_STATUS

TO PRIMARY

备库人物切换到主库

SQL> alter   database commit to switchover to primary;

 

Database altered.

数据库翻开,这步别忘记了。

SQL> alter database open;

 

Database altered.

重复履行上述进程,又能够把人物复原。为避免意外,我强烈主张他们再添加一个云主机,把oracle装置好,一旦主库毛病,立即把备库提升成主库,一同把预留的那台做数据库效劳,使之成为新的standby备库。发作毛病的主库修正今后,预备好oracle,藏着备用。


老田有话说

最近受邀在AG环亚娱乐专栏出书《负载均衡高手炼成记》,依托自己十余年的IT运维经历,以实践工作经历为根底,介绍不同场景下,负载均衡的完结办法,以及负载均衡的日常保护。
本专栏合适于一向徜徉在运维初级未找到入胜境之门的运维工程师,也合适对负载均衡有爱好了解和学习的技能爱好者。跟着老田学完这个系列课程,不只学常识,更是涨薪、升职、进心仪公司的一大捷径!

《负载均衡高手炼成记》

专栏推行图-大-APP_PC.jpg


版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表AG环亚娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章