一个外部数据库管理员导出了一个生产数据库并将其导入到测试环境中。我们使用的是 Oracle 9.2。大多数导入的数据库对象(表、视图、idexes、包...)工作正常,但我们对三个特定表有问题:我们可以在这些表上执行 SELECT、UPDATE、DELETE,但我们不能在此创建视图表。
换句话说,以下工作:
create or replace view v_test_view as select 1 x from dual; // we can create views
create or replace view v_test_view as select 1 x from someTable;
select * from problematicTable; // we can select data from problematic table
但这不起作用:
create or replace view v_test_view as select 1 x from problematicTable;
--> ORA-01031: insufficient privileges
背景资料:
- db admin 使用导入/导出实用程序复制数据库架构
- 生产和测试Oracle的版本不完全相同(生产是9.2.0.8,测试是9.2.0.7)
- 初始导入完成后,有问题的表在对象目录(和数据库开发工具)中可见,但是当尝试从该表中选择时,我们得到了“无效标识符”。之后,表被重新导入,现在我们可以从中选择,但不能在它们上创建视图
有任何想法吗?
更新: 看起来情况更加奇怪。当使用一个 oracle 会话时,我们可以从该表中选择数据,在另一个 Oracle 会话中(使用同一用户登录!),我们得到“ORA-00904:无效标识符”
更新#2: 用于导入的导出数据已成功用于将数据导入另一个测试环境(我们称之为 TEST1),该环境与有问题的环境(TEST2)位于 Oracle 的同一实例上。这两个环境之间的区别在于 TEST1 使用与生产相同的用户(模式名称),但 TEST2 使用另一个用户(因此对象被导入另一个模式名称)。有问题的表没有任何与正常工作的表不同的特殊安全属性。
马特拉