ORA-00904: "XXXXXX": 标识符无效

情景一:数据拆分迁移后,在逻辑备份方面保留使用就的备份策略。由于新库为11g,老版本的10g exp客户端无法导出新库数据,故升级客户端到11g,测试中又遇到“ORA-00904: "XXXXXX": 标识符无效"的错误。

情景二:从Oracle10g用exp命令导出数据,在11g中导入后,程序运行后报“ ORA-00904: "XXXXXX": 标识符无效 ”的错误。

经查阅资料,如下:

This error occurs if you try the old export command from an 11g client against a database on version 10g or lower. The export command runs a query against a table called EXU9RLS in the SYS schema. On 11g this table was expanded with the column POLTYP and the export command (exp) expects to find this column. This should not be much of a problem since Data Pump export can be used.

看来是版本的问题


解决方法1:执行如下脚本

CREATE OR REPLACE VIEW exu9rls (objown, objnam, polgrp, policy, polown, polsch, polfun, stmt,chkopt, enabled, spolicy, poltyp) ASSELECT u.name, o.name, r.gname, r.pname, r.pfschma, r.ppname,r.pfname,DECODE(BITAND(r.stmt_type, 1), 0, '', 'SELECT,') ||DECODE(BITAND(r.stmt_type, 2), 0, '', 'INSERT,') ||DECODE(BITAND(r.stmt_type, 4), 0, '', 'UPDATE,') ||DECODE(BITAND(r.stmt_type, 8), 0, '', 'DELETE,'),r.check_opt, r.enable_flag,DECODE(BITAND(r.stmt_type, 16), 0, 0, 1),case bitand(r.stmt_type,16)+bitand(r.stmt_type,64)+bitand(r.stmt_type,128)+bitand(r.stmt_type,256)+ bitand(r.stmt_type,8192)+bitand(r.stmt_type,16384)+bitand(r.stmt_type,32768)when 16 then 'DBMS_RLS.STATIC'when 64 then 'DBMS_RLS.SHARED_STATIC'when 128 then 'DBMS_RLS.CONTEXT_SENSITIVE'when 256 then 'DBMS_RLS.SHARED_CONTEXT_SENSITIVE'when 8192 then 'DBMS_RLS.XDS1'when 16384 then 'DBMS_RLS.XDS2'when 32768 then 'DBMS_RLS.XDS3'else 'DBMS_RLS.DYNAMIC'endFROM sys.user$ u, sys.obj$ o, sys.rls$ rWHERE u.user# = o.owner# ANDr.obj# = o.obj# AND(UID IN (o.owner#, 0) OREXISTS (SELECT roleFROM sys.session_rolesWHERE role = 'SELECT_CATALOG_ROLE'))/GRANT SELECT ON sys.exu9rls TO PUBLIC;


由于需要修改数据库视图结构,不到万不得已本人不打算采用这种方式。

 

解决方法2:

采用不同版本的客户端分别导出10g和11g数据

但是在实施过程中又遇到exp-00000错误,最后发现是因为ORACLE_HOME 环境变量设置而引起的(在使用10g客户端时,ORACLE_HOME指向11g的安装路径)

最终修改备份脚本如下:

set ORACLE_HOME=D:\oracle\product\10.2.0\db_1.....10g备份脚本
set ORACLE_HOME=D:\app\product\11.2.0\client_1....11g备份脚本


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值