CMD 迁移oracle数据库(远程到本地)

数据导出:
 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
   exp system/manager@TEST file=d:\daochu.dmp full=y
 2 将数据库中system用户与sys用户的表导出
   exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
 3 将数据库中的表table1 、table2导出
   exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2) 
 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
   exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like  '00%'\"
  
     上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。
                     不过在上面命令后面 加上 compress=y  就可以了

数据的导入
 1 将D:\daochu.dmp 中的数据导入 TEST数据库中。
   imp system/manager@TEST  file=d:\daochu.dmp
   上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
   在后面加上 ignore=y 就可以了。
 2 将d:\daochu.dmp中的表table1 导入
 imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1) 
 
 基本上上面的导入导出够用了。不少情况我是将表彻底删除,然后导入。


本人在迁移的过程中遇到的一些问题列举出来给大家参考参考:

① EXP-00091 正在导出有问题的统计信息 问题的解决

EXP-00091 正在导出有问题的统计信息 问题的解决
治标不治本的解决方法:exp 命令的最后 加上 STATISTICS=NONE;;
此内容摘录字互联网,方便大家查询使用
EXP-00091 正在导出有问题的统计信息 问题的解决
EXP-00091 正在导出有问题的统计信息。
问题:
. 正在导出表 BONUS导出了 0 行
EXP-00091: 正在导出有问题的统计信息。
. . 正在导出表 DEPT导出了 4 行
EXP-00091: 正在导出有问题的统计信息。
EXP-00091: 正在导出有问题的统计信息。
. . 正在导出表 EMP导出了 12 行
EXP-00091: 正在导出有问题的统计信息。

解決方法:
step 1 先查看数据库服务器数据的字符集:
a.打开SQLPLUS,用sys用户登录。
b .执行SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';。
其中'NLS_CHARACTERSET'必须为大写。
PARAMETER
--------------------
VALUE
--------------------
SIMPLIFIED CHINESE_CHINA.AL32UTF8
或者
SQL> select userenv('language') from dual;


USERENV('LANGUAGE')
或者
select * from nls_database_parameters t where t.parameter='NLS_CHARACTERSET'
or
select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
--------------------------------------------------------------------------------


SIMPLIFIED CHINESE_CHINA.AL32UTF8


step 2 根据step1查出的NLS_CHARACTERSET来修改exp 的环境变量:
(Linux环境)
在oracle用户的.bash_profile文件加入
export NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8 //AMERICAN_AMERICA.ZHS16GBK


(Windows环境)
1、打开注册表,依次进入HKEY_LOCAL_MACHINE→SOFTWARE→ORACLE→HOME0目录。
2、察看NLS_LANG的值。
3、将其修改为数据库服务器端字符集相同的字符。

临时设定环境变量
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8


这样虽然在exp 的时候,不会再报exp -00091 但是dos 下的提示信息却变成乱码了,但是这个不影响exp .
导出完后再 set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK 即可

② 导入时报错:IMP-00013: 只有 DBA 才能导入由其他 DBA 导出的文件(用户权限不够)

解决方法:

经由常规路径由 EXPORT:V10.02.01 创建的导出文件
IMP-00013: 只有 DBA 才能导入由其他 DBA 导出的文件
IMP-00000: 未成功终止导入

当exp 导出的用户拥有dba的角色,但imp导入的用户不拥有dba的角色时,
在imp导入是会出现上面的错误。
如果exp导出的用户用到Oracle数据库的系统表空间,导入的用户没有dba的角色,也会报上面的错误。


可以在exp导出之前,回收用户dba的角色 revoke dba  from user。再exp导出数据。
这样导入数据则不会报错。


或者把dba角色赋予给imp导入的用户。grant dba  to user

猜你喜欢

转载自blog.csdn.net/qq_36801146/article/details/78032791
今日推荐