ORACLE的数据迁移有四种方式,今天记录一下最简单的方法。
exp/imp逻辑备份与恢复:
这种方式可以跨平台操作,而且操作简单,但是停机时间较长。所以特别适合小型项目或者对数据的即时性没有强烈敏感的项目。
这种方式也比较适合个人数据的管理。
操作方法为:
1.检查迁出库和迁入库的数据库版本是否一致。
select * from v$version;
2.检查迁出库和迁入库的字符集是否一致。
数据库服务器字符集
select * from nls_database_parameters;
客户端字符集环境
select * from nls_instance_parameters;
如何查询dmp文件的字符集
用oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下SQL查出它对应的字符集:
select nls_charset_name(to_number('0354','xxxx')) from dual;
3.检查迁出库的表是否都已经分配segment了。
a.分析所有需要迁出的表
analyze table table_name compute statistics;
b.查询所有没有分配段的表
select * from user_tables where num_rows=0;
c.给没有段的表分配段
alter table table_name allocate extent;
4.在迁出库执行$ exp user/pwd@sid owner=XXX file=exp_xxx.dmp log=exp_xxx.log buffer=6000000。
生成的文件放在控制台窗口所在的目录下
5.在迁入库执行$ imp user/pwd@sid fromuser=XXX touser=XXX file=exp_xxx.dmp log=imp_xxx.log ignore=y。
fromuser是文件中需要导出的内容,touser是数据库中需要导入的用户