动态选择分区

fil*_*ppo 7 oracle oracle10g

我有一个有几百个分区的表,我一般对最新的35个感兴趣.

因此,我正在尝试创建可以动态访问这些视图的视图.即总是使用最新的,以防万一.

查询:

  select PARTITION_NAME,
  PARTITION_POSITION,
  NUM_ROWS,
  AVG_ROW_LEN
  from all_tab_partitions
    where
    table_name = 'MY_TABLE'
    AND PARTITION_NAME <> 'P_LAST'
    AND PARTITION_POSITION < (SELECT MAX(PARTITION_POSITION) 
    FROM all_tab_partitions) - 35
    order by 2 DESC
    ;
Run Code Online (Sandbox Code Playgroud)

似乎返回我感兴趣的分区名称,但是,我无法使用它的结果来选择分区.例如:

CREATE OR REPLACE VIEW MY_VIIEW AS
WITH t AS ( [Above query] )
SELECT * FROM 
MY_TABLE PARTITION (SELECT /*+ FIRST_ROWS(1) */ PARTITION_NAME 
                    from t);
Run Code Online (Sandbox Code Playgroud)

(不是实际视图,只是一个例子)

那我该怎么做?如何创建一个始终是最新分区(execpt为"MAX")的视图?

我正在使用Oracle 10g

谢谢

小智 3

也许您可以使用批量联合所有语句以及每个语句中的分区名称来构造视图的查询,例如

create view p as
select * from my_table partition (part1)
union all
select * from my_table partition (part1)
...
union all
select * from my_table partition (part35)
Run Code Online (Sandbox Code Playgroud)