Oracle数据泵拷贝表空间

一个需求,需要将一个现有表空间的所有表及其它对象,拷贝一个空的新表空间中。表有点多,直接用脚本有点麻烦,用了一次手生的expdp和impdp,这个方法不会因为表为空而像exp/imp那样忽略。

一.创建新的表空间

CREATE TABLESPACE TH12
DATAFILE 'D:\ORACLEDB\ORADATA\ORCL\ORCL\TH12.DBF'
SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;

二.设置数据泵导出路径

--先查询,确定路径是否存在,如果没有需要自己手工建

SELECT directory_name, directory_path
FROM dba_directories
WHERE directory_name = 'DATA_PUMP_DIR';

C:\app\barcode/admin/orcl/dpdump/

--导出数据

expdp system/password@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=TH3_export.dmp LOGFILE=TH3_export.log TABLESPACES=TH3 CONTENT=METADATA_ONLY

三.新表空间创建权限

我开始没有想到这一点,是在几次导入失败后才明白的。因为每次导入都说表已存在,因为我用system登录。

-- 创建一个新用户(比如叫 TH12)

CREATE USER TH12 IDENTIFIED BY your_password;

-- 给这个用户赋予权限(能连库、建表、建会话)

GRANT CONNECT, RESOURCE TO TH12
GRANT CREATE SESSION, CREATE TABLE TO TH12

-- 最关键的一步:把 TH12 设为这个TH12用户的默认表空间

-- 这样以后这个用户创建的任何表,默认都会放到 TH12 里

ALTER USER TH12 DEFAULT TABLESPACE TH12;

-- 给TH12用户在 TH12 表空间的使用配额(无限)

ALTER USER TH12 QUOTA UNLIMITED ON TH12;

四.导入数据到新表空间

impdp system/password@orcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=Th3_export.dmp LOGFILE=TH3_to_Th12.log REMAP_SCHEMA=TH3:TH_12 REMAP_TABLESPACE=TH3:TH12 TRANSFORM=SEGMENT_ATTRIBUTES:N TABLE_EXISTS_ACTION=SKIP

相关推荐
呆萌很1 小时前
MySQL 8.4 LTS 完整安装教程
数据库·mysql
天空'之城2 小时前
单片机基础核心知识点汇总(三十三)
数据库·单片机·嵌入式硬件
爱吃苹果的日记本3 小时前
数据结构第一课
c语言·数据结构·数据库·学习·c#
张小姐的猫4 小时前
【AI大模型接入SDK】 —— Gemini接入封装
android·数据结构·数据库·c++·人工智能·python
Thomas21434 小时前
mysql 索引面试复习
数据库·mysql·面试
Elastic 中国社区官方博客4 小时前
Elasticsearch Python DSL 客户端开发
大数据·数据库·python·elasticsearch·搜索引擎·全文检索
风哥2号4 小时前
数据库教程FGMT03‑生产环境Linux+Oracle19c+ASM安装配置与项目实战
linux·数据库
龙亘川5 小时前
旅游强国建设|一网统管智慧旅游服务模块,赋能节假日文旅数字化治理
大数据·数据库·人工智能·科技·智慧城市·旅游