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

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

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) AS
SELECT 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'
end
FROM sys.user$ u, sys.obj$ o, sys.rls$ r
WHERE u.user# = o.owner# AND
r.obj# = o.obj# AND
(UID IN (o.owner#, 0) OR
EXISTS (
SELECT role
FROM sys.session_roles
WHERE 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备份脚本


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值