背景:oracle19c是19.3.0.0.0.0版本。远程的oracle数据导入到本地oracle19c,本地是window10—64—-专业版。远程是redhat7.6,oracle19c
废话不多说,开始。
先从远程导出dmp文件。
切换到oracle用户
su – oracle
导出命令(因为是工作开发环境,因此,笔记加密了,使用的朋友自己改名字即可)
注意:directory要提前创建这个目录,而且要注意授权,并且查询,确认创建成功
expdp 用户名/密码@远程数据库实例 directory=local_dmp dumpfile=****_rst_export_20220406.dmp logfile=expdp_****_rst_20220406.log content=all SCHEMAS=****_rst
命令运行成功,无问题。测试是一堆空表,数据也不多。但是导出还是很慢。
最终的日志输出:
****_RST.SYS_EXPORT_SCHEMA_02 的转储文件集为:
/home/oracle/local_dump/****_rst_export_20220406.dmp
通过xshell把远程的文件下载到本地
导入到本地的oracle数据库
window10 DOS窗口连接oracle数据库
命令:sqlplus 用户名/密码@//192.168.56.1:1521/orcl
查询directory
select * from dba_directories ;
quit;退出sqlplus
在dos窗口输入
创建对应的表空间和用户,和授权。略过,算了补上吧
dos窗口用system用户登录
sqlplus system/密码@//192.168.56.1:1521/数据库实例名(这里为什么精确到IP和端口号,懒得做解释,不懂的可以提问,可能我是小白,不知道有更好的解决办法吧)
创建表空间(名字自己定义,不要有中文,我没这个习惯)
create tablespace 表空间名 datafile ‘G:\*****\*****
.dbf’ size 500M autoextend on maxsize
1G
;
创建用户
create user 用户名
identified by 密码 default tablespace
上面的表空间名称
;
授权
grant connect,resource,imp_full_database,unlimited tablespace to 上面的用户名称
;
grant dba to 上面的用户名称
;
退出登录
quit;
dos窗口执行
导入命令:
impdp 用户名/密码@//192.168.56.1:1521/本地的数据库实例名称 table_exists_action=skip directory=文件名 dumpfile=需要导入的dum文件名称.dmp logfile=*****.log;
关于最后的;号问题。据说是不能有的,但是在window下执行成功了。但是确实有这个说法的,可能linux不会支持,为了规范可以去掉;
最后发现,不同的数据库实例名称是可以导入的
欢迎小伙伴更正指导,谢谢了!