Oracle数据泵跨大版本迁移数据库
Oracle数据泵跨大版本迁移数据库
- source库导出元数据
- 传输dump和数据文件到target库
- target库导入数据库
- 迁移后的工作
🦈场景:将测试环境中一台Oracle 11g数据库迁移到另一台新搭建的19c数据库中。
🤔分析:由于是跨数据库大版本,无法通过RMAN进行备份恢复来迁移数据库。数据库整体数据量较小,约1T左右,source库有充足的停机时间,因此可以采用数据泵技术来迁移数据库。
- source库版本:11.2.0.4
- target库版本: 19c
- OS版本: RHEL 7.6
- 数据量:1.2T
source库导出元数据
⭐️Tolist-1. 在source库上,修改用户自定义表空间为只读模式,导出数据库系统数据。
设置用户自定义表空间为只读:
--确认用户表空间清单
select tablespace_name,status from dba_tablespaces; --修改用户表空间为只读
ALTER TABLESPACE ts_sysmanage_idx READ ONLY;
ALTER TABLESPACE ts_sysmanage READ ONLY;ALTER TABLESPACE ts_aiia_idx READ ONLY;
ALTER TABLESPACE ts_aiia READ ONLY;ALTER TABLESPACE ts_abde_idx READ ONLY;
ALTER TABLESPACE ts_abde READ ONLY;ALTER TABLESPACE ts_src_idx READ ONLY;
ALTER TABLESPACE ts_src READ ONLY;ALTER TABLESPACE top_user READ ONLY;
ALTER TABLESPACE recon READ ONLY;ALTER TABLESPACE USERS READ ONLY;--确认只读的表空间
select tablespace_name,status from dba_tablespaces; --创建数据泵(如果没有)
select * from dba_directories where directory_name='DUMPDIR';
create directory dumpdir as '/oradata/backup';
导出数据库(导出库是11g时,需添加参数VERSION=12):
export ORACLE_SID=reconexpdp \'/ as sysdba\' directory=dumpdir full=y \
dumpfile=dump_${ORACLE_SID}_full_`date +%F`_%U.dmp \
logfile=dump_${ORACLE_SID}_full_`date +%F`.log \
TRANSPORTABLE=ALWAYS VERSION=12
该过程只会导出元数据和SYSTEM、SYSAUX表空间的数据,因此速度会比较快。
如果收到下面的报错:
ORA-39123: Data Pump transportable tablespace job aborted
ORA-39185: The transportable tablespace failure list isORA-29335: tablespace 'USERS' is not read only
需要把USERS表空间也改为只读。
导出完成后,检查输出信息中需要传输到target库的数据文件清单:
******************************************************************************
...
Master table "SYS"."SYS_EXPORT_FULL_02" successfully loaded/unloaded
******************************************************************************
Dump file set for SYS.SYS_EXPORT_FULL_02 is:/oradata/backup/dump_recon_full_2024-02-21_01.dmp
******************************************************************************
Datafiles required for transportable tablespace RECON:/oradata/RECON/datafile/o1_mf_recon_l06cyctt_.dbf/oradata/RECON/datafile/o1_mf_recon_l0682wv2_.dbf
Datafiles required for transportable tablespace TS_abde:/oradata/RECON/datafile/o1_mf_ts_abde_l064h30m_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l39kkof2_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l064h30s_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l064h30t_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l064h310_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l064h313_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l064h322_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l064h325_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l064h32d_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l064h34l_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l0682wrp_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l0682wrr_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l0682wsy_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l0682wt0_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l068s81z_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l068s821_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l068s822_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l068s83b_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l06cycrc_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l06cycrf_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l06cycrh_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l06cycsn_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l06dkx10_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l06dkx12_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l06dkx14_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l06dkx27_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l06dkx39_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l06dkx3d_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l39kkfjh_.dbf/oradata/RECON/datafile/o1_mf_ts_abde_l064h30p_.dbf
Datafiles required for transportable tablespace TS_abde_IDX:/oradata/RECON/datafile/o1_mf_ts_abde__l0682wrm_.dbf/oradata/RECON/datafile/o1_mf_ts_abde__l06cyctp_.dbf/oradata/RECON/datafile/o1_mf_ts_abde__l06cycsp_.dbf/oradata/RECON/datafile/o1_mf_ts_abde__l068s84d_.dbf
Datafiles required for transportable tablespace TS_aiia:/oradata/RECON/datafile/o1_mf_ts_aiia_l06cycvs_.dbf
Datafiles required for transportable tablespace TS_aiia_IDX:/oradata/RECON/datafile/o1_mf_ts_aiia__l0682ww2_.dbf
Datafiles required for transportable tablespace TS_SRC:/oradata/RECON/datafile/o1_mf_ts_src_l064h348_.dbf
Datafiles required for transportable tablespace TS_SRC_IDX:/oradata/RECON/datafile/o1_mf_ts_src_i_l064h33l_.dbf
Datafiles required for transportable tablespace TS_SYSMANAGE:/oradata/RECON/datafile/o1_mf_ts_sysma_l06dkx2b_.dbf/oradata/RECON/datafile/o1_mf_ts_sysma_l064h335_.dbf
Datafiles required for transportable tablespace TS_SYSMANAGE_IDX:/oradata/RECON/datafile/o1_mf_ts_sysma_l068s85g_.dbf
Datafiles required for transportable tablespace USERS:/oradata/RECON/datafile/o1_mf_users_l068s84g_.dbf
Job "SYS"."SYS_EXPORT_FULL_02" successfully completed at Wed Feb 21 09:07:48 2024 elapsed 0 00:01:08
传输dump和数据文件到target库
⭐️Tolist-2. 将导出的dump文件拷贝到target库所在的服务器。
scp /oradata/backup/dump_recon_full_2024-02-21* oracle@x.x.x.x:/oradata/backup
将dump文件拷贝到target库服务器的dumpdir对应的路径下。
⭐️Tolist-3. 将source库上用户自定义表空间对应的数据文件拷贝到target库所在的服务器。
拷贝到target库的数据文件目录下。
cd /oradata/RECON/datafile/
scp *.dbf oracle@x.x.x.x:/oradata/RECON_0/datatfile
不需要拷贝系统表空间、TEMP和UNDO表空间:
$ ls datafile/ | grep sysaux
$ ls datafile/ | grep system
$ ls datafile/ | grep temp
$ ls datafile/ | grep undo
检查source库和target库所在平台的endian是否相同。如果不同的话需要进行表空间转换。
SELECT d.PLATFORM_NAME, ENDIAN_FORMATFROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE dWHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;
如果操作系统是相同的,比如都是Linux RHEL 7.6,那么endian也应该是相同的。
⭐️Tolist-4. 将source库上用户自定义表空间恢复成可读写模式。
ALTER TABLESPACE ts_sysmanage_idx READ WRITE;
ALTER TABLESPACE ts_sysmanage READ WRITE;ALTER TABLESPACE ts_aiia_idx READ WRITE;
ALTER TABLESPACE ts_aiia READ WRITE;ALTER TABLESPACE ts_abde_idx READ WRITE;
ALTER TABLESPACE ts_abde READ WRITE;ALTER TABLESPACE ts_src_idx READ WRITE;
ALTER TABLESPACE ts_src READ WRITE;ALTER TABLESPACE top_user READ WRITE;
ALTER TABLESPACE recon READ WRITE;ALTER TABLESPACE USERS READ WRITE;
target库导入数据库
⭐️Tolist-5. 在target库上导入dump文件。
创建数据泵:
select * from dba_directories where directory_name='DUMPDIR';
create directory dumpdir as '/oradata/backup';
准备一个parfile,写入impdp的参数:
full=Y
directory=dumpdir
dumpfile=dump_recon_full_2024-02-21_01.dmp
logfile=import.log
transport_datafiles=
'/oradata/RECON_0/datafile/o1_mf_recon_l06cyctt_.dbf',
'/oradata/RECON_0/datafile/o1_mf_recon_l0682wv2_.dbf',
...
'/oradata/RECON_)/datafile/o1_mf_users_l068s84g_.dbf'
导入数据库dump文件:
export ORACLE_SID=reconimpdp \'/ as sysdba\' parfile='par.f'
如果收到以下报错:
ORA-39123: Data Pump transportable tablespace job aborted
ORA-29349: tablespace 'USERS' already exists
解决办法如下:
--尝试删除target库的USERS表空间
sys@RECON_0> drop tablespace users;
drop tablespace users
*
ERROR at line 1:
ORA-12919: Can not drop the default permanent tablespace--尝试重命名已有的USERS表空间:
alter tablespace USERS rename to USERS_OLD;
select tablespace_name,status from dba_tablespaces;
重新导入:
impdp \'/ as sysdba\' parfile='par.f'
也可以给impdp加上以下参数来排除不导入USERS表空间:
exclude=tablespace:"IN ('USERS')"
迁移后的工作
导入过程中可能遇到的报错:
ORA-39083: Object type ALTER_PROCEDURE:"ABDE"."P8005030308" failed to create with error:
ORA-04052: error occurred when looking up remote object GP3USER.CALENDRIER_PORTEFEUILLE@GP3DB
ORA-00604: error occurred at recursive SQL level 3
ORA-01017: invalid username/password; logon denied
ORA-02063: preceding line from GP3DBFailing sql is:ALTER PROCEDURE "ABDE"."P8005030308" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE PLSCOPE_SETTINGS= 'IDENTIFIERS:NONE' NLS_LENGTH_SEMANTICS= CHAR REUSE SETTINGS TIMESTAMP '2022-12-06 21:14:17'ORA-39083: Object type ALTER_PROCEDURE:"ABDE"."P8002190101" failed to create with error:
ORA-04052: error occurred when looking up remote object AIIA.AIIA_MASTER_FILE@ABDE
ORA-00604: error occurred at recursive SQL level 3
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
...ORA-39082: Object type PROCEDURE:"ABDE"."P600200161011" created with compilation warningsJob "SYS"."SYS_IMPORT_FULL_01" completed with 68 error(s) at Wed Feb 21 15:38:55 2024 elapsed 0 00:03:03
注:在source库导出数据时,可以排除DBLINK和STATISTICS。
在target导入完成后,应用用户需要重建DBLINK并重新编译报错的存储过程。
Reference
【1】https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sutil/oracle-data-pump-export-utility.html#GUID-BA07401C-6261-4B07-AD2C-06CD0A6E0BE9
【2】https://docs.oracle.com/en/database/oracle/oracle-database/12.2/admin/transporting-data.html#GUID-05DFEA70-FDAF-4FAF-BF26-37225151A7D7
相关文章:
Oracle数据泵跨大版本迁移数据库
Oracle数据泵跨大版本迁移数据库 source库导出元数据传输dump和数据文件到target库target库导入数据库迁移后的工作 🦈场景:将测试环境中一台Oracle 11g数据库迁移到另一台新搭建的19c数据库中。 🤔分析:由于是跨数据库大版本&…...

如何在Win系统从零开始搭建Z-blog网站,并将本地博客发布到公网可访问
文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员,自己搭建网站制作网页是绕…...

sawForceDimensionSDK安装,sigma7+ros
force dimension的sdk中没有关于ros,借助开源的sawForceDimensionSDK实现对于数据的封装和可视化,方便后续使用 链接: GitHub - jhu-saw/sawForceDimensionSDK 具体步骤: 安装qt和ros,官网下载Force Dimension SDK …...
全量知识系统问题及SmartChat给出的答复 之3
Q8. 进一步,请展示如何使用这些技术来衡量、评估或适应不可避免的不匹配的知识汤问题的更进一步的全面代码。 为了处理不可避免的不匹配的知识汤问题,我们可以引入一些技术方法来衡量、评估或适应这种情况。 下是一个更进一步的全面代码示例࿰…...
【常用的 SVN 命令及简要示例】
常用的 SVN 命令及简要示例,供您参考: 检出代码: svn checkout https://svn.example.com/project/trunk提交修改: svn commit -m "Commit message"更新代码: svn update创建分支: svn copy https://svn.example.com/project/trunk \https://sv…...

ISP代理是什么?怎么用?
在跨境出海业务中,代理IP对于您的在线任务至关重要,尤其是对于那些运行多个帐户的人来说。为您的帐户选择正确类型的代理对于确保帐户安全非常重要,劣质的IP容易使账号遭受封号风险。IPFoxy的多种代理IP类型应用范围各有侧重,其中…...

微服务之qiankun主项目+子项目搭建
主项目使用history,子项目使用hash模式 1. 下载安装"qiankun": "^2.10.13"2. 手动调用qiankun,使用vue脚手架搭建的项目1. 主项目配置(我使用的是手动调用乾坤,在指定页面显示内容)1. 要使用的页面中引入乾坤…...
双非二本找实习前的准备day2
学习目标: 每天2-3到简单sql(刷完即止),每天复习代码随想录上的题目3道算法(时间充足可以继续),背诵的八股的问题也在这里记录了 今日碎碎念: SQL有些题用到的知识感觉不会出现在…...

快速搭建宠物医院服务小程序的步骤,无需编程经验
如果你是一家宠物医院或者宠物服务机构,想要拥有一款方便用户预约、查询信息的小程序,那么乔拓云网提供的轻应用小程序是你的不二选择。下面将为你详细介绍如何轻松打造宠物医院服务小程序。 1. 进入乔拓云网后台,点击【轻应用小程序】中的【…...

从0开始python学习-53.python中flask创建简单接口
目录 1. 创建一个简单的请求,没有写方法时默认为get 2. 创建一个get请求 3. 创建一个post请求,默认可以使用params和表单传参 4. 带有参数的post请求 1. 创建一个简单的请求,没有写方法时默认为get from flask import Flask, request# 初始化一个flask的对象 ap…...
如何怎麼搭建高效的爬蟲全球代理IP池?
爬蟲技術可以幫助我們從各類網站上獲取大量的數據資訊,但常常會遇到IP被封鎖的問題,這就是我們需要搭建全球代理IP池的原因。那麼,如何搭建一個高效的IP代理池呢? IP代理池指什麼? 首先,我們需要明白什麼是…...

FinalShell连接Linux
远程连接linux 我们使用VMware可以得到Linux虚拟机,但是在/Mware中操作Linux的命令行页面不太方便,主要是: 内容的复制、粘贴跨越VMware不方便 文件的上传、下载跨越VMware不方便 不方便也就是和Linux系统的各类交互,跨越VMwar 到Linux操作系…...
数据分析Pandas专栏---第十一章<Pandas数据聚合与分组(1)>
前言: 数据聚合和分组操作是数据处理过程中不可或缺的一部分。它们允许我们根据特定的条件对数据进行分组,并对每个组进行聚合计算。这对于统计分析、汇总数据以及生成报告和可视化非常有用。无论是市场营销数据分析、销售业绩评估还是金融数据建模,数据…...
【Linux】将程序的输出显示到屏幕,同时写入到log文件
1. 将程序的输出显示到屏幕,同时写入到log文件 nohup python -u main.py 2>&1 | tee -a log.txt &nohup 放在命令的开头,表示不挂起(no hang up),也即,关闭终端或者退出某个账号,进…...

MySQL(基础篇)——函数、约束
一.函数 1.定义 函数是指一段可以直接被另一段程序调用的程序或代码。 2.字符串函数 常见如下: -- 字符串拼接 SELECT CONCAT(hello,MySql) AS CONCAT -- 将字符串全部转为小写 SELECT LOWER(HEllo MYSql) AS LOWER -- 将字符串全部转为大写 SELECT UPPER(Hello…...

【wails】(4):使用wails做桌面应用开发,整合chatgpt-web项目做前端,进行本地开发,web端也可以连调,使用websocket实现
1,视频地址 【wails】(4):使用wails做桌面应用开发,整合chatgpt-web项目做前端,进行本地开发,web端也可以连调,使用websocket实现 2,演示效果 启动先是报500 错误&#…...

八股文打卡day24——数据库(1)
面试题:左连接和右连接的区别? 我的回答: 左连接的SQL语句是:左表 left join 右表 on 连接条件,表示以左表为基础,将左表的的所有记录与右表进行连接。即使右表中没有与左表匹配的记录,左连接…...

robots.txt 文件规则
robots.txt 是一种用于网站根目录的文本文件,其主要目的在于指示网络爬虫(web crawlers)和其他网页机器人(bots)哪些页面可以抓取,以及哪些页面不应该被抓取。可以看作是网站和搜索引擎机器人之间的一个协议…...
电脑WiFi共享给电脑的网口,另一终端可通过该网口进行上网。可用于wireshark抓设备终端的包。
1、点击WinR,弹出命令框,输入services.msc 2、选中“Internet Connection Sharing”这个服务右键,点击属性打开,启动类型选择“自动”,确定保存 3、点击WinR,弹出命令框,输入regedit 4、找到路径…...

字节面试问题
实现三列布局的方法 第一种:可以使用浮动margin 第二种:浮动BFC <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, in…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...