oracle 12c pdb expdp/impdp 数据导入导出

2024-01-09 22:36

本文主要是介绍oracle 12c pdb expdp/impdp 数据导入导出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境

(源)rac 环境 byoradbrac

系统版本:Red Hat Enterprise Linux Server release 6.5
软件版本:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit
byoradb1:172.17.38.44
byoradb2:172.17.38.45

(目的)单机环境 byoradb

系统版本:CentOS Linux release 7.9.2009
软件版本:Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit
byoradbdg:172.17.38.55

源端操作数据导出(expdp)

12c 的环境如果引入了pdb模式
那每个pdb需要单独执行 数据库级别的导出 即 full=yes ;
且每个pdb 导出目录需单独配置 ;
导出使用的账号可以使用sys 或其他sysdba账号或者每个pdb的管理账号分别导出每个pdb;

源端配置每个pdb的tnsname


#登录数据库sqlplus  / as sysdba#查看所有pdbSQL>show pdbs;

在这里插入图片描述

#配置 tnsnames.ora , 使账号能通过@方式在服务端直接连入pdbfind / -name tnsnames.ora

在这里插入图片描述

#分别为每个pdb配置好tnsname
vi  /u01/app/oracle/product/12c/dbhome_1/network/admin/tnsnames.oraSOAPRD =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.38.44)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = SOAPRD)))CATDB =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.38.44)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = CATDB)))PORTALPROD =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.38.44)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = PORTALPROD)))TEMP_ROMENS2FI_PROD =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.38.44)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = temp_romens2fi_prod)))TEMP_ROMENS2FI_DEV =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.38.44)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = TEMP_ROMENS2FI_DEV)))BIEEDB =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.38.44)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = BIEEDB)))

源端检查配置每个pdb的导出目录

#切换pdb
alter session set container=PORTALPROD ;#查看导出目录
SELECT  * from dba_directories  ; #重建导出目录
create or replace directory bakz as '/oracledata/';

源端执行导出

#未指定tnsname时直接连入cdb
#PDB$SEED 为pdb模板、 可选择性导出、新环境也会存在
#根据实际情况导出pdbnohup expdp \' sys/zyz123456 as sysdba \' directory=bakz  dumpfile=expdpcdb.dmp logfile=expdpcdb.log full=yes   > nohup_expcdb.out &nohup expdp \' sys/zyz123456@PORTALPROD  as sysdba \' directory=bakz  dumpfile=expdpPORTALPROD.dmp logfile=expdpPORTALPROD.log full=yes   > nohup_expPORTALPROD.out &

导出完成后传入到新环境

scp  xxx   172.17.38.55:/xxx

目的端操作数据导入(impdp)

12c 的环境如果引入了pdb模式
那每个pdb需要单独执行导入操作;
且每个pdb 导出目录需单独配置 ;
导入使用的账号可以使用sys 或其他sysdba账号或者每个pdb的管理账号分别导入每个pdb;

由于源端为rac环境、 自动创建表空间指定数据文件时、单机不存在asm路径、
所以需要手动创建对应表空间

创建新环境

可参考
oracle12c 静默安装
或者
Oracle12c一键安装

创建pdb

可参考
Oracle12c创建pdb

# 修改系统参数
alter system set db_create_file_dest='/oracledata/app/oracle/oradata/';
#创建pdb
CREATE PLUGGABLE DATABASE BIEEDB ADMIN USER pdbadminz IDENTIFIED BY "zyz@123456" ;
#切换pdb
alter session set container=BIEEDB ;
#打开pdb
alter pluggable database BIEEDB open;
#查看自动创建的数据文件位置
select name   from v$datafile;

源端查询、生成创建表空间语句 (每个pdb需单独处理)

#普通表空间
select  'create tablespace '|| a.name || ' datafile ''/oracledata/app/oracle/oradata/BYORADB/0E07968F3BDD1243E0630100007FB9BA/datafile/'||b.name||'_'||a.name||'01.dbf'' size ' ||  -- 此处文件路径依照目的端datafile文件路径、每个pdb 需对应
case when ROUND(sum(c.bytes)/1024/1024/1024,0)=0
then  TO_CHAR('500M')
ELSE to_char(ROUND(sum(c.bytes)/1024/1024/1024, 0))||'G'
end  
||' AUTOEXTEND on next 1G ;',
a.con_id ,a.TS#,b.name as conname , a.name as tablespname, ROUND(sum(c.bytes)/1024/1024/1024, 4)  as usegb ,ROUND(sum(c.bytes)/1024/1024/1024, 0)  as usegbm from V$tablespace a INNER JOIN  v$pdbs  b on a.con_id=b.con_id inner join v$datafile c on a.TS#=c.TS# and a.con_id=c.con_id  where a.name not in ('SYSAUX','SYSTEM','TEMP') 
and a.con_id=4 -- 指定pdb
group by a.con_id, a.TS#,a.name , b.name 
ORDER BY a.con_id 
;
#临时表空间
SELECT tablespace_name AS "Tablespace Name",ROUND(SUM(bytes) / (1024 * 1024*1024), 2) AS "Size in MB"
FROM dba_temp_files   
GROUP BY tablespace_name;#可使用dbms包查看如果生成创建语句中不带数据文件路径、 则导入时会自动创建、无需手动创建
SELECT DBMS_METADATA.GET_DDL('TABLESPACE', 'TABLESPACE_name')
FROM DUAL;

以上为依照数据源端的表空间创建目的端表空间、需注意每个pdb的目录与表空间容量、单个数据文件如未特殊设置、最大不可超过32G、 如某个表空间大于32G 、那以上sql生成的自动创建语句失效、 需手动调整

目的端创建表空间

create tablespace USERS datafile '/oracledata/app/oracle/oradata/BYORADB/0E071A0FA3E00637E0630100007F17A4/datafile/bieedb_user01.dbf' size 10G AUTOEXTEND on next 1G MAXSIZE 30G;

目的端配置每个pdb的tnsname

#分别为每个pdb配置好tnsname
vi  /oracledata/app/oracle/product/12c/dbhome_1/network/admin/tnsnames.oraSOAPRD =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.38.55)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = SOAPRD)))CATDB =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.38.55)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = CATDB)))PORTALPROD =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.38.55)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = PORTALPROD)))TEMP_ROMENS2FI_PROD =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.38.55)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = temp_romens2fi_prod)))TEMP_ROMENS2FI_DEV =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.38.55)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = TEMP_ROMENS2FI_DEV)))BIEEDB =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.38.55)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = BIEEDB)))

目的端检查配置每个pdb的导出目录

#切换pdb
alter session set container=PORTALPROD ;#查看导出目录
SELECT  * from dba_directories  ; #重建导出目录
create or replace directory bakz as '/oracledata/';

目的端执行导入

#未指定tnsname时直接连入cdb
#根据实际情况导入pdbnohup impdp \'sys/zyz123456 as sysdba\'   directory=bakz dumpfile=expdpcdb.dmp   logfile=impcdb.log  > nohup_impcdb.out &nohup impdp \'sys/zyz123456@BIEEDB  as sysdba\'   directory=bakz dumpfile=expdpBIEEDB.dmp   logfile=impdpBIEEDB.log   > nohup_impBIEEDB.out &

impdp 导入可多次重复执行 默认会跳过已存在的对象

这篇关于oracle 12c pdb expdp/impdp 数据导入导出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/588667

相关文章

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1