暂无图片
ORACLE12C RAC升级19C方案(DG方式)
最近更新:2022-08-22 17:42:34

适用范围

ORACLE12.1.0.2 RAC DG方式升级至19C RAC

方案概述

1.注意事项

迁移前,需收集好所有数据库账号的密码; 正式迁移前一天起,禁止新创建数据库用户,如必须创建,务必告之; 正式迁移当天,前后台均需停止大业务操作,避免长事务出现(如JOB、前台业务等); 从DG搭配开始,取消新旧库之间的网络防火墙所有限制; 迁移期间将清空回收站; 第一次全量时,每隔几小时做一次归档备份 不同客户端对19c的连通性测试需提前完成。 归档空间充足

2.环境基本情况

|配置类型|旧环境|新环境| |-|-|-| |内存|46G|content3| |CPU(逻辑)|24|content3| |操作系统版本|Redhat6.8|content3| |存储|HDD|HDD| |网络|千兆网络|千兆网络| |是否跨机房|否|否| |节点|2|2| |数据库版本|12.1.0.2|19.10.0.0.0| |psu|12.1.0.2.171017|19.10.0.0.0.210119| |数据量|50G|50G|

实施步骤

1.新环境安装

1.1配置oracle用户环境变量

增加.bash_profile12c 新的ORACLE_HOME、ORACLE_BASE cp .bash_profile .bash_profile12c vi.bash_profile12c添加以下内容

export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/app/u01/oracle/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1
export ORACLE_SID=12cdb1
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
umask 022
set -o vi

注:19c环境为2个节点安装,12c环境只需要安装在1个节点即可。 目标环境一节点安装12.1.0.2 db soft,db补丁同源库。

1.2目标端准备目录

mkdir -p /app/u01/oracle/oracle/product/12.1.0/db_1
chown -R oracle:oinstall /app/u01
chmod -R 775 /app/u01/oracle 

1.3安装

source .bash_profile12c 
cd /app/u01/soft/
cd database/
./runInstaller 
Starting Oracle Universal Installer... 
执行root.sh

1.4安装完成后进行补丁应用

/app/u01/oracle/oracle/product/12.1.0/db_1/OPatch/opatch apply -oh /app/u01/oracle/oracle/product/12.1.0/db_1  -local /app/u01/soft/26635880/26392192
/app//u01/oracle/oracle/product/12.1.0/db_1/OPatch/opatch apply -oh /app/u01/oracle/oracle/product/12.1.0/db_1  -local /app/u01/soft/26635880/26717470

2. 19C环境参数调整

ASM实例参数调整

alter system set "_asm_allow_older_clients"=true scope=spfile sid='*';

重启asm实例生效。升级完成后记得还原 参考: 12.2 fails with ORA-15372: Client version string not supported by Oracle ASM (Doc ID 2299524.1) image.png 19c asm磁盘组创建时,磁盘组兼容参数应符合兼容12.1.0.2 该参数不能设置的太高,否则12c的db发现不了asm磁盘 image.png 设置为12.1.0.2

数据库实例参数调整 直到目标环境正式对外服务前,确保job_queue_processes=0

3.DG搭建

duplicate在线初始化。

3.1旧环境开启force logging

SQL> select force_logging from v$database;
FOR
---
NO
如果为no则要开启,如果为yes则不需要

开启
SQL> alter database force logging;
Database altered.
确认
sql> select force_logging from v$database;
for
---
YES

3.2主库参数调整

alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(12cdb,19cdb)' scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=12cdb' scope=both sid='*';

alter system set LOG_ARCHIVE_DEST_2='SERVICE=xjnxdbadg LGWR ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=19cdb' scope=both sid='*';

--设置本地归档正常
alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE scope=both sid='*';
--设置主库defer 参数来暂停主库对备库的日志传输
alter system set LOG_ARCHIVE_DEST_STATE_2=defer scope=both sid='*';

--fal_server设置为备库的service name
alter system set FAL_SERVER=19cdb scope=both sid='*';
-- fal_client设置为主库的service name,
alter system set FAL_CLIENT=12cdb scope=both sid='*';
备库12c环境创建监听
su – oracle
cd $ORACLE_HOME/network/admin
vi listener.ora

添加SRL

SQL> select GROUP#,THREAD#,MEMBERS,bytes/1024/1024 as MB from v$log;

    GROUP#    THREAD#    MEMBERS         MB
---------- ---------- ---------- ----------
         1          1          1         50
         2          1          1         50
         3          1          1         50
SQL> alter database add standby logfile group 5 size 50M;

Database altered.

SQL> alter database add standby logfile group 6  size 50M;

Database altered.

SQL> alter database add standby logfile group 7 size 50M;

Database altered.

SQL> alter database add standby logfile group 8 size 50M;

Database altered.

SQL> alter database add standby logfile group 9 size 50M;

Database altered.


LISTENERADG =
(DESCRIPTION_LIST =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <19cdbIP>)(PORT = 1522))
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
  )
)

SID_LIST_LISTENERADG =
(SID_LIST =
  (SID_DESC =
    (GLOBAL_DBNAME = 19cdb)
    (ORACLE_HOME = /app/u01/oracle/oracle/product/12.1.0/db_1)
    (SID_NAME = 19cdb1)
  )
)

--启动备库静态监听

lsnrctl start listeneradg

两节点 --主库中增加访问备库静态监听的$ORACLE_HOME/network/admin/tnsnames.ora

19cdb =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <19cdbIP>)(PORT = 1522))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = 19cdb)
      (UR=A)
    )
  )

--备库增加访问主备库的tns

vi tnsnames.ora
12cdb =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <19cdbIP>)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = 12cdb)
    )
  )
  
19cdb =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <19cdbIP>)(PORT = 1522))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = 19cdb)
      (UR=A)
    )
  )

--将主库密码文件传输到备库密码文件路径

su - grid
asmcmd
cp +datadg/12CDB/PASSWORD/pwd12cdb.256.1080217543 /app/oracle/12.1.0/grid/dbs
scp /app/oracle/12.1.0/grid/dbs/pwd12cdb.256.1080217543 grid@10.1.74.103:/app/oracle/19c/grid/dbs

scp /app/oracle/12.1.0/grid/dbs/pwd12cdb.256.1080217543 grid@10.1.74.104:/app/oracle/19c/grid/dbs

 mv pwd12cdb.256.1080217543  /app/oracle/oracle/product/19c/dbhome_1/dbs/
 mv pwd12cdb.256.1080217543 orapw19cdb1
  mv pwd12cdb.256.1080217543 orapw19cdb2
  chown oracle:oinstall orapw19cdb1
  chown oracle:oinstall orapw19cdb2

备库创建pfile文件

vi /app/oracle/oracle/product/12.1.0/db_1/dbs/init19cdb1.ora
*.cluster_database=false
*.db_name='12cdb'
*.db_unique_name='19cdb'

创建审计目录 (两节点)

mkdir -p /app/oracle/oracle/admin/19cdb/adump

主库一节vi duplicate_xjnxdb.sql

duplicate target database
for standby
from active database
DORECOVER
spfile
set db_unique_name='19cdb'
......