我怎样才能每月对一个数据库table进行分区?
How can I partition a database table every month?
每个月我们都要为所述月份的事务划分一个 table,我们想自动化这个过程,我正在考虑使用 crontab,但问题在于我需要一些参数,如日期和分区 table 才能这样做。
这是一个服务器 运行ning SunOS,除了默认的 sh,我不能使用 shell,这使得编写 shell 脚本到 运行 查询,但这就是我想要的。
这就是我们如何划分 table:
ALTER TABLE SCHEME.TABLE ADD PARTITION "NAME_201905" VALUES LESS THAN
(TO_DATE('2019-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
COMPRESS FOR OLTP LOGGING
STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "TABLESPACE";
我们需要一种方法来每月执行该查询,并且每个参数都应与当前日期匹配。
创建或更改 table 以获得间隔分区。此要求将自动处理。
您可以设置小时、天、周、月或年的间隔。
每次新月份的数据到来时,Oracle 都会自动创建一个新分区。
每个月我们都要为所述月份的事务划分一个 table,我们想自动化这个过程,我正在考虑使用 crontab,但问题在于我需要一些参数,如日期和分区 table 才能这样做。
这是一个服务器 运行ning SunOS,除了默认的 sh,我不能使用 shell,这使得编写 shell 脚本到 运行 查询,但这就是我想要的。
这就是我们如何划分 table:
ALTER TABLE SCHEME.TABLE ADD PARTITION "NAME_201905" VALUES LESS THAN
(TO_DATE('2019-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
COMPRESS FOR OLTP LOGGING
STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "TABLESPACE";
我们需要一种方法来每月执行该查询,并且每个参数都应与当前日期匹配。
创建或更改 table 以获得间隔分区。此要求将自动处理。
您可以设置小时、天、周、月或年的间隔。
每次新月份的数据到来时,Oracle 都会自动创建一个新分区。