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

相关文章

【服务器运维】MySQL数据存储至数据盘

查看磁盘及分区 [root@MySQL tmp]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical)

SQL Server中,查询数据库中有多少个表,以及数据库其余类型数据统计查询

sqlserver查询数据库中有多少个表 sql server 数表:select count(1) from sysobjects where xtype='U'数视图:select count(1) from sysobjects where xtype='V'数存储过程select count(1) from sysobjects where xtype='P' SE

python 在pycharm下能导入外面的模块,到terminal下就不能导入

项目结构如下,在ic2ctw.py 中导入util,在pycharm下不报错,但是到terminal下运行报错  File "deal_data/ic2ctw.py", line 3, in <module>     import util 解决方案: 暂时方案:在终端下:export PYTHONPATH=/Users/fujingling/PycharmProjects/PSENe

数据时代的数字企业

1.写在前面 讨论数据治理在数字企业中的影响和必要性,并介绍数据治理的核心内容和实践方法。作者强调了数据质量、数据安全、数据隐私和数据合规等方面是数据治理的核心内容,并介绍了具体的实践措施和案例分析。企业需要重视这些方面以实现数字化转型和业务增长。 数字化转型行业小伙伴可以加入我的星球,初衷成为各位数字化转型参考库,星球内容每周更新 个人工作经验资料全部放在这里,包含数据治理、数据要

如何在Java中处理JSON数据?

如何在Java中处理JSON数据? 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨在Java中如何处理JSON数据。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,在现代应用程序中被广泛使用。Java通过多种库和API提供了处理JSON的能力,我们将深入了解其用法和最佳

两个基因相关性CPTAC蛋白组数据

目录 蛋白数据下载 ①蛋白数据下载 1,TCGA-选择泛癌数据  2,TCGA-TCPA 3,CPTAC(非TCGA) ②蛋白相关性分析 1,数据整理 2,蛋白相关性分析 PCAS在线分析 蛋白数据下载 CPTAC蛋白组学数据库介绍及数据下载分析 – 王进的个人网站 (jingege.wang) ①蛋白数据下载 可以下载泛癌蛋白数据:UCSC Xena (xena

中国341城市生态系统服务价值数据集(2000-2020年)

生态系统服务反映了人类直接或者间接从自然生态系统中获得的各种惠益,对支撑和维持人类生存和福祉起着重要基础作用。目前针对全国城市尺度的生态系统服务价值的长期评估还相对较少。我们在Xie等(2017)的静态生态系统服务当量因子表基础上,选取净初级生产力,降水量,生物迁移阻力,土壤侵蚀度和道路密度五个变量,对生态系统供给服务、调节服务、支持服务和文化服务共4大类和11小类的当量因子进行了时空调整,计算了

【计算机网络篇】数据链路层(12)交换机式以太网___以太网交换机

文章目录 🍔交换式以太网🛸以太网交换机 🍔交换式以太网 仅使用交换机(不使用集线器)的以太网就是交换式以太网 🛸以太网交换机 以太网交换机本质上就是一个多接口的网桥: 交换机的每个接口考研连接计算机,也可以理解集线器或另一个交换机 当交换机的接口与计算机或交换机连接时,可以工作在全双工方式,并能在自身内部同时连通多对接口,使每一对相互通信的计算机都能像

使用Jsoup抓取数据

问题 最近公司的市场部分布了一个问题,到一个网站截取一下医院的数据。刚好我也被安排做。后来,我发现为何不用脚本去抓取呢? 抓取的数据如下: Jsoup的使用实战代码 结构 Created with Raphaël 2.1.0 开始 创建线程池 jsoup读取网页 解析Element 写入sqlite 结束

ORACLE 、达梦 数据库查询指定库指定表的索引信息

在Oracle数据库中,索引是一种关键的性能优化工具,通过它可以加快数据检索速度。在本文中,我们将深入探讨如何详细查询指定表的索引信息,以及如何利用系统视图和SQL查询来获取这些信息。 索引在数据库中的重要性 索引是一种数据结构,用于加快数据库表中数据的检索速度。它类似于书籍的目录,可以帮助数据库引擎快速定位数据行,特别是在大型数据集合下,其作用尤为显著。 查询指定表的索引信息 在Orac