Oracle 19C中如何将表从MyCon schema迁移至sahe schema?
Oracle 19C 迁移MyCon.test表到sahe的方法
方法一:CREATE TABLE AS SELECT(快速复制小表)
适合数据量不大的场景,直接复制表结构和数据,但不会自动复制约束、索引、触发器等对象。
- 以
sahe用户登录数据库,执行以下语句:
CREATE TABLE sahe.test AS SELECT * FROM MyCon.test;
- 若需要保留原表的约束、索引等,需手动创建:
- 以拥有DBA权限的用户执行,获取原表的DDL:
SELECT DBMS_METADATA.GET_DDL('TABLE', 'TEST', 'MYCON') FROM DUAL;- 将输出DDL中的
MYCON替换为SAHE,在sahe用户下执行该DDL创建空表,再执行数据插入:
INSERT INTO sahe.test SELECT * FROM MyCon.test; COMMIT;
方法二:数据泵导出导入(完整迁移所有对象)
适合大表或需要完整保留表所有属性(约束、索引、触发器等)的场景。
步骤1:创建并授权数据泵目录(若未存在)
以拥有DBA权限的用户(如sys)登录,执行:
-- 创建目录对象(替换为实际的操作系统路径) CREATE DIRECTORY dump_dir AS '/opt/oracle/dump'; -- 授予读写权限给相关用户 GRANT READ, WRITE ON DIRECTORY dump_dir TO MyCon, sahe;
步骤2:导出MyCon下的test表
在操作系统终端执行数据泵导出命令:
expdp MyCon/MyCon_password@your_oracle_service schemas=MyCon tables=test dumpfile=test_dump.dmp logfile=test_export.log directory=dump_dir
步骤3:导入到sahe用户
在操作系统终端执行数据泵导入命令,通过remap_schema参数映射原schema到目标schema:
impdp sahe/sahe_password@your_oracle_service remap_schema=MyCon:sahe tables=test dumpfile=test_dump.dmp logfile=test_import.log directory=dump_dir
注意事项
- 若test表包含LOB字段、分区或其他特殊对象,优先选择数据泵方法,能保证迁移完整性。
- 操作前建议备份原表,避免数据丢失。
内容的提问来源于stack exchange,提问作者henrry
相关产品推荐
相关产品推荐

