当前位置:数据库 > Oracle >>

Oracle exp imp导出导入实例

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
 
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,