当前位置:  数据库>oracle

单实例到RAC 数据库迁移方案之DG方式迁移

    来源: 互联网  发布时间:2017-06-03

    本文导语: 一:环境信息 1)主库(单实例) 主机平台:AIX6.1 数据库版本:11.2.0.3(psu5) 2)备库(部署了crs) 主机平台:AIX6.1 数据库版本:11.2.0.3(psu5) 二:方案背景 由于业务量增加,数据库需要由单实例,改成两节点rac。为了减少停机...

一:环境信息

1)主库(单实例)

主机平台:AIX6.1

数据库版本:11.2.0.3(psu5)

2)备库(部署了crs)

主机平台:AIX6.1

数据库版本:11.2.0.3(psu5)

二:方案背景

由于业务量增加,数据库需要由单实例,改成两节点rac。为了减少停机时间,采用DG方式迁移。

三迁移方案:

1.检查数据库是否支持Data Guard(只有企业版才支持DG)

SQL> select * from v$option where parameter = 'Managed Standby';

PARAMETER VALUE

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

Managed Standby TRUE


2.修改主库为归档模式及force logging状态
1)

SQL> alter database force logging;

Database altered.


2)
SQL> archive log list;
如果未开归档,开启归档模式

alter system setlog_archive_dest_2='location=/archlog/egap';

alter system setlog_archive_format='egap_%t_%s_%r.arch'scope=spfile; --静态参数,重启后生效

shutdown immediate;

startup mount;

alter database archivelog;

alter database open;

archive log list;


3.创建备库pfile文件
在主库上创建pfile,修改,并添加DG备库所有参数,然后传至备库

SQL> create pfile='/data01/pfileegap'from spfile;


1)备库需要添加的参数
DB_UNIQUE_NAME;LOG_ARCHIVE_DEST_1;FAL_SERVER;FAL_CLIENT; STANDBY_FILE_MANAGEMENT=AUTO;DB_FILE_NAME_CONVERT;LOG_FILE_NAME_CONVERT
2)根据pfile中涉及到路径需要提前在备库主机上建好(如果主备库路径不一致要修改)
如主库*.audit_file_dest='/apps/Oracle/admin/egap/adump'
我们在备库需要建 mkdir -p /apps/oracle/admin/egap/adump
cd /apps/oracle/admin
chown -R oracle:oinstall egap
chmod -R 775 egap

改变前参数文件

*.__db_cache_size=27648851968

*.__java_pool_size=67108864

*.__large_pool_size=67108864

*.__oracle_base='/apps/oracle'#ORACLE_BASE setfrom environment

*.__pga_aggregate_target=10334765056

*.__sga_target=30937186304

*.__shared_io_pool_size=0

*.__shared_pool_size=2952790016

*.__streams_pool_size=0

*.audit_file_dest='/apps/oracle/admin/egap/adump'

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='/data01/egap/control01.ctl','/data01/egap/control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='egap'

*.diagnostic_dest='/apps/oracle'

*.log_archive_dest_1='location=/archlog/egap'

*.log_archive_format='egap_%t_%s_%r.arch'

*.open_cursors=300

*.pga_aggregate_target=10307502080

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=30922506240

*.undo_tablespace='UNDOTBS1'


改变后参数文件

*.__db_cache_size=27648851968

*.__java_pool_size=67108864

*.__large_pool_size=67108864

*.__oracle_base='/apps/oracle'#ORACLE_BASE setfrom environment

*.__pga_aggregate_target=10334765056

*.__sga_target=30937186304

*.__shared_io_pool_size=0

*.__shared_pool_size=2952790016

*.__streams_pool_size=0

*.audit_file_dest='/apps/oracle/admin/egapdb/adump'

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='/data01/egapdb/control01.ctl','/data01/egapdb/control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='egap'

*.diagnostic_dest='/apps/oracle'

*.log_archive_dest_1='location=/archlog/egapdb1'

*.log_archive_dest_2='SERVICE=primary LGWR ASYNC

VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

DB_UNIQUE_NAME=egap'

*.log_archive_format='egapdb_%t_%s_%r.arch'

*.open_cursors=300

*.pga_aggregate_target=10307502080

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=30922506240

*.undo_tablespace='UNDOTBS1'

*.DB_UNIQUE_NAME=egapdb

*.FAL_SERVER=primary

*.FAL_CLIENT=standby1

*.STANDBY_FILE_MANAGEMENT=AUTO

*.DB_FILE_NAME_CONVERT='/data01/egap','/data01/egapdb'

*.LOG_FILE_NAME_CONVERT='/data01/egap','/data01/egapdb'

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(egap,egapdb)'


###注意db_file_name_convert和log_file_name_convert参数指定的路径要存在

4)根据修改后的pfile创建备库spfile

export ORACLE_SID=egapdb1

sqlplus / assysdba

create spfile from pfile;


--使用新生成的spfile检查是否能够成功启动实例

4.生成备库的密码文件
scp主库密码文件到备库,并改名
如果主库没有密码文件,需要新建

orapwd file=/oracle/app/oracle/product/v11.2.0.3/db_1/dbs/orapwegap password=oracle entries=5ignorecase=y


--主库密码文件传到备库以后要重启备库

5.配置主备库监听及net服务
1)listener
--主库
一般建库后都会配置监听我们无需再配置
--备库(因为安装了cluster,所以用的是cluster的监听)
lsnrctl status 查看监听文件位置,并在监听文件中加入如下类容

LISTENER_SCAN3=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN3)))) # line added by Agent

LISTENER_SCAN2=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN2)))) # line added by Agent

#LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))) # line added by Agent

LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))) # line added by Agent

ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON # line added by Agent

ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent

ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN2=ON # line added by Agent

ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN3=ON # line added by Agent

--注意集群安装完毕以后,上面部分内容在监听中已经存在

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = /apps/oracle/product/11.2.0.3/db_1)

(PROGRAM = extproc)

)

(SID_DESC =

(ORACLE_HOME = /apps/oracle/product/11.2.0.3/db_1)

(SID_NAME = egapdb1)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.96.1)(PORT = 1521)(IP = FIRST))

)

)

2)tns
主备库tnsnames.ora文件中加入如下部分

primary =

(DESCRIPTION =

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

(CONNECT_DATA =

(SERVER = DEDICATED)

(SID = egap)

)

)

standby1 =

(DESCRIPTION =

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

(CONNECT_DATA =

(SERVER = DEDICATED)

(SID = egapdb1)

)

)

standby2 =

(DESCRIPTION =

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

(CONNECT_DATA =

(SERVER = DEDICATED)

(SID = egapdb2)

)

)


--DG搭建后要主备切换并添加实例

6. 测试网络连接
1)查看监听状态是否正常
lsnrctl status
2) 测试连接串是否能正常连接到指定数据库

tnsping egap

tnsping egapdb1

tnsping egapdb2

sqlplus sys/oracle@egap assysdba

sqlplus sys/oracle@egapdb1 assysdba

sqlplus sys/oracle@egapdb2 assysdba

7. 复制备库
有两种1:rman在线复制 2:rman备份异机恢复
方法1:rman在线复制(不需要备份主库)
此种方式仅适用于ORACLE 11G,可以自动备份datafile,control等文件到备库,在复制过程主库仍可正常运行,但复制过程时间较长,会占用一定的网络资源。
1)将备库启动到nomount状态
export ORACLE_SID=egapdb1
sqlplus / as sysdba
startup nomount;
2)在备库上执行如下命令

rman target sys/oracle@primary auxiliary sys/oracle@standby1 nocatalog

duplicate target database forstandby from active database nofilenamecheck;


--如果主备库文件路径不变,要加nofilenamecheck。登陆时加nocatalog否则会报如下错误:

PLS-00201: identifier 'DBMS_RCVCAT.GETDBID'must be declared


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • 可以有其他两个类的实例同时调用一个java实例的两个方法吗?
  • Bean的作用域及Spring 暴露 Bean实例的方法介绍
  • 请问:类的实例化是怎么一回事?如何进行实例化?
  • Python 3 Tkinter教程之事件Event绑定处理代码实例
  • 万般火急!关于java打印,已经得到printerJob实例,那么怎么通过它得到Pageable实例?
  • Python namedtuple(命名元组)使用实例
  • 类的方法和实例方法,类字段和实例字段有什么不同,在使用上?
  • boost库区间range基本原理及使用实例
  • 既然在定义实例变量的时候可以初始化实例变量的值,那还要构造函数干吗?谢谢!
  • php session_id()函数介绍及代码实例
  • 怎么样判断一个类是否已经被实例化,并关闭这个实例,而且保证系统不退出(详情见内)
  • .NET下 c#通过COM组件操作并导出Excel实例代码
  • 请问在一个servlet里取得一个用singleton模式实现的类实例,那么这个类实例的生命周期是怎样的?
  • java Servlet获取和设置cookie实例代码
  • C#静态变量与实例变量实例分析
  • Mysql Select查询执行流程介绍及实例
  • 实例变量和类变量
  • c++类库Boost::bimap(双向映射)介绍及使用实例
  • 又谁能告诉我实例因该怎么去理解它?????????/
  • OpenStack中compute介绍和compute实例需要注意的问题
  • Keepalived 能配两个虚拟ip吗,匹配两个数据库实例?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,