为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:
达梦如何查询oracle中ALL_SUBPARTITION_TEMPLATES视图中SUBPARTITION_POSITION、HIGH_BOUND、TABLESPACE_NAME等信息
image.png
语句是:
SELECT
SUBPARTITION_NAME,
SUBPARTITION_POSITION,
TABLESPACE_NAME,
HIGH_BOUND
FROM ALL_SUBPARTITION_TEMPLATES
WHERE USER_NAME=? AND TABLE_NAME=?
ORDER BY SUBPARTITION_POSITION ASC
你测试下下面这个查询,看看是否能够满足需要
WITH T AS
(
SELECT SCH.ID AS SCHEMA_ID
,SCH.NAME AS SCHEMA_NAME
,TAB.ID AS TABLE_ID
,TAB.NAME AS TABLE_NAME
,PART_TABLE_ID
FROM SYSOBJECTS TAB
,SYSHPARTTABLEINFO PARINFO
,SYSOBJECTS SCH
WHERE TAB.TYPE$ = 'SCHOBJ'
AND TAB.SUBTYPE$ = 'UTAB'
AND TAB.PID = -1
AND BITAND(TAB.INFO3,0x3F) IN (0x06, 0x08, 0x0B, 0x18, 0x1A, 0x1C, 0x22, 0x24, 0x26)
AND PARINFO.BASE_TABLE_ID = TAB.ID
AND SF_GET_PART_SEQNO(PARINFO.BASE_TABLE_ID,PARINFO.PART_TABLE_ID) = 1
AND EXISTS(SELECT 1 FROM SYSHPARTTABLEINFO SUB WHERE SUB.BASE_TABLE_ID = PARINFO.PART_TABLE_ID AND SUB.PART_TABLE_ID = 0)
AND SCH.TYPE$ = 'SCH'
AND SCH.ID = TAB.SCHID
)
SELECT T.SCHEMA_ID
,T.SCHEMA_NAME
,T.TABLE_ID
,T.TABLE_NAME
,SF_GET_PART_SEQNO(PARINFO.BASE_TABLE_ID,PARINFO.PART_TABLE_ID) AS PARTITION_POSITION
,PARINFO.PARTITION_TYPE
,PARINFO.PARTITION_NAME
,SF_GET_PART_HIGH_VALUE(PARINFO.BASE_TABLE_ID,PARINFO.PART_TABLE_ID) AS HIGH_VALUE
FROM T
,SYSHPARTTABLEINFO PARINFO
WHERE PARINFO.BASE_TABLE_ID = T.PART_TABLE_ID
AND PARINFO.PART_TABLE_ID > 1
ORDER BY 1,3,5
用
DBA_TAB_SUBPARTITIONS
DBA_TAB_PARTITIONS