我有一个分区表:SAMPLE_PARTITIONED_TBL
基于PERIOD_ID
数字字段(数据集:201001...201212.. 等等)有 60 个分区(没有子分区)。该表有几个本地索引,但由于某种原因,问题出在 PK 索引上。我在另一个模式中有相同的 DDL,它在那里工作正常。不确定 tio 寻找什么来解决这个问题。
我正在使用 Informatica(ETL 工具)将数据加载到该表中。在加载之前,我们会截断分区表:
SQL> ALTER TABLE owner_name.SAMPLE_PARTITIONED_TBL
2 TRUNCATE PARTITION SMPL_201001 DROP STORAGE;
Run Code Online (Sandbox Code Playgroud)
当加载开始时,我收到以下错误:
Message: Database errors occurred:
ORA-01502: index 'owner_name.SAMPLE_PARTITIONED_TBL_PK' or
partition of such index is in unusable state
Run Code Online (Sandbox Code Playgroud)
查看索引的状态...
SQL> select STATUS from all_indexes
2 where INDEX_NAME like 'SAMPLE_PARTITIONED_TBL_PK';
STATUS
--------
UNUSABLE
Run Code Online (Sandbox Code Playgroud)
现在在执行SQL> ALTER INDEX owner_name.SAMPLE_PARTITIONED_TBL_PK REBUILD;
本地分区索引返回STATUS=VALID
状态后,加载可以继续没有问题。
更新:
根据下面@Mat 的观察,我正在检查 PK 索引是否在本地分区:
SQL> select * from all_indexes where table_name = 'SAMPLE_PARTITIONED_TBL'; …
Run Code Online (Sandbox Code Playgroud) 我使用 Informatica 来管理一些将数据加载到 Oracle 9i 数据仓库的 ETL 过程。
今天,我在 Informatica 会话日志中收到以下错误:
Message: Database driver error...
CMN_1022 [DELETE FROM SOME_TABLE
WHERE PERIOD_NAME = 'OCT-12'
ORA-01775: looping chain of synonyms
Database driver error...
Function Name : executeDirect
SQL Stmt : DELETE FROM SOME_TABLE
WHERE PERIOD_NAME = 'OCT-12'
Oracle Fatal Error
Database driver error...
Function Name : ExecuteDirect
Oracle Fatal Error
]
Run Code Online (Sandbox Code Playgroud)
现在这是一个印刷错误,表名拼写错误。Oracle 错误显然让我们走错了方向……所以只是想了解为什么在同义词没有问题的情况下会显示此错误。