Oracle安装和dataguard

1 准备工作
 
Host IP
DB_NAME
DB_UNIQUE_NAME
Archive_Dest
主库
172.20.20.150
orcl
pdunq
/data/oracle/archivelog/
备库
172.20.20.151
orcl
pdunq_dg
/data/oracle/archivelog/

保护模式:默认最大性能模式(MAXIMUM PERFORMANCE)
在primary搭建数据库软件,建立lsnrctl监听,采用dbca搭建实例,在standby上搭建数据库软件,建立监听,但是不需要采用dbca建立实例。

2 数据库安装
主机名修改
#/etc/sysconfig/network   

#/etc/hosts
解决系统依赖关系
yum -y install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc* ksh glibc-common glibc-devel gcc gcc-c++ libaio-devel libaio libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel pdksh numactl-devel glibc-headers

创建用户
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle

配置系统环境变量(source /home/oracle/.bash_profile)
#vi /home/oracle/.bash_profile
export ORACLE_BASE=/data/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2/db_1

export ORACLE_SID=orcl

export ORACLE_OWNER=oracle

export ORACLE_TERM=vt100

export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"

export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin

export PATH=$ORACLE_HOME/bin:$PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib

export LD_LIBRARY_PATH

CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib

export CLASSPATH

PATH=$PATH:/usr/sbin; export PATH

PATH=$PATH:/usr/bin; export PATH

ORA_NLS33=$ORACLE_HOME/nls/admin/data

修改系统内核参数(sysctl -p)
#vi /etc/sysctl  
kernel.sem =   100
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
net.ipv4.tcp_fin_timeout = 10
kernel.threads-max = 143360

vi /etc/security/limits.conf
oracle soft nproc 204700
oracle hard nofile 65536
* soft memlock 41943040
* hard memlock 41943040
* soft nofile 265535
* hard nofile 265535

两种安装方式
-新建dbca文件静默安装
-图形界面xmanager远程
yum groupinstall "X Window System" "Desktop" -y

DISPLAY=10.255.1.6:0.0; export DISPLAY

./data/soft/database/runInstaller
下一步提示安装

数据库建库(dbca)----->备库不需要

建立监听(netca)
具体参考链接 http://www.jb51.net/article/53769.htm
------------------------------------------------------------

3 dataguard配置
主库打开Forced Logging 模式

强制归档 alter database force logging;

添加standby文件
alter database add standby logfile group 4 ('/home/oradata/powerdes/redo_dg_021.log') size 20M;
alter database add standby logfile group 5 ('/home/oradata/powerdes/redo_dg_022.log') size 20M;
alter database add standby logfile group 6 ('/home/oradata/powerdes/redo_dg_023.log') size 20M;
alter database drop standby logfile group 4;
alter database drop standby logfile group 5;
alter database drop standby logfile group 6;

select * from v$logfile order by 1;

准备参数文件,生成pfile
SQl>create pfile from spfile;
File created.
SQL>shutdown immediate

修改pfile,先备份文件
cp /data/oracle/product/11.2/db_1/dbs/initorcl.ora /data/oracle/product/11.2/db_1/dbs/initorcl.orabak

--->主要修改如下红色地方
orcl.__db_cache_size=1459617792
orcl.__java_pool_size=16777216
orcl.__large_pool_size=16777216
orcl.__oracle_base='/data/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=1476395008
orcl.__sga_target=2197815296
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=671088640
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/flash_recovery_area/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='/data/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=4070572032
*.db_unique_name='pdunq'
*.diagnostic_dest='/data/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.FAL_CLIENT='pdunq'
*.FAL_SERVER='pdunq_dg'
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(pdunq_dg,pdunq)'
*.LOG_ARCHIVE_DEST_1='LOCATION=/data/oracle/archivelog/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=pdunq'
*.LOG_ARCHIVE_DEST_2='service=pdunq_dg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pdunq_dg'
*.LOG_ARCHIVE_DEST_STATE_1='ENABLE'
*.LOG_ARCHIVE_DEST_STATE_2='ENABLE'
*.log_archive_format='%t_%s_%r.arc'
*.memory_max_target=4000000000
*.memory_target=3660944384
*.open_cursors=300
*.processes=3000
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='auto'
*.undo_tablespace='UNDOTBS1'

生成spfile,配置生效
create spfile from pfile;
启动
SQL>startup

修改监听文件
vi /data/oracle/product/11.2/db_1/network/admin/listener.ora

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = KM1818-databasebak)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /data/oracle

SID_LIST_LISTENER =
  (SID_LIST =
                (SID_DESC =
                  (GLOBAL_DBNAME = orcl)
                  (ORACLE_HOME =/data/oracle/product/11.2/db_1)
                  (SID_NAME = orcl)
                )
  )

修改tns配置文件
vi /data/oracle/product/11.2/db_1/network/admin/tnsnames.ora
ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = KM1818-databasebak)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
pdunq  =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)( HOST = 172.20.20.150 )(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
pdunq_dg  =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)( HOST = 172.20.20.151 )(PORT = 1521))
    )
    (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = orcl)
    )
  )

监听服务重启
lsnrctl stop/start/status
primary上配置最大可用模式:
SQL>startup
SQL>alter database set standby database to maximize availability;

创建主库的密码文件,没有则建立。可以OS验证的方式登录
 orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=iamwangnc entries=5

备份数据库
backup database plus archivelog;
backup current controlfile for standby;
exit;
备份结束后会在闪回区产生备份文件( /data/oracle/flash_recovery_area/ORCL)

主库上建立备库控制文件(控制文件通常需要有多份,手工将文件复制几份)
$ sqlplus '/as sysdba'
SQL> alter database create standby controlfile as '/data/oracle/stdby_control01.ctl';
 cp sdtby_control01.ctl stdby_control02.ctl

拷贝文件到备机上(包括密码文件;控制文件;监听文件;rman备份文件)
scp -r ./* 172.20.20.151:/data/oracle/flash_recovery_area/
scp -r * 172.20.20.151:/data/oracle/product/11.2/db_1/dbs/
scp -r * 172.20.20.151:/data/oracle/product/11.2/db_1/network/admin/
scp -r * 172.20.20.151:/data/oracle/product/11.2/db_1/dbs/orapworcl
---------------------------------------------------------------------------------------
备机上操作
listener.ora  tnsnames.ora(配置如下)
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)( HOST = i-rzc0r96p )(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /data/oracle

SID_LIST_LISTENER =
  (SID_LIST =
                (SID_DESC =
                  (GLOBAL_DBNAME = orcl)
                  (ORACLE_HOME =/data/oracle/product/11.2/db_1)
                  (SID_NAME = orcl)
                )
  )


ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = i-rzc0r96p)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
pdunq =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.20.150)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
pdunq_dg =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.20.151)(PORT = 1521))
    )
    (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = orcl)
    )
  )

修改参数文件
orcl.__db_cache_size=1493172224
orcl.__java_pool_size=16777216
orcl.__large_pool_size=16777216
orcl.__oracle_base='/data/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=1476395008
orcl.__sga_target=2197815296
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=637534208
orcl.__streams_pool_size=0
*.audit_file_dest='/data/oracle/admin/orcl/adump'
*.audit_trail= 'db'  (如果备库将来要打开成只读模式,需要确认audit_trail参数不是含db,应该设成os或none)
*.compatible='11.2.0.0.0'
*.control_files='/data/oracle/stdby_control01.ctl','/data/oracle/stdby_control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='/data/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=4070572032
*.DB_UNIQUE_NAME='pdunq_dg'
*.diagnostic_dest='/data/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.FAL_CLIENT='pdunq'
*.FAL_SERVER='pdunq_dg'
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(pdunq_dg,pdunq)'
*.log_archive_dest_1='location=/data/oracle/archivelog'
*.LOG_ARCHIVE_DEST_2='service=pdunq_dg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pdunq_dg'
*.LOG_ARCHIVE_DEST_STATE_1='ENABLE'
*.LOG_ARCHIVE_DEST_STATE_2='ENABLE'
*.log_archive_format='%t_%s_%r.arc'
*.memory_max_target=4000000000
*.memory_target=3660944384
*.open_cursors=300
*.processes=3000
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='auto'
*.undo_tablespace='UNDOTBS1'

监听重启,查看状态
重启备库生效
create spfile from pfile;

启动物理备库
SQL> startup nomount
SQL> alter database mount standby database;

备库做rman恢复
$ rman target /       (要求主备库rman备份文件的存放路径和文件名一致)
RMAN> restore database;
##RMAN> restore archivelog all;
介质恢复后,rman 自动将standby 数据库打开到mount 状态。

启动redo 应用
SQL> alter database recover managed standby database disconnect from session;

--------------------------------------------------------------------------------------
查看同步情况
首先连接到primary 数据库
SQL> show parameter instance_name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string jssweb
SQL> alter system switch logfile;
系统已更改。
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
              22

连接到standby 数据库
SQL> show parameter instance_name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string jsspdg
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
22

常用维护SQL命令
启动Data Guard 后,查看同步情况::
SQL> select error from v$archive_dest;

用SQL 查看了一下同步正常:
SQL> select sequence#,applied from v$archived_log;

查看备库接收、应用redo数据的过程
select message from v$dataguard_status;

主库归档:
SQL>ALTER SYSTEM SWITCH LOGFILE;    --对单实例数据库或RAC中的当前实例执行日志切换
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;    --对数据库中的所有实例执行日志切换

V$STANDBY_LOG备用数据库的备用日志的数量与当前状态等信息
SELECT* FROM V$STANDBY_LOG;

备库启动归档日志应用
alter database recover managed standby database disconnect from session;

备库停止归档日志应用
alter database recover managed standby database cancel;

查看备库是否和主库同步,查询V$archive_dest_status视图
select archived_thread#,archived_seq#,applied_thread#,applied_seq# from v$archive_dest_status;

监控日志传送状态,V$archive_gap记录当前备库mrp进程恢复需要的但是还没有传到备库的日志更简单的是查看主备库的归档日志的序列号相差多少
select* from v$archive_gap;

查看当前主机的运行状态
select switchover_status,database_role,protection_mode from v$database

备库端查看RFS(RemoteFile Service)接收日志情况和MRP应用日志同步主数据库的情况(Physical Standby Database Only)  记录当前备库的一些进程情况和进程ID
select process,status,thread#,sequence#,block#,blocks from v$managed_standby;





  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白正在飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值