Oracle9i迁移到oracle10g 从客户端导出。
导出
1. 数据导出只能由相同版本的client从server导出,查看数据库版本命令select * from v$version;否则报错EXP-00056,ORA-6550。
2. 若sqlplus无法远程登陆server端,报错无法识别的sid,使用net configuration assistant配置tns。
3. 导出命令:在cmd窗口下运行 exp ‘[username]/[password]@[sid] as sysdba’ file=[dmp文件路径] log=[log文件路径] full=y;其中username必须是sys用户。
例如:exp ‘sys/sys@orcl as sysdba’ file=D:\orcl.dmp log=d:\orcl.log full=y。
4. 若导出时报错ORA-19206: Invalid value for query or REF CURSOR parameter。解决办法:
a、 在server端[ORACLE_HOME]/rdbms/admin/目录下进去sqlplus,
B、执行select name from v$database查看当前实例的sid,
C、若不是要导出的实例,执行connect sys/[password]@[sid] as sysdba进入要导出的实例。
D、执行catmeta.sql: start catmeta.sql;
E、在客户端重新导出。
导入
1. 查询要导出数据库实例的用户和默认表空间:
select username, default_tablespace, account_status from dba_usrs order by default_tablespace, username。
2. 在新数据库中创建其中非系统用户且状态不是expired&locked的用户,并为用户授dba权限:
Create user [username] identified by [密码] default tablespace [default_tablespace];
Grant dba to [username];
3. 根据每个用户依次导入新数据库:
imp [username]/[password]@[sid] file=[文件路径] fromuser=([user]) touser=([user]);其中两个user必须一致。
4. 导入时报错可执行回退:
a) Drop user [username] cascade;
b) 重新创建该用户并授予dba权限;
c) 不要对系统用户执行此步骤;
5. 导入时可能因为用户间对象存在引用、外键等关系,因而产生找不到对象的错误:
a) 执行第4条进行回退。
b) 先导入上一步骤找不到的对象所属用户的数据。
c) 导入出错用户的数据。
6. 注意用户的dblink,请将原指向老数据库的dblink指向新数据库。
7. 个别表可能会被跳过,并因此在执行视图创建,存储过程的时候产生对象找不到的错误:
a) 根据创建语句单独创建该表
b) 导入该表数据
c) 执行出错的视图创建语句和存储过程。
8. 出现IMP-00017:由于oracle错误00942,以下语句失败:
Alter_table online_media add constrint “loc_c_id_fk” foreign key(”product_Id”) references oe.product_information(“product_id”) enable novalidate;
a) 查看用户oe是否被导入,若未被导入则导入用户oe。
b) 查看用户oe所属表product_information是否赋予报错用户select,references权限。
9. 因找不到对象ordsys.ordimagesignature对象报错:
a) 执行第4条进行回退。
b) 在导入语句最后加入 toid_novlalidate=(ordsys.ordimagesignature)跳过该type对象的验证。
10. 导入过程中可能会产生directory不存在错误:
a) 执行第4条进行回退。
b) 以当前导入用户登陆并创建directory,例如create directory dump_dir as ‘/dir’;注意as后的路径必须是相对路径。
c) 重新对该用户进行导入。
1313

被折叠的 条评论
为什么被折叠?



