oracle数据库迁移指定用户下所有的对象

2023-10-23  本文已影响0人  moutory

前言

前阵子遇到一个任务,需要把数据库中某个用户下所有对象复制到一个新用户上面,和常规的需求有些不同的是这里并不需要复制表对象中的数据。写一篇文章记录一下这种场景的解决方案。

一、创建新用户

这一步主要是创建用户对象和赋权,为后面复制对象做准备

CREATE USER USER_CTEST IDENTIFIED BY USER_CTEST;
GRANT CONNECT, RESOURCE TO USER_CTEST;

二、创建导出目录

我们需要指定一下我们后面用于存放备份数据的文件路径,执行完成后我们可以在USER_DIRECTORIES视图中找到我们刚刚定义的目录。

create directory ctest_dir as '/home/oracle/oradata/ORCL'

三、导出旧用户对象

使用expdp命令,导出指定用户的所有对象数据。需要注意的是,下面这条命令是直接在数据库服务器的命令行窗口执行的。

expdp username/passwd DIRECTORY=CTEST_DIR DUMPFILE=userCtest.dmp SCHEMAS=USER_OLD CONTENT=METADATA_ONLY

需要注意的是,如果希望连同数据一起复制,这里可以不写content参数。

四、导入到新用户对象中

使用impdp命令,将第三步生成的临时文件数据导入到我们新建的用户对象中。

impdp username/passwd DIRECTORY=CTEST_DIR DUMPFILE=userCtest.dmp REMAP_SCHEMA=USER_OLD:USER_CTEST

下面介绍一下使用到的参数含义

五、删除临时文件

第四步执行成功后,如果没有文件备份需要的话,我们就可以删除第三步生成的临时文件了。

上一篇 下一篇

猜你喜欢

热点阅读