日期:2014-05-16 浏览次数:20394 次
对于数据的的迁移,特别是不同版本之间和不同系统之间的迁移,使用exp/imp可以完成,
当然,我们推荐使用expdp/impdp进行数据的导入,导出。下面我们简单讲讲exp、imp的基本操作
1 整个数据库的导出、导入
a 导出、导入之前我们需要确认数据库的字符集,设置环境变量NLS_LANG
export NLS_LANG=AMERICAN_AMERICA.UTF8(这是我的参数,具体的根据实际情况而定)
#查询oracle字符集参数
select * from v$nls_parameters
select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
select value from nls_database_parameters t where t.PARAMETER='NLS_NCHAR_CHARACTERSET'
b 执行导出命令,需要使用一定权限的用户,否则只会导出该用户拥有的对象
exp system/root file=/backup/full.dmp log=/backup/full.log full=y
c 进行导入命令
imp system/root file=/backup/full.dmp log=/backup/full2.log full=y ignore=y
2 基于用户进行数据的导出、导入
export NLS_LANG=AMERICAN_AMERICA.UTF8
a 执行导出命令,使用对应的用户,可以指定owner,也可以不指定 但是不能指定full参数
exp scott/root file=/backup/scott.dmp log=/backup/scott.log 或者
exp system/root file=/backup/scott.dmp log=/backup/scott.log owner=scott
b 如果没有用户和表空间,我们需要先创建指定的表空间和用户
create tablespace "hsj"
logging
DATAFILE '/u01/oradata/orcl/heshengjun.ora' SIZE 500M REUSE EXTENT
MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;
创建用户
create user hsj identified by root
default tablespace hsj
temporary tablespace temp;
c 授予scott权限,具体用户根据自己的用户而定
GRANT UNLIMITED TABLESPACE TO "SCOTT";
GRANT CREATE DATABASE LINK TO "SCOTT";
GRANT CREATE ANY TABLE TO "SCOTT";
GRANT CREATE ANY TRIGGER TO "SCOTT";
GRANT CREATE ANY VIEW TO "SCOTT";
GRANT CREATE DATABASE LINK TO "SCOTT";
GRANT CREATE PROCEDURE TO "SCOTT";
GRANT CREATE TABLE TO "SCOTT";
GRANT CREATE TABLESPACE TO "SCOTT";
GRANT CREATE TRIGGER TO "SCOTT";
GRANT DROP ANY TABLE TO "SCOTT";
GRANT INSERT ANY TABLE TO "SCOTT";
GRANT UPDATE ANY TABLE TO "SCOTT";
GRANT CONNECT TO "SCOTT";
GRANT RESOURCE TO "SCOTT";
GRANT IMP_FULL_DATABASE to "SCOTT"
GRANT DBA TO "SCOTT";
d 执行导入命令
imp scott/root file=/backup/scott.dmp log=/backup/scott2.log full=y
或者
imp scott/root file=/backup/scott.dmp log=/backup/scott2.log fromuser=scott touser=scott
3 基于表对象的导出导入
export NLS_LANG=AMERICAN_AMERICA.UTF8
a 导出表 对象 demp 和emp
#在linux系统下,对特殊符号转义
exp scott/root file=/backup/table.dmp log=/backup/table.log tables=\(dept,emp\);
b 导入表 对象 demp 和emp
imp scott/root file=/backup/table.dmp log=/backup/table2.log full=y
或者
imp scott/root file=/backup/table.dmp log=/backup/table2.log tables=\(dept,emp\);
总结:对于其他参数,比如缓存 buffer,压缩 compress 都没有配置,有兴趣可以参考文档进行配置
对于读取参数文件,将会在expdp、impdp中进行介绍
补充:对于数据库的迁移,务必设置相同的字符集。或者兼容的字符集