一、导出
1、oracle的数据导出,导入都是在服务器上进行,所以你要登录到数据库的服务器,用sqlplus来进行,速度比imp,exp要好很多,内容也更全
2、SQL> CREATE OR REPLACE DIRECTORY dir_dump AS 'D:dp_win_dir'; windows下可能要先新建这个文件夹
SQL> grant read,write on directory dp_dir to ncdtk; /*对用户dyl附加对目录dp_dir可读可执行的权限,用system身份附权限*/
Grant succeeded.
3、 数据泵导出数据,必须在cmd命令下
expdp ncdtk/ncdtk schemas=ncdtk DIRECTORY=dp_dir dumpfile=ncdtk.dmp logfile=ncdtk.log;
如果是多实例的话最好这样:
expdp djksk/djksk@db_djksk schemas=djksk DIRECTORY=dp_dir dumpfile=djksk.dmp logfile=djksk.log;
二、导入
1、也是先建导入目录,如果建好了,就不用再建
select * from dba_directories;可以查看是否建了导入或者导出目录
2、--从源数据库中向目标数据库导入表p_street_area
按用户导入(可以将用户信息直接导入,即如果用户信息不存在的情况下也可以直接导入)
(1)impdp sq/sq_hfqnc@hfq transform=segment_attributes:n dumpfile =sq.dmp logfile=sq.log directory=dir_dump
reuse_datafiles=y REMAP_SCHEMA=djksk:ld 这个是导入分区表的语句
(2)impdp sq/sq_hfqnc@hfq dumpfile =sq.dmp logfile=sq.log directory=dir_dump 这个是导入一般表的语句
三、创建用户和删除用户
要想用数据泵导入,导入的数据要完全覆盖之前数据,索性先删除用户,再创建用户,再导入
1、删除用户,提示有连接
(1)select username,sid,serial#,status from v$session 查看哪些status不是killed的,然后用下面语句给她杀掉
(2)alter system kill session'532,4562'
2、新建用户
create temporary tablespace sq_temp //临时表空间
tempfile 'D:appAdministratororadatahfqsq_temp.dbf' //表空间经常放置的路径
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
create tablespace sq_data
logging
datafile 'D:appAdministratororadatahfqsq_data.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
create user sq identified by "sq_hfqnc" //创建用户
default tablespace sq_data
temporary tablespace temp;
grant connect,resource,dba to sq; //给用户赋权限
grant create session, create table,unlimited tablespace,create procedure,
create sequence,create synonym,create trigger,create view to sq;
grant all privileges TO sq; //如果要求不大,就把所有的权限赋给用户
四、如果导错了,需要删除一个用户,但是这个用户无法删除,需要查出会话里的用户,然后杀掉,有可能会话里有多个这个用户,那么要全部一一杀掉才行
select username,sid,serial#,status from v$session
alter system kill session'532,4562'
五、一般的导入导出语句
1、导入 在cmd的模式下,注意加上日志:
imp center/center@ONECARD_CENTER file='D:data7中dataoradata.dmp' fromuser='CCENSE' touser='center' ignore=y commit=y grants=y log='D:data7中dataimp.log'
2、导出 在cmd的模式下
exp scott/tiger@orcl file=F:sign.sql tables=表名,表名 grants=y log='D:data7中dataexp.log'