ORA-23435: cannot create an updatable ROWID materialized view with LOB columns
Cause: The propagation of LOB data from materialized view sites to the master site requires a primary key on the replicated table. Thus updatable ROWID materialized views that contain LOB columns are not supported.
Action: Create a primary key materialized view instead of a ROWID materialized view. If the materialized view already exists, it can be converted to a primary key materialized view using the ALTER MATERIALIZED VIEW DDL command.
ORA-23435错误提示不能使用LOB字段创建可更新的ROWID物化视图。这是由于可更新的ROWID物化视图无法使用LOB字段。LOB(Large Object)字段通常用于存储非常大的特殊文件类型,如BLOB(Binary Large Object)、CLOB(Character Large Object)等,这些文件一般在数据库中表现为可输入/输出的流。
ORA-23435的官方解释如下:
ORA-23435: cannot create an updatable ROWID materialized view with LOB columns
Cause: An attempt was made to create an Updatable ROWID materialized view on a base table that has LOB columns.
Action: Remove the LOB columns from the base table and create the Updatable ROWID Materialized View
这是由于可更新的ROWID物化视图无法使用LOB字段,而Oracle不支持改变LOB字段的物化属性(updatable rowid materialized view)。
1.检查物化视图是否含有LOB字段:
SELECT * FROM DBA_LOBS WHERE VIEW_NAME = ‘PVT_MVIEW_NAME’;
2.如果有,则不能使用LOB字段创建可更新的ROWID物化视图,需要移除LOB字段:
ALTER TABLE base_table DROP COLUMN lob_column;
3.重新创建可更新的ROWID物化视图:
CREATE MATERIALIZED VIEW mview_name — Refresh on Complete Refresh with Rowid AS Select base_column from base_table;