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

相关推荐
数据库急诊室_阿哲2 小时前
一次加索引建议的复核记录:从报告到签字
数据库·ai数据库
青瓦梦滋3 小时前
Redis主从复制
服务器·数据库·redis·缓存·bootstrap
慧都小妮子3 小时前
Wyn商业智能国产数据库适配:数据接入、分析缓存与审计日志验证清单
数据库·数据分析·数据可视化·审计日志·商业智能
Joy T4 小时前
Redis Lua 原子限流:Lua 脚本、竞态条件与并发控制
数据库·redis·lua·限流·竞态条件·redis scripting
杨凯凡5 小时前
MySQL 死锁怎么排查?InnoDB 锁等待与 Spring Boot 整事务重试实战
数据库·spring boot·mysql
Aloudata5 小时前
Claude 做数据分析的这两年:一份复盘与发展线索
大数据·数据库·人工智能·数据挖掘·数据分析·dataagent
Decay__5 小时前
01_SQLServer 体系架构全解 —— 实例进程、关系引擎、SQLOS 与事务日志深入
运维·数据库·sql·mysql·架构
zhanghaha13145 小时前
C# 系列教程_12 字符串 string 保姆级系统教程(面向新手,大量示例 + 原理讲解)
开发语言·数据库·c#
韩曙亮5 小时前
【错误记录】安卓 adb 调试 5037 端口占用排查 ( adb 的三层结构 | 找出本机占用 5037 的进程 )
android·数据库·adb·安卓·错误记录
瑞雪兆丰年兮6 小时前
JavaWeb-day07-MySQL(DQL&多表设计)
java·开发语言·数据库·sql·mysql·javaweb·web