本次使用的是oracle数据库的Scott和hr用户实现scott用户模式下导出hr模式的jobs、employees表。
第一步:sqlplus中用system以sysdba身份登陆解锁用户Scott和hr
alter user scott account unlock identified by 123456;//解锁用户scott 并且设定密码 123456;
alter user hr account unlock identified by 123456 ;//解锁hr 加锁为alter user hr account lock;
第二步:sqlplus中给scott授予dba或者exp_full_database权限(只有这个权限才能导出其他模式下的对象)
grant dba to scott; //收回权限为revoke dba from scott;
第三步:在sqlplus中设置导出的目录位置
create directory backup as ‘D:\backup’; //注意,如果D盘下没有backup文件夹,要手动创建该文件夹;
第四步:system 用户授予scott用户backup文件路径的读写权限
grant read,write on directory backup to scott;
第五步:在cmd命令行下导出表对象(注意:使用数据泵方式导入导出数据要在oracle服务器端进行,也就是cmd命令行下直接使用expdp和impdp命令)
expdp scott/123456 directory=backup dumpfile=mytest.dump logfile=mylog.log tables=hr.jobs,hr.employees //注意此处没分号哦;命令行的意思是:使用scott用户导出,导出目录为backup参数指定的目录,导出文件为mytest.dump 日志文件为同一目录下的mylog.log;
接下来可以在D:\backup 目录下看到导出结果
note:导出对象可以是tables,schemas,tablespaces,full=y(代表导出整个数据库)。
接下来将刚才导出的hr.jobs表和hr.employees表导入到scott模式下
由于刚才授予了scott的dba权限,所以在此可以不用再次授权,如果第一次授予的是exp_full_database权限,这里还需授予imp_full_database 权限
第一步:在cmd命令行下输入
impdp scott/123456 directory=backup dumpfile=mytest.dmp tables=hr.jobs,hr.employees remap_schema=hr:scott
//注意此次也没有分号,必须使用remap_schema 因为原来表是属于hr的,现在要导入到scott用户下,所以要使用remap_schema.接下来结果成功,但是由于发生了模式转换会有警告出现,不影响结果。在plsql中可以看到scott下多了jobs表和employees表。这里同样可以导入schemas,tablespaces和database(此时为full=y)
//注意,只要想把一个模式的对象放到另一个模式中,就要用到remap_schema=source_schema:target_schema
//remap_tablespace 将一个表空间数据放另一个中
table_exits_action 当表已经存在时导入作业要执行的操作,默认为skip
skip:导入作业会跳过已经存在表处理下一个对象;
append:会像已经存在的表中追加数据;
truncate:导入作业会截断表,然后向其中追加新数据;
replace:导入作业会删除已存在的表,然后重建表追加数据。
transport_datafiles 指定移动表空间是要导入到目标数据库的数据文件(例如:dbf文件)
//例如:transport_datafiles='d:\test.dbf'
第一步:sqlplus中用system以sysdba身份登陆解锁用户Scott和hr
alter user scott account unlock identified by 123456;//解锁用户scott 并且设定密码 123456;
alter user hr account unlock identified by 123456 ;//解锁hr 加锁为alter user hr account lock;
第二步:sqlplus中给scott授予dba或者exp_full_database权限(只有这个权限才能导出其他模式下的对象)
grant dba to scott; //收回权限为revoke dba from scott;
第三步:在sqlplus中设置导出的目录位置
create directory backup as ‘D:\backup’; //注意,如果D盘下没有backup文件夹,要手动创建该文件夹;
第四步:system 用户授予scott用户backup文件路径的读写权限
grant read,write on directory backup to scott;
第五步:在cmd命令行下导出表对象(注意:使用数据泵方式导入导出数据要在oracle服务器端进行,也就是cmd命令行下直接使用expdp和impdp命令)
expdp scott/123456 directory=backup dumpfile=mytest.dump logfile=mylog.log tables=hr.jobs,hr.employees //注意此处没分号哦;命令行的意思是:使用scott用户导出,导出目录为backup参数指定的目录,导出文件为mytest.dump 日志文件为同一目录下的mylog.log;
接下来可以在D:\backup 目录下看到导出结果
note:导出对象可以是tables,schemas,tablespaces,full=y(代表导出整个数据库)。
接下来将刚才导出的hr.jobs表和hr.employees表导入到scott模式下
由于刚才授予了scott的dba权限,所以在此可以不用再次授权,如果第一次授予的是exp_full_database权限,这里还需授予imp_full_database 权限
第一步:在cmd命令行下输入
impdp scott/123456 directory=backup dumpfile=mytest.dmp tables=hr.jobs,hr.employees remap_schema=hr:scott
//注意此次也没有分号,必须使用remap_schema 因为原来表是属于hr的,现在要导入到scott用户下,所以要使用remap_schema.接下来结果成功,但是由于发生了模式转换会有警告出现,不影响结果。在plsql中可以看到scott下多了jobs表和employees表。这里同样可以导入schemas,tablespaces和database(此时为full=y)
//注意,只要想把一个模式的对象放到另一个模式中,就要用到remap_schema=source_schema:target_schema
//remap_tablespace 将一个表空间数据放另一个中
table_exits_action 当表已经存在时导入作业要执行的操作,默认为skip
skip:导入作业会跳过已经存在表处理下一个对象;
append:会像已经存在的表中追加数据;
truncate:导入作业会截断表,然后向其中追加新数据;
replace:导入作业会删除已存在的表,然后重建表追加数据。
transport_datafiles 指定移动表空间是要导入到目标数据库的数据文件(例如:dbf文件)
//例如:transport_datafiles='d:\test.dbf'