Oracle 11g DG 搭建
- 前言
- 手册整体配置流程说明
- 背景描述
- 部署准备
- 操作步骤
1. 前言
1.1手册内容
OracleDG迁移部署 SOP手册,本文介绍如何使用OracleDG 迁移数据库。
1.2手册的目的
本手册编写目的是为了后续在迁移上云过程做一个指导。
1.3手册包含范围
本手册包含范围为本次项目中oracleDG部署文档。 适合的操作系统(本次项目迁移系统):
- centos. 7.6
- Centos 7.4
- Centos 7.5
- Centos 7.3
2. 手册整体配置流程说明
| 大模块 | 小模块 | 备注 |
|---|---|---|
| 准备阶段 | 停库备份 | |
| 准备阶段 | DG配置文件调整 | |
| 部署启动阶段 | 配置DG模式 | |
| 完成优化阶段 |
3. 背景描述
本次SOP手册是在如下环境中完成,XX本地服务器信息与XX上信息如下:
| 源环境信息 | 服务器环境 | 操作系统 | 公网 | 备注 |
|---|---|---|---|---|
| x86服务器 | centos7.3 | 15M | ||
| 目标端环境信息 | 服务器环境 | 操作系统 | 公网 | 备注 |
| 华为云服务器 | centos7.3 | 按量300M |
4. 部署准备
4.1. 前提准备条件
依据线下oralce服务器配置开通云上机器,并保证云上线下网络通过VPN打通
5. 操作步骤
5.1. Primary 数据库配置及相关操作
5.1.1. 确认primary库处于归档模式
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 2
Next log sequence to archive 4
Current log sequence 4
#若不是归档模式需要开启:
SQL>shutdown immediate
startup mount
alter database archivelog;
archive log list;
5.1.2. 将primary库置为FORCE LOGGING 模式
SQL> alter database force logging;
SQL> select force_logging from v$database;
FOR
---
YES
Database altered.
5.1.3. 添加STANDBY日志文件
alter database add standby logfile group 4 ('/u01/app/oracle/oradata/cjkmid/redo04.log') size 50m;
alter database add standby logfile group 5 ('/u01/app/oracle/oradata/cjkmid/redo05.log') size 50m;
alter database add standby logfile group 6 ('/u01/app/oracle/oradata/cjkmid/redo06.log') size 50m;
alter database add standby logfile group 7 ('/u01/app/oracle/oradata/cjkmid/redo07.log') size 50m;
查看创建添加的STANDBY日志文件
5.1.4. 创建primary库客户端初始化参数文件
1).创建主库中的pfile
SQL> create pfile from spfile;
File created.
2).备份到backup目录用于创建备库的pfile
[oracle@rac1 dbs]$ pwd
/u01/app/oracle/product/11.2.0/db_1/dbs
[oracle@rac1 dbs]$ cp ./initorcl.ora /home/oracle/backup/
3).修改后主库pfile中内容如下
orcl.__db_cache_size=1191182336
orcl.__java_pool_size=16777216
orcl.__large_pool_size=16777216
orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=536870912
orcl.__sga_target=1610612736
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=369098752
orcl.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/flash_recovery_area/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=4070572032
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.log_archive_format='%t_%s_%r.dbf'
*.open_cursors=300
*.pga_aggregate_target=536870912
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=1610612736
*.undo_tablespace='UNDOTBS1'
#################################################################
#Parameters for Primary Database.
#################################################################
*.DB_NAME='cjkmid'
*.DB_UNIQUE_NAME= cjkmid
*.LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
*.LOG_ARCHIVE_CONFIG=''
*.LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME= cjkmid'
*.LOG_ARCHIVE_DEST_2='SERVICE= cjkmiddg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME= cjkmiddg'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
*.standby_file_management=auto
#################################################################
#Parameters which using for switch over from Primary to Standby.
#################################################################
*.FAL_SERVER= cjkmiddg
*.FAL_CLIENT= cjkmid
*.DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/cjkmid','/u01/app/oracle/oradata/cjkmid'
*.log_file_name_convert='/u01/app/oracle/oradata/cjkmid','/u01/app/oracle/oradata/cjkmid'
*.standby_archive_dest='/u01/app/oracle/archivelog'
4).通过pfile 重建spfile
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> create spfile from pfile='initcjkmid.ora';
File created.
5).修改监听配置文件
vim /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = cjkmid)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(GLOBAL_DBNAME = cjkmid)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.19.1.53)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
6).配置tnsnames.ora文件
[oracle@rac1 admin]$ pwd
/u01/app/oracle/product/11.2.0/db_1/network/admin
# tnsnames.ora Network Configuration File: D:\app\Administrator\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
CJKMID =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.19.1.53)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cjkmid)
)
)
CJKMIDDG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.66.53)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cjkmiddg)
)
)
7).启动数据库,测试
tnsping cjkmid
开启数据库,启动失败
解决:参数配置多了空格
5.1.5. rman备份数据库,在闪回区中
$ rman tartget/
backup database plus archivelog;
backup current controlfile for standby;
执行这两句后会在对应的闪回区(默认在/u01/app/oracle/flash_recovery_area下)
SQL>alter system set db_recovery_file_dest_size=50G scope=both;
RMAN>backup database plus archivelog;
RMAN>backup current controlfile for standby;
5.2. Standby数据库配置及相关操作
5.2.1. 创建所需目录(注意OMF管理的文件)
mkdir -p /u01/app/oracle/admin/cjkmid/adump
mkdir -p /u01/app/oracle/admin/cjkmid/dpdump
mkdir -p /u01/app/oracle/diag/rdbms/cjkmid/cjkmiddg/trace
mkdir -p /u01/app/oracle/diag/rdbms/cjkmid/cjkmiddg/cdump
mkdir -p /u01/app/oracle/fast_recovery_area
mkdir -p /u01/app/oracle/archivelog
mkdir -p /u01/app/oracle/oradata/cjkmid
5.2.2. 复制数据文件到standby库对应的目录
从主数据库服务器上拷贝文件
1).拷贝闪回区内容
scp -r /u01/app/oracle/fast_recovery_area/* root@172.20.66.53:/u01/app/oracle/fast_recovery_area/
2).拷贝参数文件
scp -r /u01/app/oracle/product/11.2.0/db_1/dbs/initcjkmid.ora root@172.20.66.53:/u01/app/oracle/product/11.2.0/db_1/dbs/initcjkmid.ora
3).拷贝密码文件
scp /u01/app/oracle/product/11.2.0/db_1/dbs/orapwcjkmid root@172.20.66.53:/u01/app/oracle/product/11.2.0/db_1/dbs/orapwcjkmid
4).拷贝监听文件和tns文件
scp /u01/app/oracle/product/11.2.0/db_1/network/admin/*.ora root@172.20.66.53:/u01/app/oracle/product/11.2.0/db_1/network/admin/
5.2.3. 修改相应配置
1).修改监听配置文件
[oracle@stuaapp02 admin]$ vi listener.ora
2).修改TNS配置文件
此处保持不变
3).重启监听服务
lsnrctl stop
lsnrctl start
4).standby的初始化参数如下
orcl.__db_cache_size=1191182336
orcl.__java_pool_size=16777216
orcl.__large_pool_size=16777216
orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=536870912
orcl.__sga_target=1610612736
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=369098752
orcl.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/flash_recovery_area/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=4070572032
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.open_cursors=300
*.pga_aggregate_target=536870912
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=1610612736
*.undo_tablespace='UNDOTBS1'
#################################################################
#Parameters for Standby Database.
#################################################################
*.DB_NAME='cjkmid'
*.DB_UNIQUE_NAME=cjkmiddg
*.LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
*.LOG_ARCHIVE_CONFIG=' '
*.DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/cjkmid','/u01/app/oracle/oradata/cjkmid'
*.LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/cjkmid','/u01/app/oracle/oradata/cjkmid'
*.STANDBY_ARCHIVE_DEST='/u01/app/oracle/archivelog'
*.FAL_SERVER=cjkmid
*.FAL_CLIENT=cjkmiddg
*.STANDBY_FILE_MANAGEMENT=AUTO
#################################################################
#Parameters which using for switch over from Standby to Primary.
#################################################################
*.LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=cjkmiddg'
*.LOG_ARCHIVE_DEST_2='SERVICE=cjkmid LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=cjkmid'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
5).通过该pfile 创建spfile
SQL> create spfile from pfile= 'initcjkmid.ora';
File created.
5.2.4. 恢复数据库
启动备库到nomount
startup nomount
[oracle@dg2 admin]$ rman target sys/Qyoracle@cjkmid auxiliary /
RMAN> duplicate target database for standby nofilenamecheck;
RMAN> exit
-
磁盘空间不足,需要扩容
-
扩容后重新执行恢复
-
关闭数据库
shutdown immediate
5.2.5. 启动redo 应用
startup nomount;
alter database mount standby database;
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
6. 验证
- 主库
SQL> archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination /u01/app/oracle/archivelog Oldest online log sequence 73 Next log sequence to archive 75 Current log sequence 75 - 备库
SQL> archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination /u01/app/oracle/archivelog Oldest online log sequence 70 Next log sequence to archive 0 Current log sequence 75
7. 切换到只读模式
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> alter database open read only;
Database altered.
7.1.1. 切换到同步模式(不需要停库)
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
Comments