oracle 数据迁移

Oracle9i迁移到oracle10g 从客户端导出。

导出

1. 数据导出只能由相同版本的clientserver导出,查看数据库版本命令select * from v$version;否则报错EXP-00056ORA-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.sqlstart 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) 重新对该用户进行导入。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值