【问题标题】:How to find which column has which LOB attached in Oracle12c XMLTYPE column?如何在 Oracle 12c XMLTYPE 列中查找哪个列附加了哪个 LOBE?
【发布时间】:2020-11-30 08:14:31
【问题描述】:

我的下表包含两个 XMLTYPE 列(ERROR_FLAGCOL_XML)和一个 LOB 列(LOG_TEXT

CREATE TABLE APPLICATION_LOG
(
  ID                    NUMBER                  NOT NULL,
  LOG_TIME              TIMESTAMP(6)            NOT NULL,
  ERROR_FLAG            XMLTYPE,
  LOG_TEXT              CLOB,
  COL_XML               XMLTYPE,
  LOG_MESSAGETYPE       VARCHAR2(30 BYTE)       NOT NULL
)
XMLTYPE COL_XML STORE AS SECUREFILE BINARY XML (
  TABLESPACE users
  ENABLE      STORAGE IN ROW
  CHUNK       8192
  NOCACHE
  NOLOGGING)
ALLOW NONSCHEMA
DISALLOW ANYSCHEMA
LOB (LOG_TEXT) STORE AS BASICFILE (
  TABLESPACE  users
  ENABLE      STORAGE IN ROW
  CHUNK       8192
  PCTVERSION  10
  NOCACHE
  NOLOGGING)
NOCOMPRESS 
TABLESPACE users
;

如果我执行下面的查询,我会得到三行

SELECT * 
  FROM dba_lobs l 
 WHERE l.table_name  = 'APPLICATION_LOG'
   AND l.owner = 'SYSTEM'

如何找出第一个 LOB 是针对哪个 XMLTYPE 列(ERROR_FLAG 或 COL_XML),因为它们的名称现在是系统生成的? 如何找到SYS_NC00004$---->对应什么?

【问题讨论】:

    标签: oracle oracle12c xmltype data-dictionary lob


    【解决方案1】:

    您可以通过使用 dba_tab_cols user_tab_cols 仅研究当前用户)字典视图,例如

    SELECT c2.data_type, c2.column_name, c1.data_type, c1.column_name
      FROM dba_tab_cols c1
      JOIN dba_tab_cols c2  
        ON c1.segment_column_id = c2.column_id  
       AND c1.table_name = c2.table_name 
       AND c2.data_type = 'XMLTYPE'
     WHERE c1.table_name = 'APPLICATION_LOG'
    

    Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 2020-07-11
      相关资源
      最近更新 更多