- Community Home
- >
- Servers and Operating Systems
- >
- Operating Systems
- >
- Operating System - HP-UX
- >
- Re: Hourly Partition in Oracle
Operating System - HP-UX
1752006
Members
4460
Online
108784
Solutions
Forums
Categories
Company
Local Language
юдл
back
Forums
Discussions
Forums
- Data Protection and Retention
- Entry Storage Systems
- Legacy
- Midrange and Enterprise Storage
- Storage Networking
- HPE Nimble Storage
Discussions
Discussions
Discussions
Forums
Forums
Discussions
юдл
back
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
- BladeSystem Infrastructure and Application Solutions
- Appliance Servers
- Alpha Servers
- BackOffice Products
- Internet Products
- HPE 9000 and HPE e3000 Servers
- Networking
- Netservers
- Secure OS Software for Linux
- Server Management (Insight Manager 7)
- Windows Server 2003
- Operating System - Tru64 Unix
- ProLiant Deployment and Provisioning
- Linux-Based Community / Regional
- Microsoft System Center Integration
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Blogs
Information
Community
Resources
Community Language
Language
Forums
Blogs
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО06-01-2009 03:24 AM
тАО06-01-2009 03:24 AM
Hourly Partition in Oracle
Hi,
my oracle version is
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
I have few logging tables where close 2 millions records will be logged/inserted daily.
though this table is for logging purpose only, we need to query these tables occasionally and few reports are also based on these logging tables.
Now we want to create hourly partitions in these tables all of these have timestamp columns. So how can i do this.
Thanks in advance
Vikas
my oracle version is
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
I have few logging tables where close 2 millions records will be logged/inserted daily.
though this table is for logging purpose only, we need to query these tables occasionally and few reports are also based on these logging tables.
Now we want to create hourly partitions in these tables all of these have timestamp columns. So how can i do this.
Thanks in advance
Vikas
3 REPLIES 3
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО06-01-2009 05:48 AM
тАО06-01-2009 05:48 AM
Re: Hourly Partition in Oracle
Hmmm,
check
http://www.oracle.com/technology/oramag/oracle/07-sep/o57partition.html
the is a date-field example.
In your case, you would need the time-qualification in addition.
CREATE TABLE whatever_the_name_is
(
tista date,
...
...
)
partition by range ( tista )
(
partition start_somewhere values less than
(TO_DATE('06/01/2009 00:00:00','mm/dd/yyyy hh24:mi:ss')),
partition 06012009_00_01 values
less than
(TO_DATE('06/01/2009 01:00:00','mm/dd/yyyy hh24:mi:ss')),
partition 06012009_01_02 values
less than
(TO_DATE('06/01/2009 02:00:00','mm/dd/yyyy hh24:mi:ss')),
:
:
:
partition future_unaccounted values
less than (MAXVALUE)
);
This would require some maintanance jobs to
a) export expired partitions
b) burn the exports to cd
c) drop expired exported partitions
d) create new partitions for the next period
But there might be several additional ways to
solve this.
Volker
check
http://www.oracle.com/technology/oramag/oracle/07-sep/o57partition.html
the is a date-field example.
In your case, you would need the time-qualification in addition.
CREATE TABLE whatever_the_name_is
(
tista date,
...
...
)
partition by range ( tista )
(
partition start_somewhere values less than
(TO_DATE('06/01/2009 00:00:00','mm/dd/yyyy hh24:mi:ss')),
partition 06012009_00_01 values
less than
(TO_DATE('06/01/2009 01:00:00','mm/dd/yyyy hh24:mi:ss')),
partition 06012009_01_02 values
less than
(TO_DATE('06/01/2009 02:00:00','mm/dd/yyyy hh24:mi:ss')),
:
:
:
partition future_unaccounted values
less than (MAXVALUE)
);
This would require some maintanance jobs to
a) export expired partitions
b) burn the exports to cd
c) drop expired exported partitions
d) create new partitions for the next period
But there might be several additional ways to
solve this.
Volker
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО06-01-2009 05:54 AM
тАО06-01-2009 05:54 AM
Re: Hourly Partition in Oracle
Vikas,
This Oracle usage question is completely platfort independent. For now. May I suggest that you tackle this problem in an Oracle focuess forum first. Later, when you know exactly what needs to be done and wonder how for example you might use HP-UX cron to run a task, then please do come back, But quite possible you can solve this all without ever leaving Oracle (It has tasks, queues, schedulers).
btw... 2 million records would not seem much at all. That perhpas warrants a partition as a whole IMHO, but cetrtainly not one chopped down futher down to hourly.
As you think about solutions you may also want to consider alternatives like EXTERNAL TABLES and Detachable/exported tablespaces.
Soound like you may want to have some sort of rolling window with new, hot, warm, and cold data on the appropriate storage/accessibility.
Hope this helps some,
Regards,
Hein van den Heuvel ( at gmail dot com )
HvdH Performance Consulting
This Oracle usage question is completely platfort independent. For now. May I suggest that you tackle this problem in an Oracle focuess forum first. Later, when you know exactly what needs to be done and wonder how for example you might use HP-UX cron to run a task, then please do come back, But quite possible you can solve this all without ever leaving Oracle (It has tasks, queues, schedulers).
btw... 2 million records would not seem much at all. That perhpas warrants a partition as a whole IMHO, but cetrtainly not one chopped down futher down to hourly.
As you think about solutions you may also want to consider alternatives like EXTERNAL TABLES and Detachable/exported tablespaces.
Soound like you may want to have some sort of rolling window with new, hot, warm, and cold data on the appropriate storage/accessibility.
Hope this helps some,
Regards,
Hein van den Heuvel ( at gmail dot com )
HvdH Performance Consulting
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО06-02-2009 03:41 AM
тАО06-02-2009 03:41 AM
Re: Hourly Partition in Oracle
hi Vikas,
you can create a script that generates the command SQL command for creating the partition daily and run that script accordingly.
Suppose you have a table with the following partitions:
CREATE TABLE tab1
(
dt date,
x int,
y varchar2(25)
)
PARTITION BY RANGE (dt)
(
PARTITION part_tab1_20090602_00 VALUES LESS THAN (to_date('02-jun-2009 00:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_01 VALUES LESS THAN (to_date('02-jun-2009 01:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_02 VALUES LESS THAN (to_date('02-jun-2009 02:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_03 VALUES LESS THAN (to_date('02-jun-2009 03:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_04 VALUES LESS THAN (to_date('02-jun-2009 04:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_05 VALUES LESS THAN (to_date('02-jun-2009 05:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_06 VALUES LESS THAN (to_date('02-jun-2009 06:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_07 VALUES LESS THAN (to_date('02-jun-2009 07:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_08 VALUES LESS THAN (to_date('02-jun-2009 08:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_09 VALUES LESS THAN (to_date('02-jun-2009 09:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_10 VALUES LESS THAN (to_date('02-jun-2009 10:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_11 VALUES LESS THAN (to_date('02-jun-2009 11:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_12 VALUES LESS THAN (to_date('02-jun-2009 12:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_13 VALUES LESS THAN (to_date('02-jun-2009 13:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_14 VALUES LESS THAN (to_date('02-jun-2009 14:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_15 VALUES LESS THAN (to_date('02-jun-2009 15:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_16 VALUES LESS THAN (to_date('02-jun-2009 16:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_17 VALUES LESS THAN (to_date('02-jun-2009 17:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_18 VALUES LESS THAN (to_date('02-jun-2009 18:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_19 VALUES LESS THAN (to_date('02-jun-2009 19:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_20 VALUES LESS THAN (to_date('02-jun-2009 20:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_21 VALUES LESS THAN (to_date('02-jun-2009 21:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_22 VALUES LESS THAN (to_date('02-jun-2009 22:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_23 VALUES LESS THAN (to_date('02-jun-2009 23:00','dd-mon-yyyy hh24:mi')) ,
PARTITION the_rest VALUES LESS THAN (MAXVALUE)
)
/
Now, create a script of commands (create_partitions.sql) for creating partitions for tomorrow.
spool create_partitions.sql;
select 'alter table tab1 split partition the_rest at ( to_date( '''||(trunc(trunc(sysdate+1)+(00+(00/60))/24,'HH24'))||''', ''dd/mm/yyyy hh24:mi'')) into ( partition part_tab1_'||to_char(sysdate+1,'yyyymmdd')||'_00, partition the_rest);' from dual;
--
select 'alter table tab1 split partition the_rest at ( to_date( '''||(trunc(trunc(sysdate+1)+(01+(00/60))/24,'HH24'))||''', ''dd/mm/yyyy hh24:mi'')) into ( partition part_tab1_'||to_char(sysdate+1,'yyyymmdd')||'_01, partition the_rest);' from dual;
--
select 'alter table tab1 split partition the_rest at ( to_date( '''||(trunc(trunc(sysdate+1)+(02+(00/60))/24,'HH24'))||''', ''dd/mm/yyyy hh24:mi'')) into ( partition part_tab1_'||to_char(sysdate+1,'yyyymmdd')||'_02, partition the_rest);' from dual;
--
...
...
--
select 'alter table tab1 split partition the_rest at ( to_date( '''||(trunc(trunc(sysdate+1)+(21+(00/60))/24,'HH24'))||''', ''dd/mm/yyyy hh24:mi'')) into ( partition part_tab1_'||to_char(sysdate+1,'yyyymmdd')||'_21, partition the_rest);' from dual;
--
select 'alter table tab1 split partition the_rest at ( to_date( '''||(trunc(trunc(sysdate+1)+(22+(00/60))/24,'HH24'))||''', ''dd/mm/yyyy hh24:mi'')) into ( partition part_tab1_'||to_char(sysdate+1,'yyyymmdd')||'_22, partition the_rest);' from dual;
--
select 'alter table tab1 split partition the_rest at ( to_date( '''||(trunc(trunc(sysdate+1)+(23+(00/60))/24,'HH24'))||''', ''dd/mm/yyyy hh24:mi'')) into ( partition part_tab1_'||to_char(sysdate+1,'yyyymmdd')||'_23, partition the_rest);' from dual;
--
spool off;
You can automate this script execution accordingly.
hope this helps!
kind regards
yogeeraj
you can create a script that generates the command SQL command for creating the partition daily and run that script accordingly.
Suppose you have a table with the following partitions:
CREATE TABLE tab1
(
dt date,
x int,
y varchar2(25)
)
PARTITION BY RANGE (dt)
(
PARTITION part_tab1_20090602_00 VALUES LESS THAN (to_date('02-jun-2009 00:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_01 VALUES LESS THAN (to_date('02-jun-2009 01:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_02 VALUES LESS THAN (to_date('02-jun-2009 02:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_03 VALUES LESS THAN (to_date('02-jun-2009 03:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_04 VALUES LESS THAN (to_date('02-jun-2009 04:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_05 VALUES LESS THAN (to_date('02-jun-2009 05:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_06 VALUES LESS THAN (to_date('02-jun-2009 06:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_07 VALUES LESS THAN (to_date('02-jun-2009 07:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_08 VALUES LESS THAN (to_date('02-jun-2009 08:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_09 VALUES LESS THAN (to_date('02-jun-2009 09:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_10 VALUES LESS THAN (to_date('02-jun-2009 10:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_11 VALUES LESS THAN (to_date('02-jun-2009 11:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_12 VALUES LESS THAN (to_date('02-jun-2009 12:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_13 VALUES LESS THAN (to_date('02-jun-2009 13:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_14 VALUES LESS THAN (to_date('02-jun-2009 14:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_15 VALUES LESS THAN (to_date('02-jun-2009 15:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_16 VALUES LESS THAN (to_date('02-jun-2009 16:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_17 VALUES LESS THAN (to_date('02-jun-2009 17:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_18 VALUES LESS THAN (to_date('02-jun-2009 18:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_19 VALUES LESS THAN (to_date('02-jun-2009 19:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_20 VALUES LESS THAN (to_date('02-jun-2009 20:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_21 VALUES LESS THAN (to_date('02-jun-2009 21:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_22 VALUES LESS THAN (to_date('02-jun-2009 22:00','dd-mon-yyyy hh24:mi')) ,
PARTITION part_tab1_20090602_23 VALUES LESS THAN (to_date('02-jun-2009 23:00','dd-mon-yyyy hh24:mi')) ,
PARTITION the_rest VALUES LESS THAN (MAXVALUE)
)
/
Now, create a script of commands (create_partitions.sql) for creating partitions for tomorrow.
spool create_partitions.sql;
select 'alter table tab1 split partition the_rest at ( to_date( '''||(trunc(trunc(sysdate+1)+(00+(00/60))/24,'HH24'))||''', ''dd/mm/yyyy hh24:mi'')) into ( partition part_tab1_'||to_char(sysdate+1,'yyyymmdd')||'_00, partition the_rest);' from dual;
--
select 'alter table tab1 split partition the_rest at ( to_date( '''||(trunc(trunc(sysdate+1)+(01+(00/60))/24,'HH24'))||''', ''dd/mm/yyyy hh24:mi'')) into ( partition part_tab1_'||to_char(sysdate+1,'yyyymmdd')||'_01, partition the_rest);' from dual;
--
select 'alter table tab1 split partition the_rest at ( to_date( '''||(trunc(trunc(sysdate+1)+(02+(00/60))/24,'HH24'))||''', ''dd/mm/yyyy hh24:mi'')) into ( partition part_tab1_'||to_char(sysdate+1,'yyyymmdd')||'_02, partition the_rest);' from dual;
--
...
...
--
select 'alter table tab1 split partition the_rest at ( to_date( '''||(trunc(trunc(sysdate+1)+(21+(00/60))/24,'HH24'))||''', ''dd/mm/yyyy hh24:mi'')) into ( partition part_tab1_'||to_char(sysdate+1,'yyyymmdd')||'_21, partition the_rest);' from dual;
--
select 'alter table tab1 split partition the_rest at ( to_date( '''||(trunc(trunc(sysdate+1)+(22+(00/60))/24,'HH24'))||''', ''dd/mm/yyyy hh24:mi'')) into ( partition part_tab1_'||to_char(sysdate+1,'yyyymmdd')||'_22, partition the_rest);' from dual;
--
select 'alter table tab1 split partition the_rest at ( to_date( '''||(trunc(trunc(sysdate+1)+(23+(00/60))/24,'HH24'))||''', ''dd/mm/yyyy hh24:mi'')) into ( partition part_tab1_'||to_char(sysdate+1,'yyyymmdd')||'_23, partition the_rest);' from dual;
--
spool off;
You can automate this script execution accordingly.
hope this helps!
kind regards
yogeeraj
No person was ever honoured for what he received. Honour has been the reward for what he gave (clavin coolidge)
The opinions expressed above are the personal opinions of the authors, not of Hewlett Packard Enterprise. By using this site, you accept the Terms of Use and Rules of Participation.
News and Events
Support
© Copyright 2024 Hewlett Packard Enterprise Development LP