Oracle exp imp导出导入实例
一. 导出工具 exp
1. 它是操作系统下一个可执行的文件 存放目录/ORACLE_HOME/bin
exp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移
www.zzzyk.com
它有三种模式:
a. 用户模式: 导出用户所有对象以及对象中的数据;
Java代码
exp username/password@XE owner=xxx file=d:\xxx_20130223.dmp;
b. 表模式: 导出用户所有表或者指定的表;
Java代码
exp username/password@XE owner=xxx file=d:\xxx_20130223.dmp TABLES=(SONIC);
c. 整个数据库: 导出数据库中所有对象。 www.zzzyk.com
Java代码
exp username/password@XE file=d:\xxx_20130223.dmp FULL=Y;
二.导入工具 imp
1. 它是操作系统下一个可执行的文件 存放目录/ORACLE_HOME/bin
imp导入工具将EXP形成的二进制系统文件导入到数据库中.
它有三种模式:
a. 用户模式: 导入用户所有对象以及对象中的数据;
Java代码
imp username/password@XE fromuser =xxx touser =xxx file=d:\xxx_20130223.dmp;
b. 表模式: 导入用户所有表或者指定的表; www.zzzyk.com
Java代码
imp username/password@XE fromuser =xxx file=d:\xxx_20130223.dmp TABLES=(SONIC);
c. 整个数据库: 导入数据库中所有对象。
Java代码
imp username/password@XE file=d:\xxx_20130223.dmp FULL=Y;
三.导入导出实例
操作步骤:
oracle sqlplus连接说明:
Java代码
cmd
sqlplus /nolog
conn sys/root@IBMSPRO as sysdba //conn system/admin@ORCL
提示“已连接。” 表示连接成功
1.从 A 上导出数据文件到指定目录(目录名称自己定义,只要自己能找到就行,和用户名没有关系)
Java代码
exp xxx/xxx@IBMS_40 owner=ibms file=d:\ibms_40_20130223.dmp;
2.在A机器上查看用户默认表空间,以便导入时创建一样的表空间
Java代码
select username,default_tablespace from dba_users where username ='ibms';
3.查看用户使用的表空间
Java代码
select DISTINCT owner ,tablespace_name from dba_extents where owner like 'ibms';
4.查看表空间对应的数据文件,以便在B上创建大小合适的数据文件。
Java代码
select file_name,tablespace_name from dba_data_files where tablespace_name in ('IBMS-DATA','IBMS-DATAB'); //'IBMS-DATA','IBMS-DATAB'为上面查询出的表空间
5.检查B机器的表空间,看是否存在IBMS-DATA,IBMS-DATAB
Java代码
select name from v$tablespace where name in ('IBMS-DATA','IBMS-DATAB');
查找不到,说明没有这个两个表空间,需要创建。
6.要导入数据的server没有IBMS-DATA,IBMS-DATAB表空间。创建
Java代码
CREATE TABLESPACE "IBMS-DATA" LOGGING DATAFILE 'D:\oracle\app\oracle\product\10.2.0\oradata\ibmspro\mytbs01.dbf' SIZE 500M AUTOEXTEND ON NEXT 32M EXTENT MANAGEMENT LOCAL;
CREATE TABLESPACE "IBMS-DATAB" LOGGING DATAFILE 'D:\oracle\app\oracle\product\10.2.0\oradata\ibmspro\mytbs02.dbf' SIZE 500M AUTOEXTEND ON NEXT 32M EXTENT MANAGEMENT LOCAL;
7.在服务器B上查找用户是否已经存在
select username from dba_users where username='ibms';
接下来分为两种情况,如果不存在那么按照 [一] 方法,如果存在按照 [二]
【一】创建用户
create user ibms identified by Test2passwd default tablespace cmis temporary tablespace temp profile default;
【二】如果用户存在
drop user ibms cascade; (删除用户及其拥有的所有对象)
#此时如果这个用户在连接,drop会出错,必须先杀掉用户的session,然后再drop user
SELECT 'alter system kill session '''||SID||','||SERIAL#||''' immediate;' FROM V$SESSION WHERE USERNAME='ibms';
#(如果用户正在连接,构建命令并杀掉)
Java代码
create user ibms identified by ibmspasswd default tablespace IBMS-DATA temporary tablespace IBMS-DATA IBMS-DATAB default;(创建用户)
grant connect,resource to ibms; (授权)
--放开所有表空间
--grant unlimited tablespace to ibms;
--给所有权限
--grant resource,connect,dba to ibms;
8.把文件从A机器上拷贝到B机器上。
9.最后在A机器上按用户导入数据
Java代码
imp xxx/xxx@IBMSPRO fromuser=ibms touser=ibms file=d:\xxx_20130223.dmp ignore=y
四.导入可能出现的问题:
(1) imp和exp使用的字符集不同
如果字符集不同, 导入会失败, 可以改变unix环境变量或者NT注册表里NLS_LANG相关信息.
导入完成后再改回来.
www.zzzyk.com
(2) imp和exp版本不能往上兼容
imp可以成功导入低版本exp生成的文件, 不能导入高版本exp生成的文件
根据情况我们可以用
imp username/password@connect_string
说明: connect_string 是在/ORACLE_HOME/network/admin/tnsnames.ora
定义的本地或者远端数据库的名称
注意事项:
UNIX: /etc/hosts 要定义本地或者远端数据库服务器的主机名
win2000: winnt\system32\drivers\etc\hosts