从11g到18c - Oracle Database跨平台跨版本升级迁移和整合
Posted 甲骨文云技术
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从11g到18c - Oracle Database跨平台跨版本升级迁移和整合相关的知识,希望对你有一定的参考价值。
2013年,Oracle Database 12c发布,带来一系列包括Multitenant,In-Memory在内的革命性数据库技术突破。其中Database 12c的Multitenant架构,允许单个容器数据库(Container Database)以多租户架构容纳多个可插拔数据库(Pluggable Database),实现数据库的隔离和整合,且无需更改应用。2016年,Oracle Database 12c Release 2发布,功能进一步扩展,性能和稳定性进一步提升。2018年2月,Oracle发布Oracle Database 18c,数据库跨入一个新时代。
Oracle Database 18c是Oracle数据库遵循年度发布的第一个版本,对应Oracle Database 12c Release 2 12.2.0,Oracle Database 18c也是下一代人工智能驱动的自治数据库(Oracle Autonomous Database)的基石。
随着IT向DT的演变,现代企业从过去的数据支撑业务,演进到数据推动业务,甚至数据牵引业务。越来越多的企业将老旧版本的Oracle数据库升级整合到新版本Oracle数据库。
某用户有多个业务的中小型Oracle数据库,运行于Windows/Linux等不同的操作系统,包括10g, 11g的不同小版本。随着业务的发展,数据库数目也逐渐增加。众多不同版本,不同平台的数据库,给管理和运维带来挑战。
用户计划将现有的若干个分散独立的数据库,升级、整合到Oracle Database 18c。提升数据库基础平台运行效率,提高企业数据管理能力,为下一步建设企业大数据平台打下坚实基础。
作为多个数据库升级整合的先导PoC过程,本操作将某业务数据库 (业务名称163),从Oracle 11g单机版升级、迁移到Oracle 18c RAC数据库多租户云平台。
Oracle数据库的升级方法较多,具体请参考“甲骨文云技术”官方微信文章“Oracle数据库升级的六韬之术”。鉴于本次操作的数据库的数据量不是很大以及跨平台跨版本的需求,本次迁移选用expdp/impdp工具。
本文略过Oracle Database 18c下载及安装过程,重点在数据的迁移和验证。有关Oracle Database 18c下载及安装的更多信息,请参考如下链接:
https://docs.oracle.com/en/database/oracle/oracle-database/18/index.html
本次操作如下图所示:安装部署Oracle Database 18c多租户数据库云平台,安装部署数据库管理平台Oracle Enterprise Manger 13c,采用expdp/impdp工具将用户多个业务中的一个业务数据库从Windows 2003环境下的Oracle Database 11g迁移升级到Linux环境下的Oracle Database 18c,成为Oracle 18c的一个可插拔数据库。
源数据库 |
目标数据库 |
|
数据库版本 |
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0,单机版 |
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0,RAC, |
操作系统 |
Windows 2003 32位 |
CentOS 7 64位 |
硬件平台 |
x86服务器,VMware虚拟机,2 CPU, 4G内存 |
x86服务器,2*10 core Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz,128GB内存 |
字符集 |
SIMPLIFIED CHINESE_CHINA.ZHS16GBK |
ZHS16GBK(CDB字符集) |
临时数据存放目录 |
D:\APP\ADMINISTRATOR\ORADATA\dumppath |
/u01/backup |
源数据库表空间及数据量大小:
SQL> select tablespace_name, sum(bytes)/1024/1024 fromdba_data_files group by tablespace_name;
源数据库数据文件信息:
SQL> select file_name,bytes/1024/1024||'M' "size" from dba_data_files;
1.源数据库操作
1.1源库建立临时目录,存放导出数据
a)源库操作系统创建目录
‘D:\APP \ADMINISTRATOR \ORADATA\dumppath’
b) 源数据库创建对应的路径名变量
connect as sysdba
SQL> create directory dump-path as 'D:\APP\ADMINISTRATOR \ORADATA\dumppath';
1.2全库导出数据
源库包括多个schema,为简便计,采用全库导出。
expdp system/passwd directory=dump-path full=y dumpfile=dbfull.dmp logfile=dbfull.log version=’ 11.2.0.1.0’
1.3导出的数据文件传送到目标数据库所在服务器
在目标库的RAC节点1,创建目录,并给予相应的权限。
[root@rac18c-n1 ~]# mkdir /u01/backup
[root@rac18c-n1 ~]# chown -R oracle:oninstall /u01/backup
从源数据库服务器,将dbfull.dmp文件,ftp传至目标数据库服务器RAC节点1的/u01/backup 目录。
2.目标数据库操作
2.1在目标数据库建立对应的PDB
采用dbca建库,创建CDB和PDB,PDB名称为PDB163。
CDB字符集:ZHS16GBK。
2.2 目标数据库PDB163创建对应目录
connect as sysdba
a) SQL> create directory dump_path as '/u01/backup';
b) SQL> select * from dba_directories;
SYS
DUMP_PATH
/u01/backup
c) 授权给system用户
SQL> grant read,write on directory dump_path to system;
2.3目标数据库PDB163添加tnsnames条目
a)在目标数据库RAC节点1为PDB163添加tnsnames
tnsnames文件当前内容
[oracle@rac18c-n1 admin]$ more tnsnames.ora
# Generated by Oracle configuration tools.
RAC_CDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac18c-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac_cdb)
)
)
添加PDB163的对应tnsnames条目
PDB163=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac18c-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdb163)
)
)
测试新增tnsnames条目的有效性。
[oracle@rac18c-n1 admin]$ tnsping pdb163
…
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = rac18c-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME =
pdb163)))
OK (0 msec)
b) 在目标数据库RAC节点2重复上述操作,为PDB163添加tnsnames条目。
c) 在目标库两个RAC节点上用sqlplus验证tns连接的有效性。
[oracle@rac18c-n1 ~]$ sqlplus system/passwd@pdb163
[oracle@rac18c-n2 ~]$ sqlplus system/passwd@pdb163
2.4目标数据库导入数据
在目标库PDB163创建表空间,名为”data”。
SQL> create tablespace data datafile size 32000m AUTOEXTEND ON NEXT 1000M;
impdp导入数据。
[oracle@rac18c-n1 ~]$impdp system/passwd@rac18c-n1-vip:1521/PDB163 parallel=4 full=y directory=dump_path dumpfile=dbfull.dmp logfile=0326_new.log cluster=N remap_tablespace=gcgz:data,bill:data,zctz:data,HUANGM:data version=’ 11.2.0.1.0’
注1:impdp采用remap参数,将源数据库的多个表空间合并为目标库的一个表空间data.
注2:system用户通过节点1的vip连接到当前节点而不是通过scan IP同时连接两个节点,因为本例中源数据库expdp出来的dump文件仅存放在当前节点。
3.迁移验证
3.1检查日志文件
检查expdp和impdp操作的日志文件,查看出错/警告信息。
3.2对比源库与目标库,查看用户、表、视图、序列、索引等。
找出源数据库的用户。
SQL> select username from dba_users;
在源库和目标库,对每个用户的表、视图、序列、索引进行比较。
SQL> select table_name from user_tables order by 1;
SQL> select view_name from user_views order by 1;
SQL> select sequence_name from user_sequences order by 1;
SQL> select index_name from user_indexs order by 1;
3.3业务验证
业务软件连接新数据库,进行数据库迁移的最终验证。
本文通过一个实际案例PoC过程,演示了使用Oracle expdp/impdp工具将Windows平台Oracle Database 11g R2单实例数据库迁移至Linux平台Oracle Database 18c可插拔数据库,实现了数据库的升级、迁移和整合。
该方法也适用于将用户本地数据中心的Oracle数据库迁移至Oracle公有云。公有云上的目标数据库版本可以选择Oracle Database 12c或者Oracle Database 18c。
编辑: Henry
以上是关于从11g到18c - Oracle Database跨平台跨版本升级迁移和整合的主要内容,如果未能解决你的问题,请参考以下文章
Oracle数据库安装配置详细教程汇总(含11g12c18c19c21c)