原文地址: http://www.javali.org/23
环境: OS : CentOS4 DBServer: Oracle10g Client: pl/sql Developer + SecureCRT
这里只是我在工作中用到了一些简单的用法,也是最常用到的,在这里总结一下
Oracle自带了几个数据备份和迁移的工具,很强大,也很好用: exp, imp expdp
一般包括一下步骤:
Su –oracle
Sqlplus /nolog
Conn /as sysdba
CREATE TABLESPACE TS_SHSJB
DATAFILE
‘/u01/app/oracle/oradata/ora10g/TS_SHSJB_01.DBF’ SIZE 100M AUTOEXTEND ON NEXT50M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
需要保证 datafile目录存在,并且oracle用户有权限
然后利用exp命令导出: Attention: exp是shell命令不是在sqlplus模式下的工具
语法如下:
导出数据库、
exp的三种导出方式: 用户模式,表模式,整个数据库。整库的不常用;
exp使用方法: exp [option]
option语法 keyword=value,exp help=y 显示该命令的帮助信息
用户模式导出:exp userid=scott/tiger@wdb file=scott.dmp log= scott.log owner=scott
表模式导出: exp userid=scott/tiger@wdb file=scott.dmp log= scott.log tables=(emp,dept)
整个数据库导出:exp userid=scott/tiger@wdb file=scott.dmp log= scott.log full=y
这里的wdb格式为 ip:port/sid
–删除用户
drop user SHSJB cascade;
–建用户
CREATE USER SHSJB IDENTIFIED BY SHSJB DEFAULT TABLESPACE TS_SHSJB;
GRANT RESOURCE,CONNECT TO SHSJB;
REVOKE UNLIMITED TABLESPACE FROM SHSJB;
ALTER USER SHSJB QUOTA UNLIMITED ON TS_SHSJB;
imp与exp语法相似,与exp的三种导出方式相对应也有三种导入方式,意义基本一样。
用户模式导入:imp userid=scott/tiger@wdb file=scott.dmp log=scott-imp.log fromuser=scott touser=scott
表模式导入 :imp userid=scott/tiger@wdb file=scott.dmp log=scott-imp.log fromuser=scott touser=scott tables=(emp,dept)
完全导入:imp userid=scott/tiger@wdb file=scott.dmp log=scott-imp.log full=y
两种方式: 按照用户 或者表两种模式导出
Expdp使用中dumpfile 和logfile都不能带路径,像/home/oracle/user.log,这点需要注意,否则会报如下错误:
ORA-39088: file name cannot contain a path specification
可以直接写名字即可logfile,之后他会自动保存在$ORACLE_HOME目录下,如果一定要保存到指定的目录,需要实现做以下操作:、
Su – oracle
Sqlplus / as sysdba
create directory dump_dir as ‘/home/oracle/dump/’;
grant read on directory sys.dump_dir to username;
grant write on directory sys.dump_dir to username;
expdp userid=user/passwd dumpfile=dump_dir:20090716.dmp logfile=dump_dir:20090716-expdp.log schemas=导出的用户
这样就OK了
表模式导出
expdp userid=user/passwd dumpfile=dump_dir:20090716.dmp logfile=dump_dir:20090716-expdp.log tables=user_info,user_order
这样就能导出指定的两张表了。
如果要导出表中某些条件的数据则加上query=user_info:’”where phonenumber is null”’,user_order:’”cellphonenumber is null”’
条件是先单引号,里面是双引号!