Oracle 数据泵迁移步骤规范

devtools/2025/3/1 3:18:48/

1、调研模块

1.1、确认迁移用户

以全库迁移为标准,也可直接通过需求方获取需要迁移的用户

1)确认数据库中所有用户及其创建时间

alter session set nls_date_format='yyyy-mm-dd-hh24:mi:ss'; select username,created from dba_users order by 2;

2)以系统用户创建时间为限确认需要的用户

select username,created,ACCOUNT_STATUS from dba_users where created >to_date('2008-03-14 00:31:40','yyyy-mm-dd hh24:mi:ss') order by 2;

1.2、确认数据量

1)查看总的数据量大小

set lines 200 SELECT SUM (bytes) / 1024 / 1024 / 1024 FROM dba_segments where owner in ( select username from dba_users where created >to_date('2008-03-14 00:31:40','yyyy-mm-dd hh24:mi:ss') ) ORDER BY 1;

2)查看各个用户数据量大小

set lines 200 SELECT owner,segment_name, SUM (bytes) / 1024 / 1024 FROM dba_segments where owner in ( select username from dba_users where created >to_date('2008-03-14 00:31:40','yyyy-mm-dd hh24:mi:ss') ) GROUP BY owner,segment_name ORDER BY 3;

3)确认各用户的lob对象大小

set lines 200 SELECT owner, SUM (bytes) / 1024 / 1024 / 1024 FROM dba_segments WHERE (owner, segment_name) IN (SELECT owner, segment_name FROM dba_lobs) and owner in ( select username from dba_users where created >to_date('2008-03-14 00:31:40','yyyy-mm-dd hh24:mi:ss') ) GROUP BY owner ORDER BY 2;

1.3、确认long字段情况

用以评估是否适合使用dblink,或者如何使用dblink迁移

1)确认是否存在long字段

set lines 200 select OWNER,table_name from dba_tab_columns where data_type='LONG' and owner in ( select username from dba_users where created >to_date('2008-03-14 00:31:40','yyyy-mm-dd hh24:mi:ss') ) order by 1;

2)确认long字段对象大小

set lines 200 SELECT owner, SUM (bytes) / 1024 / 1024 / 1024,segment_name FROM dba_segments WHERE (owner, segment_name) IN (select OWNER,table_name from dba_tab_columns where data_type='LONG' and owner in ( select username from dba_users where created >to_date('2008-03-14 00:31:40','yyyy-mm-dd hh24:mi:ss') ) ) GROUP BY owner,segment_name ORDER BY 2;

2、业务停止前导入操作

2.1、删除用户

提前整理删除用户脚本,并在正式迁移前执行

1)生成删除脚本

select 'drop user'|| username || ' cascade;' from dba_users where created >to_date('2008-03-14 00:31:40','yyyy-mm-dd hh24:mi:ss') ;

2)执行删除命令

@/home/oracle/dblight/drop_user.sql

2.2、导入sqlprofile

1)创建dblink

drop public database link mig_toold; create public database link mig_toold connect to system identified by "2wsx3edc" using 'INAS1522';

2)源端导出sqlset

select * from dba_sql_profiles begin dbms_sqltune.create_stgtab_sqlprof(table_name => 'STAGING_TABLE', schema_name => 'dl_mig');end; begin dbms_sqltune.pack_stgtab_sqlprof( staging_table_name => 'STAGING_TABLE', staging_schema_owner => 'dl_mig');end; select * from dl_mig.STAGING_TABLE

3)目标段导入sqlset

create table system.STAGING_TABLE as select * from dl_mig.STAGING_TABLE@dl_to_old select * from dba_sql_profiles begin dbms_sqltune.unpack_stgtab_sqlprof( staging_schema_owner=>'system',replace => TRUE, staging_table_name => 'STAGING_TABLE');end;

4)检查脚本

select name from dba_sql_profiles@dl_to_old where name not in (select name from dba_sql_profiles)

2.3、导入profile

nohup time impdp userid=system/1qaz2wsx parallel=4 metrics=yes network_link=mig_toold include=profile full=y content=metadata_only > imp_profile.log & tail -f imp_profile.log

2.4、导入role

nohup time impdp userid=system/1qaz2wsx parallel=4 metrics=yes network_link=mig_toold include=role full=y content=metadata_only > imp_role.log & tail -f imp_role.log

2.5、导入用户及权限

nohup time impdp userid=system/1qaz2wsx parallel=4 metrics=yes network_link=mig_toold include=USER,system_grant,OBJECT_GRANT,ROLE_GRANT SCHEMAS=* content=metadata_only > imp_user.log & tail -f imp_user.log

2.6、导入dblink

nohup time impdp userid=system/system123 parallel=4 NETWORK_LINK=to_old include=DB_LINK full=y CONTENT=METADATA_ONLY > imp_db_link.log & tail -f imp_db_link.log

3、正式迁移时期原端停止业务

3.1、停止业务

3.2、停止1521监听

srvctl stop listener -l LISTENER crsctl status res -t

3.3、查杀LOCAL=NO的会话

ps -ef|grep LOCAL=NO | grep -v grep |awk '{print $2}'| xargs kill -9 ps -ef|grep LOCAL=NO

3.4、修改job参数,以及查杀JOB会话

ALTER SYSTEM SET job_queue_processes=0 scope=both sid='*'; ps -ef|grep ora_j | grep -v grep |awk '{print $2}'| xargs kill -9 ps -ef|grep ora_j

3.5、修改local_listener参数

alter system set local_listener='(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=133.37.22.228)(PORT=1522)))' sid='inasdb1' scope=both; alter system set local_listener='(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=133.37.22.229)(PORT=1522)))' sid='inasdb2' scope=both; show parameter local_listener

3.6、检查大事务、停止源端数据库(两个节点)

sqlplus / as sysdba alter system checkpoint; alter system switch logfile; alter system switch logfile; alter system checkpoint; alter system switch logfile; alter system switch logfile; shutdown immediate;

3.7、启动源端数据库

sqlplus / as sysdba startup

3.8、检查并停止1521监听

srvctl stop listener -l LISTENER crsctl status res -t

4、数据导入导出

4.1、单独导出大表、LOB、LONG(可分多个脚本)

nohup sh /home/oracle/dblight/*exp.sh > /home/oracle/dblight/*exp.log 2>&1 &

4.2、单独导入大表、LOB、LONG(可分多个脚本)

nohup sh /home/oracle/dblight/impdp/*_mig.sh > /home/oracle/dblight/impdp/*_mig.log 2>&1 &

4.3、小表统一导入

nohup sh /home/oracle/dblight/other_mig.sh > /home/oracle/dblight/other_mig.log 2>&1 &

4.4、创建索引

nohup sqlplus system/Sm#2dbca@NEW_WBSDB @create_scwy_index01.sql &

4.5、导入约束序列触发器并补充权限

nohup time impdp userid=system/1qaz2wsx parallel=4 metrics=yes network_link=mig_toold include=OBJECT_GRANT,SYSTEM_GRANT,CONSTRAINT,SEQUENCE,trigger SCHEMAS=*content=metadata_only > grant_finish.log &

5、结尾

5.1、运行检查脚本检查对象情况

purge dba_recyclebin; @ /home/oracle/dblight/impdp/checkobject.sql

5.2、启动监听

srvctl start listener -l LISTENER

5.3、恢复job

ALTER SYSTEM SET job_queue_processes=10000 scope=both sid='*';

5.4、通知备份

6、特殊处理

6.1、通用

合理利用并行,数据量小的schema一起导入,数据量大的单独导入、分表导入

6.2、表数据量大或者lob大表

可以考虑分片导入数据,且lob对象可以“ENABLE STORAGE IN ROW”,参考:墨天轮脚本:SPLIT_TAB_ROWID SPLIT_TAB_ROWID - 墨天轮脚本

6.3、创建过慢索引

添加对应参数,并行执行

6.4、约束创建过慢

添加对应参数,并行执行或者直接NOVALIDATE创建

novalidate模板: Alter Table stuInfo Add Constraint CK_stuAge check(stuAge between 15 and 40) enable nova


http://www.ppmy.cn/devtools/163509.html

相关文章

CSS中padding和margin属性的使用

在 HTML 中,padding 和 margin 是用于控制元素布局和间距的重要属性。 一、Padding(内边距) 定义:Padding 是指元素内容与元素边框之间的距离。它可以在元素内部创造出空白区域,使得内容不会紧贴着边框。 作用 增加元…

Redis的安装教程(Windows+Linux)【超详细】

Redis的安装教程 Redis简介在Windows环境下搭建 下载安装包解压安装包进入到Redis目录下打开cmd窗口验证 在Linux环境下搭建 创建一个存放Redis的文件夹,下载安装包解压安装包开始安装启动Redis服务 Redis简介 官方文档:点这里 Redis是开放源代码&a…

Java Web应用中的跨站脚本攻击(XSS)防护策略

Java Web应用中的跨站脚本攻击(XSS)防护策略 跨站脚本攻击(XSS, Cross-Site Scripting)是Web应用中常见的安全漏洞之一,它允许攻击者在受害者的浏览器中执行恶意脚本。Java Web应用通常会涉及到用户输入和动态页面生成…

面试八股文--数据库基础知识总结(2) MySQL

本文介绍关于MySQL的相关面试知识 一、关系型数据库 1、定义 关系型数据库(Relational Database)是一种基于关系模型的数据库管理系统(DBMS),它将数据存储在表格(表)中,并通过表格…

2025年信息科学与工程学院科协机器学习介绍——机器学习基本模型介绍

机器学习 目录 机器学习一.安装基本环境conda/miniconda环境 二.数据操作数据预处理一维数组二维数组以及多维数组的认识访问元素的方法torch中tenson的应用张量的运算张量的广播 三.线性代数相关知识四.线性回归SoftMax回归问题(分类问题)什么是分类问题…

【算法】798. 差分矩阵

题目 798. 差分矩阵 思路 实质是二维差分&#xff0c;构造数组b&#xff0c;a为b的前缀和&#xff0c;也要用到前缀和的内容&#xff0c;求出数组b之后用b表示a&#xff0c;和一维差分思路类似&#xff0c;不同之处是在加减c时二维要复杂一些。 代码 #include<iostream…

git -学习笔记

目录 基本操作语法 设置用户和邮箱 版本回退 工作区和暂存区 撤销修改 删除与恢复 一工作区删除了&#xff0c;但是暂存区没删除 二工作区误删了&#xff0c;暂存区还有 github-Git 连接 报错解决-push远程仓库被拒绝 远程库 分支 分支冲突 储藏分支 回到当前分…

【Springboot知识】Logback从1.2.x升级到1.3.x需要注意哪些点?

文章目录 **1. 确认依赖版本**示例依赖配置&#xff08;Maven&#xff09;&#xff1a; **2. 处理 StaticLoggerBinder 的移除**解决方案&#xff1a; **3. 修改日志配置文件**示例 logback.xml 配置&#xff1a; **4. 检查兼容性问题**Spring Boot 2.x 的兼容性解决方案&#…