Linux下Oracle备份与数据迁移

 原文地址: http://www.javali.org/23

 

环境: OS : CentOS4  DBServer: Oracle10g  Client: pl/sql Developer + SecureCRT

这里只是我在工作中用到了一些简单的用法,也是最常用到的,在这里总结一下

Oracle自带了几个数据备份和迁移的工具,很强大,也很好用: exp, imp expdp

一般包括一下步骤:

1,登录oracle

Su –oracle

Sqlplus /nolog

Conn /as sysdba

2,创建表空间/用户

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

3,创建用户

–删除用户

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;

4,导入数据

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

5,Expdp工具使用

两种方式: 按照用户 或者表两种模式导出

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”’

条件是先单引号,里面是双引号!

你可能感兴趣的:(oracle,linux)