背景:
在同一台Linux服务器上,有两个数据库用户,分别为:database1,database2,如何把database1用户下面的所有的表和数据,导入到database2数据库(database2为新创建的用户,没有创建任何表,是一个空的数据库)
操作步骤:
1、创建数据库用户database2(注:这里只创建新的数据库用户database2,database1数据库用户已经存在,并且database1用户已有表和数据)
登录数据库linux服务器,切换成oracle用户(这里说的oracle指的是数据库的一个管理员用户名,角色是sysdba),操作如下:
su - oracle
sqlplus / as sysdba; -- 输完后回车,可以进入sqlplus客户端,进行SQL语句操作
create user database2 identifield by 123456;
grant connect, resource, dba to database2;
alter user database2 default tablespace PB_DATA;
2、创建文件导出的目录,database1用户下的表数据,导出后的文件,将会保存在这个目录下
SQL > create directory PB_DUMP as ‘\usr\history\data\exoport‘;
PB_DUMP是linux系统中\usr\history\data\exoport目录的别名,通过上面SQL语句创建后,信息会保存在oracle的目录表中,可以查询表select * from dba_directories中的DIRECTORY_NAME字段值确认,对应的路径是DIRECTORY_PATH字段。
3、创建导出脚本
cat > exp_database1_table_data.par
输入如下内容,保存的脚本文件为exp_database1_table_data.par
userid = ‘oracle / as sysdba‘
directory = PB_DUMP
dumpfile = exp_database1_table_data_20180101.dmp
logfile = exp_database1_table_data_20180101.log
schemas = database1
cluster = n
参数说明:directory参数是一个目录名称, PB_DUMP是步骤2中所创建的oracle目录,也就是导出后的dmp文件保存在这个目录下。dumpfile是导出后的数据文件的名称;logfile是导出日志,导出过程中所打印的日志信息会保存在这里;schemas参数值是即将要导出数据的源数据库用户名。
4、创建导入脚本
cat >imp_database2_table_data.par
输入如下内容,保存的脚本文件为imp_database2_table_data.par
userid = ‘oracle / as sysdba‘
directory = PB_DUMP
dumpfile = exp_database1_table_data_20180101.dmp
logfile = exp_database1_table_data_20180101.log
remap_schemas = database1 :database2
cluster = n
参数说明:remap_schemas的参数值database1 :database2,表示把database1用户下的数据导入到database2用户下(数据文件,来源于从database1用户中已导出的exp_database1_table_data_20180101.dmp)
5、执行导出命令(执行完下面的命令后,数据库用户database2下将会有表和数据,来源于database1)
expdp parfile = imp_database2_table_data.par