由于开发过程中有时候无法直接连数据库,这时候需要将数据库导入开发环境中,故此总结一个完整的数据库导入导出过程。
注意expdp和impdp命令末尾都不能加分号
1 导出某个用户的所有数据库对象
1.1 Linux导出
su - oracle
授权用户grant exp_full_database to <源数据库用户名>;
exp <源数据库用户名>/<源数据库用户密码>@<实例名> file=/srv/db/temp.dmp
1.2 Windows机器导出
进入sqlplus命令行sqlplus /nolog
用dba用户登录 conn system/a123@localhost/orcl as sysdba
创建目录create or replace directory dump_dir as 'D:\oracle\datafile\';
授权grant read,write on directory dump_dir to <源数据库用户名>;
授权 grant exp_full_database to <源数据库用户名>;
退出sqlplus exit
导出expdp <源数据库用户名>/<源数据库用户密码> directory=dump_dir dumpfile=<数据库文件名dmp后缀> logfile=<日志文件名> schemas=<源数据库用户名>
2 导入(以Windows机器为例)
进入命令行sqlplus /nolog
用dba用户登录 conn system/a123@localhost/orcl as sysdba
创建表空间 create tablespace orcltbs datafile 'e:\orcltbs1.dbf' size 50M autoextend on next 5M maxsize 1024M
extent management local autoallocate segment space management auto;
创建用户create user <目标用户名>identified by <目标用户密码>default tablespace<表空间名>
授权 grant dba to <目标用户名>
创建目录create or replace directory dump_dir as 'D:\oracle\datafile\';
退出sqlplus exit
导入数据库impdp <目标用户名>/<目标用户密码>@<目标数据库机器ip>/<目标实例名>directory=dump_dir dumpfile=<数据库文件名>remap_schema=<源用户名>:<目标用户名> remap_tablespace=<源表空间>:<目标表空间>