暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 如何将dataype ANYDATA的列LOB移动到新的表空间?

ASKTOM 2019-03-20
328

问题描述

大家好,

我有一个带有公共.ANYDATA列的表格。
SQL> desc XL_EURO_AXAIA.EXT_TCV_TCH_VALEUR
Nom              NULL ?    Type
-----------------------------------------------
TCH_ID           NOT NULL  NUMBER
ID               NOT NULL  NUMBER
VALEUR             PUBLIC.ANYDATA



此表有一个LOB,与ANYDATA列相关联 (我假设)。
SQL> select table_name, column_name, segment_name, index_name from dba_lobs where owner = 'XL_EURO_AXAIA' and tablespace_name = 'XL_DATA_AXAIA';
TABLE_NAME               COLUMN_NAME     SEGMENT_NAME                   INDEX_NAME
------------------------------ ------------------------------ ------------------------------ 
EXT_TCV_TCH_VALEUR       VALEUR          SYS_LOB0000299006C00003$$      SYS_IL0000299006C00003$$


我需要将LOB从表空间XL_DATA_AXAIA移动到新的表空间XL_LOB_AXAIA中,但这是不可能的。
SQL> alter table "XL_EURO_AXAIA"."EXT_TCV_TCH_VALEUR"  move lob("VALEUR") store as "SYS_LOB0000299006C00003$$" ( tablespace "XL_LOB_AXAIA" );
alter table "XL_EURO_AXAIA"."EXT_TCV_TCH_VALEUR"  move lob("VALEUR") store as "SYS_LOB0000299006C00003$$" ( tablespace "XL_LOB_AXAIA" )
                                                           *
ERREUR a la ligne 1 :
ORA-00904: "VALEUR" : identificateur non valide


我在这里读到,不可能移动Oracle内部定义的lob:
https://community.oracle.com/thread/1113273
“Oracle仅允许将LOB存储在单独的表空间中,而不是在创建表期间将其定义为LOB,这与oracle内部由于列数据类型为ANYDATA而创建的LOB不同,在这种情况下。
重新命令”

你能确认没有解决办法吗?

祝你愉快,

大卫

专家解答

就SQL而言,该过程似乎是可能的

SQL> create table t
  2  (
  3  id number(3),
  4  document sys.xmltype
  5  )
  6  tablespace users
  7    lob (document.xmldata) store as
  8      (
  9        tablespace largets
 10      );

Table created.

SQL>
SQL> alter table t move
  2    lob (document.xmldata) store as
  3      (
  4        tablespace largets
  5      );

Table altered.


但是我建议您记录SR以确认这是 * 受支持的 * 操作。

我怀疑您提到的链接中的注释可能误解了我们的规则,即lob * index * 与lob * data * 位于同一表空间中。


文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论