Linux服务器上的oracle数据导入和导出

背景:

在同一台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

上一篇:简单实现高并发处理秒杀思路(redis分布式锁)


下一篇:在Spring MVC Controller的同一个方法中,根据App还是WEB返回JSON或者HTML视图。