REMAP_SCHEMA仅重写导入语句中的schema名,不修改现有对象owner、不更新数据字典、不处理依赖链;真正转移所有权需重建用户或手动ALTER。
直接用
的
不能转移对象所有权——它只重定向对象创建语句中的 schema 名,不修改已存在对象的
字段,也不触发权限链路重绑定。真正“转移所有权”必须配合用户重建或显式
操作。
REMAP_SCHEMA 实际干了什么
它在导入时把源 dump 文件中所有
类语句,自动改写成
,再执行。但这个过程完全不碰源库里的
用户本身,也不动目标库中已存在的
用户对象。
只影响新导入的对象:表、索引、视图、同义词等结构都会落到目标 schema 下
不迁移已有对象:如果目标库
已有同名表,
默认报错(除非加
)
不改系统字典:
字段值由创建时决定,REMAP 不会 retroactively 更新旧对象
不处理依赖链:比如
引用了
,REMAP 后变成
引用
—— 但若
不存在,视图编译失败,不会自动 fallback 到
为什么导入后还是看到 scott.emp?
常见现象是:
执行完,查
却发现仍有大量对象 owner 是
。这不是 REMAP 失效,而是你导出时没限定范围,dump 文件里混进了其他 schema 的对象(比如 DBA 视图、SYS 对象),或者用了
导出了整个数据库级元数据。
检查导出命令是否带了
:没加就默认导全库,REMAP 只对匹配的 schema 生效
确认 dump 文件是否干净:用
把 DDL 导出为文本,搜
看是否还有残留
注意
参数干扰:例如
会把所有 procedure 都拉进来,不管 owner 是谁
版本兼容问题:10g 导出的 dump 在 19c 导入时,某些系统对象可能被自动映射到
,绕过 REMAP
真正转移所有权的可行路径
如果你的目标是让
成为原
下所有对象的法律 owner(即
),只有两条路可走,且都绕不开人工干预:
oracle知识库
oracle知识库下载
下载
先清空目标用户:
,再用
导入——这是最干净的方式,所有对象 owner 自然就是
不清空用户,但需手动修正:
不合法;正确做法是
+
,再重建索引、约束、授权——适合少量关键表
权限不是自动跟着走的:
不会因 REMAP 变成
,必须额外导出并重放
语句(加
或
)
同义词要单独处理:
不会被 REMAP,得手动建新同义词或用
配合
最容易被忽略的权限静默失效点
导入成功 ≠ 权限生效。日志里出现
往往意味着目标对象还没建好,grant 就被跳过,而你根本看不到错误提示。
必须确保目标用户
已存在且有足够配额:
如果源对象用了自定义类型(如
),REMAP 后类型名仍是
,除非显式
两次(一次类型,一次表)或提前在
下建好同名类型
物化视图日志(
)属于独立对象,owner 不随主表 REMAP,容易漏掉导致刷新失败
审计策略(
)、FGA 策略等安全对象不参与 REMAP,需单独导出配置
impdpremap_schemaowneralterCREATE TABLE scott.empCREATE TABLE hr.empscotthrhrimpdpTABLE_EXISTS_ACTION=REPLACEdba_objects.ownerscott.view_ascott.table_bhr.view_ahr.table_bhr.table_bscott.table_bimpdp ... REMAP_SCHEMA=scott:hrdba_objectsscottCONTENT=ALLschemas=scottimpdp ... SQLFILE=check.sqlCREATE TABLE scott\.INCLUDEINCLUDE=PROCEDUREsyshrscottdba_objects.owner = 'HR'DROP USER hr CASCADEREMAP_SCHEMA=scott:hrhrALTER TABLE scott.emp RENAME TO hr.empCREATE TABLE hr.emp AS SELECT * FROM scott.empDROP TABLE scott.empGRANT SELECT ON scott.emp TO app_userGRANT SELECT ON hr.emp TO app_userGRANTCONTENT=ALLINCLUDE=GRANTCREATE SYNONYM app_emp FOR scott.empREMAP_SCHEMAINCLUDE=SYNONYMREMAP_SCHEMAORA-39112: Dependent object type GRANT:"HR" skippedhrALTER USER hr QUOTA UNLIMITED ON usersCREATE TYPE scott.t_list AS TABLE OF NUMBERscott.t_listREMAP_SCHEMAhrMATERIALIZED VIEW LOGAUDIT POLICY