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

相关推荐
微学AI15 小时前
不让每一步都调用最贵模型:用蓝耘智能路由改造自主式研究 Agent
数据库·人工智能·蓝耘
yjb.gz15 小时前
Oracle19 RAC查看集群状态及磁盘空间情况(巡检)
数据库
钝挫力PROGRAMER16 小时前
开发踩坑记:MyBatis selectKey、空 SQL
数据库·sql·mybatis
JosieBook16 小时前
【数据库】MySQL 实战精通系列 · 第6篇:InnoDB 存储引擎、日志与崩溃恢复
数据库·mysql
杨云龙UP16 小时前
TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)
大数据·linux·运维·数据库·tdengine·时序库
梦帮科技17 小时前
领域认知知识库图谱注入:从双式记账图网络到高质量问答对自动化合成流水线
运维·网络·数据库·人工智能·矩阵·架构·自动化
Long long ago.17 小时前
vastbase数据库运行sql宕机重启解决
数据库·sql
SelectDB技术团队17 小时前
一条日志两套引擎的账:把 Elasticsearch 检索与分析合并到同一份数据的落地写法
大数据·数据库·elasticsearch·搜索引擎·全文检索·日志·apache doris
数据库百宝箱18 小时前
rum&gin索引对比
java·数据库·gin
wefg118 小时前
【Redis】初识 Redis
数据库·redis·缓存