Compressing partition table
Hi Gurus,
I have to compress partition tables which has global(non-partitioned)indexes.If the do the partition compress with ALTER TABLE MOVE PARTITION COMPRESS this will invalidates the global indexes .
Can i use update global indexes with the above statement?or there is no way to avoid global indexes going invalid during the compress operation?
Synatx for compressing partition with update global index would really help me.
Thanks
Hi,
Have a look at:
http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/statements_3001.htm#BABDIDEJ
If the moved partitions are not empty, then the database marks them UNUSABLE. The database invalidates global indexes on heap-organized tables. You can update these indexes during this operation using the update_index_clauses.
Regards
Maurice
Similar Messages
-
How can I add a new column in compress partition table.
I have a compress partition table when I add a new column in that table it give me an error "ORA-22856: CANNOT ADD COLUMNS TO OBJECT TABLES". I had cretaed a table in this clause. How can I add a new column in compress partition table.
CREATE TABLE Employee
Empno Number,
Tr_Date Date
COMPRESS PARTITION BY RANGE (Tr_Date)
PARTITION FIRST Values LESS THAN (To_Date('01-JUL-2006','DD-MON-YYYY')),
PARTITION JUNK Values LESS THAN (MAXVALUE));
Note :
When I create table with this clause it will allow me to add a column.
CREATE TABLE Employee
Empno Number,
Tr_Date Date
PARTITION BY RANGE (Tr_Date)
PARTITION FIRST Values LESS THAN (To_Date('01-JUL-2006','DD-MON-YYYY')),
PARTITION JUNK Values LESS THAN (MAXVALUE));
But for this I have to drop and recreate the table and I dont want this becaue my table is in online state i cannot take a risk. Please give me best solution.Hi Fahed,
I guess, you are using Oracle 9i Database Release 9.2.0.2 and the Table which you need to alter is in OLTP environment where data is usually inserted using regular inserts. As a result, these tables generally do not get much benefit from using table compression. Table compression works best on read-only tables that are loaded once but read many times. Tables used in data warehousing applications, for example, are great candidates for table compression.
Reference : http://www.oracle.com/technology/oramag/oracle/04-mar/o24tech_data.html
Topic : When to Use Table Compression
Bug
Reference : http://dba.ipbhost.com/lofiversion/index.php/t147.html
BUG:<2421054>
Affects: RDBMS (9-A0)
NB: FIXED
Abstract: ENH: Allow ALTER TABLE to ADD/DROP columns for tables using COMPRESS feature
Details:
This is an enhancement to allow "ALTER TABLE" to ADD/DROP
columns for tables using the COMPRESS feature.
In 9i errors are reported for ADD/DROP but the text may
be misleading:
eg:
ADD column fails with "ORA-22856: cannot add columns to object tables"
DROP column fails with "ORA-12996: cannot drop system-generated virtual column"
Note that a table which was previously marked as compress which has
now been altered to NOCOMPRESS also signals such errors as the
underlying table could still contain COMPRESS format datablocks.
As of 10i ADD/SET UNUSED is allowed provided the ADD has no default value.
Best Regards,
Muhammad Waseem Haroon
[email protected] -
Export Issues with Compressed Partition Tables?
We recently partitioned and compressed some large tables. It appears, but I'm not sure yet, that this is causing the export to run extremely slow. The database is at 10.2.0.2 and we are using the exp utility, not datapump. Does anyone know of any known issues with using exp to export compressed, partitioned tables?
can you give more details of the table structure with dbms_metadata if possible, and how you are taking the export please?
did you try to take an sql*trace of the export process to see what is going on behind, this is an introduction if you may need;
http://tonguc.wordpress.com/2006/12/30/introduction-to-oracle-trace-utulity-and-understanding-the-fundamental-performance-equation/ -
Hello
I have a table with 10 partitions and I would like to compress all of them. What is the best way to accomplish this?
Thank you.There are several ways to do it, depending on your availability needs.
One option:
1. Create a compressed staging table that has the same structure as your partitioned table.
2. Direct path insert data from one partition into this table, remember to order the data to gain the best compression (remember that chainging the order will affect the clustering factor for the indexes, could cause change in execution plans).
3. Create the same indexes on your staging table as you have on your main table.
4. Exchange the current partition with the staging table (alter table ... exchange partition ...).
Repeat it for all of your partitions.
/Kristian -
Drop column from compressed partitioned table
Hi,
DB version is 11.2.02.
We have table which is range partitioned and sub-partitioned by list.
Table is also compressed.
When I try to drop a column, I get error.
CREATE TABLE DWH_REP.P_RATING (
id_source$ NUMBER(38,0) NULL,
time_insert$ DATE ,
time_update$ DATE ,
FLG_CURRENT$ NUMBER(38,0) ,
FLG_CHANGED$ NUMBER(38,0) ,
id_audit$ NUMBER(38,0) ,
ID_DATE_PSTING NUMBER(38,0) ,
partner_rating_id VARCHAR2(256) ,
partner_id VARCHAR2(256) ,
id_partner NUMBER(38,0) ,
rating_system_id VARCHAR2(256) ,
rating_id VARCHAR2(256) ,
date_rating DATE ,
date_follow_up DATE ,
risk_team_id VARCHAR2(256) ,
risk_team_descr VARCHAR2(256) ,
risk_team_changed_id VARCHAR2(256) ,
risk_team_changed_descr VARCHAR2(256) ,
date_risk_team_changed DATE ,
assignment_id VARCHAR2(256) ,
date_assignment DATE ,
date_assignment_confirmed DATE ,
date_assignment_expiration DATE ,
flg_exception VARCHAR2(256) ,
exception_id VARCHAR2(256) ,
date_exception DATE
-- TABLESPACE DWH_REP_DATA
PARTITION BY RANGE (FLG_CURRENT$, ID_DATE_PSTING)
SUBPARTITION BY LIST (ID_SOURCE$)
(PARTITION P_RATING_2010
VALUES LESS THAN (0, 20110101)
SUBPARTITION P_RATING_2010_UCS VALUES (10) TABLESPACE DWH_O_2010_TBS,
SUBPARTITION P_RATING_2010_UCM VALUES (11) TABLESPACE DWH_O_2010_TBS,
-- SUBPARTITION P_RATING_2010_ORBI30 VALUES (30) TABLESPACE DWH_O_2010_TBS,
-- SUBPARTITION P_RATING_2010_ORBI31 VALUES (31) TABLESPACE DWH_O_2010_TBS,
SUBPARTITION P_RATING_2010_CETELEM VALUES (40) TABLESPACE DWH_O_2010_TBS,
-- SUBPARTITION P_RATING_2010_MILES VALUES (60) TABLESPACE DWH_O_2010_TBS,
-- SUBPARTITION P_RATING_2010_BHI VALUES (80) TABLESPACE DWH_O_2010_TBS,
SUBPARTITION P_RATING_2010_DF VALUES (DEFAULT) TABLESPACE DWH_O_2010_TBS),
PARTITION P_RATING_2011
VALUES LESS THAN (0, 20120101)
SUBPARTITION P_RATING_2011_UCS VALUES (10) TABLESPACE DWH_O_2011_TBS,
SUBPARTITION P_RATING_2011_UCM VALUES (11) TABLESPACE DWH_O_2011_TBS,
-- SUBPARTITION P_RATING_2011_ORBI30 VALUES (30) TABLESPACE DWH_O_2011_TBS,
-- SUBPARTITION P_RATING_2011_ORBI31 VALUES (31) TABLESPACE DWH_O_2011_TBS,
SUBPARTITION P_RATING_2011_CETELEM VALUES (40) TABLESPACE DWH_O_2011_TBS,
-- SUBPARTITION P_RATING_2011_MILES VALUES (60) TABLESPACE DWH_O_2011_TBS,
-- SUBPARTITION P_RATING_2011_BHI VALUES (80) TABLESPACE DWH_O_2011_TBS,
SUBPARTITION P_RATING_2011_DF VALUES (DEFAULT) TABLESPACE DWH_O_2011_TBS),
PARTITION P_RATING_current
VALUES LESS THAN (maxvalue, maxvalue)
SUBPARTITION P_RATING_CUR_UCS VALUES (10) TABLESPACE DWH_O_CRT_UCS_TBS,
SUBPARTITION P_RATING_CUR_UCM VALUES (11) TABLESPACE DWH_O_CRT_UPM_TBS,
-- SUBPARTITION P_RATING_CUR_ORBI30 VALUES (30) TABLESPACE DWH_O_CRT_ORBI30_TBS,
-- SUBPARTITION P_RATING_CUR_ORBI31 VALUES (31) TABLESPACE DWH_O_CRT_ORBI31_TBS,
SUBPARTITION P_RATING_CUR_CETELEM VALUES (40) TABLESPACE DWH_O_CRT_CETELEM_TBS,
-- SUBPARTITION P_RATING_CUR_MILES VALUES (60) TABLESPACE DWH_O_CRT_MILES_TBS,
-- SUBPARTITION P_RATING_CUR_BHI VALUES (80) TABLESPACE DWH_O_CRT_BHI_TBS,
SUBPARTITION P_RATING_CUR_DF VALUES (DEFAULT) TABLESPACE DWH_O_CRT_DF_TBS))
ENABLE ROW MOVEMENT
NOLOGGING
COMPRESS
NOCACHE
NOPARALLEL
MONITORING;
ALTER TABLE DWH_REP.P_RATING DROP COLUMN ID_PARTNER;
ORA-39726: unsupported add/drop column operation on compressed tableslittleboy wrote:
Hi,
DB version is 11.2.02.
We have table which is range partitioned and sub-partitioned by list.
Table is also compressed.
When I try to drop a column, I get error.
CREATE TABLE DWH_REP.P_RATING (
id_source$ NUMBER(38,0) NULL,
time_insert$ DATE ,
time_update$ DATE ,
FLG_CURRENT$ NUMBER(38,0) ,
FLG_CHANGED$ NUMBER(38,0) ,
id_audit$ NUMBER(38,0) ,
ID_DATE_PSTING NUMBER(38,0) ,
partner_rating_id VARCHAR2(256) ,
partner_id VARCHAR2(256) ,
id_partner NUMBER(38,0) ,
rating_system_id VARCHAR2(256) ,
rating_id VARCHAR2(256) ,
date_rating DATE ,
date_follow_up DATE ,
risk_team_id VARCHAR2(256) ,
risk_team_descr VARCHAR2(256) ,
risk_team_changed_id VARCHAR2(256) ,
risk_team_changed_descr VARCHAR2(256) ,
date_risk_team_changed DATE ,
assignment_id VARCHAR2(256) ,
date_assignment DATE ,
date_assignment_confirmed DATE ,
date_assignment_expiration DATE ,
flg_exception VARCHAR2(256) ,
exception_id VARCHAR2(256) ,
date_exception DATE
-- TABLESPACE DWH_REP_DATA
PARTITION BY RANGE (FLG_CURRENT$, ID_DATE_PSTING)
SUBPARTITION BY LIST (ID_SOURCE$)
(PARTITION P_RATING_2010
VALUES LESS THAN (0, 20110101)
SUBPARTITION P_RATING_2010_UCS VALUES (10) TABLESPACE DWH_O_2010_TBS,
SUBPARTITION P_RATING_2010_UCM VALUES (11) TABLESPACE DWH_O_2010_TBS,
-- SUBPARTITION P_RATING_2010_ORBI30 VALUES (30) TABLESPACE DWH_O_2010_TBS,
-- SUBPARTITION P_RATING_2010_ORBI31 VALUES (31) TABLESPACE DWH_O_2010_TBS,
SUBPARTITION P_RATING_2010_CETELEM VALUES (40) TABLESPACE DWH_O_2010_TBS,
-- SUBPARTITION P_RATING_2010_MILES VALUES (60) TABLESPACE DWH_O_2010_TBS,
-- SUBPARTITION P_RATING_2010_BHI VALUES (80) TABLESPACE DWH_O_2010_TBS,
SUBPARTITION P_RATING_2010_DF VALUES (DEFAULT) TABLESPACE DWH_O_2010_TBS),
PARTITION P_RATING_2011
VALUES LESS THAN (0, 20120101)
SUBPARTITION P_RATING_2011_UCS VALUES (10) TABLESPACE DWH_O_2011_TBS,
SUBPARTITION P_RATING_2011_UCM VALUES (11) TABLESPACE DWH_O_2011_TBS,
-- SUBPARTITION P_RATING_2011_ORBI30 VALUES (30) TABLESPACE DWH_O_2011_TBS,
-- SUBPARTITION P_RATING_2011_ORBI31 VALUES (31) TABLESPACE DWH_O_2011_TBS,
SUBPARTITION P_RATING_2011_CETELEM VALUES (40) TABLESPACE DWH_O_2011_TBS,
-- SUBPARTITION P_RATING_2011_MILES VALUES (60) TABLESPACE DWH_O_2011_TBS,
-- SUBPARTITION P_RATING_2011_BHI VALUES (80) TABLESPACE DWH_O_2011_TBS,
SUBPARTITION P_RATING_2011_DF VALUES (DEFAULT) TABLESPACE DWH_O_2011_TBS),
PARTITION P_RATING_current
VALUES LESS THAN (maxvalue, maxvalue)
SUBPARTITION P_RATING_CUR_UCS VALUES (10) TABLESPACE DWH_O_CRT_UCS_TBS,
SUBPARTITION P_RATING_CUR_UCM VALUES (11) TABLESPACE DWH_O_CRT_UPM_TBS,
-- SUBPARTITION P_RATING_CUR_ORBI30 VALUES (30) TABLESPACE DWH_O_CRT_ORBI30_TBS,
-- SUBPARTITION P_RATING_CUR_ORBI31 VALUES (31) TABLESPACE DWH_O_CRT_ORBI31_TBS,
SUBPARTITION P_RATING_CUR_CETELEM VALUES (40) TABLESPACE DWH_O_CRT_CETELEM_TBS,
-- SUBPARTITION P_RATING_CUR_MILES VALUES (60) TABLESPACE DWH_O_CRT_MILES_TBS,
-- SUBPARTITION P_RATING_CUR_BHI VALUES (80) TABLESPACE DWH_O_CRT_BHI_TBS,
SUBPARTITION P_RATING_CUR_DF VALUES (DEFAULT) TABLESPACE DWH_O_CRT_DF_TBS))
ENABLE ROW MOVEMENT
NOLOGGING
COMPRESS
NOCACHE
NOPARALLEL
MONITORING;
ALTER TABLE DWH_REP.P_RATING DROP COLUMN ID_PARTNER;
ORA-39726: unsupported add/drop column operation on compressed tables
can you checkwith following?
SQL>alter table t set unused column x;
SQL>alter table t drop unused columns;Tom explains it ->http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:69076630635645 -
Compression getting disabled when performing Update on partitioned tables
Hi All,
I am on Oracle Database 11g Enterprise Edition Release 11.2.0.3.0.
My question is related to Oracle Compression.
I have a sub-partitioned table enabled with Basic Compression. In enabled compressed state, I am updating few columns of this table(Normal Update command and Merge as well) but the end result shows increase in the table size and the compression is still in ENABLED state. Post that, if I compress the sub-partition explicitly the table comes back to its original size.
Is it a bug? I read a white paper on 11g itself, that compression remains enabled in case of all DML operations, then why this behaviour?
Thanks,
IshanIshan,
taking a look at http://docs.oracle.com/cd/E11882_01/server.112/e25494/tables.htm#CJAGFBFG It seems that the distinction between OLTP and basic compression is sometimes a little bit vague ("Operations that permit compression include: ..."), but I can also find the statement "Rows inserted without using direct-path insert and updated rows are uncompressed." So I would say it's not a bug but a limitation of the feature. Updates just don't mix well with compression.
Martin -
Can we compress hash partitioned table in 9.2
Hi
Can we compress the hash partitioned table? How to check the compression? Is there any way to check for the partition size after compression?
Thankshi
go through below link
hope it will help you.
http://www.dbazine.com/oracle/or-articles/foot6
http://www.google.ae/search?hl=en&q=compressed+hash+partition+++oracle+9i&meta=
also check in google seconed point... Table compression do and don't.
hope this helps
Taj. -
HOW to enable oracle advance compression for EXIST partitioned table
Hi All,
I have to enable oracle advance compression for existing table which PARTITION BY RANGE then SUBPARTITION BY HASH.
ORacle version: 11.2.0.2.0
Please provide me any relevant doc or any exp.
Thanks in advance.could not see any text for how to enable oracle advance compression for EXIST partitioned table.RTFM.
From the resource above:
How do I compress an existing table?
There are multiple options available to compress existing tables. For offline compression, one could use ALTER TABLE Table_Name MOVE COMPRESS statement. A compressed copy of an existing table can be created by using CREATE TABLE Table_Name COMPRESS FOR ALL OPERATIONS AS SELECT *. For online compression, Oracle’s online redefinition utility can be used. More details for online redefinition are available here.
" -
Range interavl partitioned table not being created in compressed format
Hi,
Using oracle 11.2.03. and trying to create a table with compress
Normal table fine but trying syntax below but tabel properties show no compression
Tried compress at top of sql as per belwo and at bottom
Aldso tried compress and compress for oltp - same bahviour not getting compressed.
nOW HSOING AT TABLE LEVEL OR ON TABLE PORPETIES BUT WHEN check user_tab_partitions shows as compressed for oltp
Thanks
create table RETAILER_TRANSACTION_comP_POR parallel
COMPRESS FOR OLTP
partition by range (PARTITIONING_DATE)
INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
subpartition by hash (PLANT_ISSUE_ID)
subPARTITIONS 4
partition PART_200912 values less than (TO_DATE(' 2010-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_200912
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201001 values less than (TO_DATE(' 2010-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201001
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201002 values less than (TO_DATE(' 2010-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201002
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201003 values less than (TO_DATE(' 2010-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201003
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201004 values less than (TO_DATE(' 2010-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201004
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201005 values less than (TO_DATE(' 2010-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201005
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201006 values less than (TO_DATE(' 2010-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201006
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201007 values less than (TO_DATE(' 2010-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201007
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201008 values less than (TO_DATE(' 2010-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201008
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201009 values less than (TO_DATE(' 2010-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201009
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201010 values less than (TO_DATE(' 2010-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201010
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201011 values less than (TO_DATE(' 2010-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201011
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201012 values less than (TO_DATE(' 2011-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201012
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201101 values less than (TO_DATE(' 2011-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201101
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201102 values less than (TO_DATE(' 2011-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201102
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201103 values less than (TO_DATE(' 2011-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201103
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201104 values less than (TO_DATE(' 2011-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201104
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201105 values less than (TO_DATE(' 2011-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201105
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201106 values less than (TO_DATE(' 2011-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201106
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201107 values less than (TO_DATE(' 2011-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201107
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201108 values less than (TO_DATE(' 2011-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201108
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201109 values less than (TO_DATE(' 2011-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201109
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201110 values less than (TO_DATE(' 2011-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201110
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201111 values less than (TO_DATE(' 2011-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201111
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201112 values less than (TO_DATE(' 2012-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201112
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201201 values less than (TO_DATE(' 2012-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201201
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201202 values less than (TO_DATE(' 2012-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201202
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201203 values less than (TO_DATE(' 2012-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201203
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201204 values less than (TO_DATE(' 2012-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201204
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201205 values less than (TO_DATE(' 2012-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201205
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201206 values less than (TO_DATE(' 2012-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201206
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201207 values less than (TO_DATE(' 2012-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201207
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201208 values less than (TO_DATE(' 2012-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201208
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201209 values less than (TO_DATE(' 2012-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201209
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201210 values less than (TO_DATE(' 2012-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201210
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201211 values less than (TO_DATE(' 2012-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201211
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201212 values less than (TO_DATE(' 2013-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201212
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201301 values less than (TO_DATE(' 2013-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201301
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201302 values less than (TO_DATE(' 2013-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201302
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201303 values less than (TO_DATE(' 2013-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201303
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201304 values less than (TO_DATE(' 2013-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201304
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201305 values less than (TO_DATE(' 2013-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201305
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201306 values less than (TO_DATE(' 2013-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201306
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201307 values less than (TO_DATE(' 2013-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201307
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201308 values less than (TO_DATE(' 2013-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201308
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201309 values less than (TO_DATE(' 2013-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201309
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201310 values less than (TO_DATE(' 2013-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201310
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201311 values less than (TO_DATE(' 2013-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201311
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
partition PART_201312 values less than (TO_DATE(' 2014-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace RTRN_PART_201312
pctfree 1
initrans 1
maxtrans 255
storage
initial 8M
next 1M
minextents 1
maxextents unlimited
--COMPRESS --FOR OLTP
as select *
from retailer_transaction RT
WHERE RT.DWH_NUM = 1441336376Edited by: user5716448 on 26-Mar-2013 07:16>
Normal table fine but trying syntax below but tabel properties show no compression
>
What properties? You didn't show any query or result that shows if the table is compressed or not.
>
nOW HSOING AT TABLE LEVEL OR ON TABLE PORPETIES BUT WHEN check user_tab_partitions shows as compressed for oltp
>
I have no idea what any of that means.
Again - you didn't post anything showing if the table is compressed or not. And without the DDL for the source table no one can try to reproduce your results.
Thanks for using code tags and posting some of the DDL needed but you should edit your post and REMOVE all of the extra partition definitions since all they do is bloat the listing.
This works for me in vanilla 11.2.0.1.0
create table EMP_PART parallel
COMPRESS FOR OLTP
partition by range (hiredate)
INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
subpartition by hash (deptno)
subPARTITIONS 4
partition all_data values less than (to_date('01/01/2013', 'mm/dd/yyyy')
as select * from emp
select table_name, compression, compress_for, composite, partition_name
from user_tab_partitions
TABLE_NAME COMPRESSION COMPRESS_FOR COMPOSITE PARTITION_NAME
EMP_PART ENABLED OLTP YES ALL_DATA -
Large partitioned tables with WM
Hello
I've got a few large tables (6-10GB+) that will have around 500k new rows added on a daily basis as part of an overnight batch job. No rows are ever updated, only inserted or deleted and then re-inserted. I want to stop the process that adds the new rows from being an overnight batch to being a near real time process i.e. a queue will be populated with requests to rebuild the content of these tables for specific parent ids, and a process will consume those requests throughout the day rather than going through the whole list in one go.
I need to provide views of the data asof a point in time i.e. what was the content of the tables at close of business yesterday, and for this I am considering using workspaces.
I need to keep at least 10 days worth of data and I was planning to partition the table and drop one partition every day. If I use workspaces, I can see that oracle creates a view in place of the original table and creates a versioned table with the LT suffix - this is the table name returned by DBMSMW.GetPhysicalTableName. Would it be considered bad practice to drop partitions from this physical table as I would do with a non version enabled table? If so, what would be the best method for dropping off old data?
Thanks in advance
DavidHello Ben
Thank you for your reply.
The table structure we have is like so:
CREATE TABLE hdr
( pk_id NUMBER PRIMARY KEY,
customer_id NUMBER FOREIGN KEY REFERENCES customer,
entry_type NUMBER NOT NULL
CREATE TABLE dtl_daily
( pk_id NUMBER PRIMARY KEY,
hdr_id NUMBER FOREIGN KEY REFERENCES hdr
active_date DATE NOT NULL,
col1 NUMBER
col2 NUMBER
PARTITION BY RANGE(active_date)
( PARTITION ptn_200709
VALUES LESS THAN (TO_DATE('200710','YYYYMM'))
TABLESPACE x COMPRESS,
PARTITION ptn_200710
VALUES LESS THAN (TO_DATE('200711','YYYYMM'))
TABLESPACE x COMPRESS
CREATE TABLE dtl_hourly
( pk_id NUMBER PRIMARY KEY,
hdr_id NUMBER FOREIGN KEY REFERENCES hdr
active_date DATE NOT NULL,
active_hour NUMBER NOT NULL,
col1 NUMBER
col2 NUMBER
PARTITION BY RANGE(active_date)
( PARTITION ptn_20070901
VALUES LESS THAN (TO_DATE('20070902','YYYYMMDD'))
TABLESPACE x COMPRESS,
PARTITION ptn_20070902
VALUES LESS THAN (TO_DATE('20070903','YYYYMMDD'))
TABLESPACE x COMPRESS
PARTITION ptn_20070903
VALUES LESS THAN (TO_DATE('20070904','YYYYMMDD'))
TABLESPACE x COMPRESS
...For every day for 20 years
/The hdr table holds one or more rows for each customer and has it's own synthetic key generated for every entry as there can be multiple rows having the same entry_type for a customer. There are two detail tables, daily and hourly, which hold detail data at those two granularities. Some customers require hourly detail, in which case the hourly table is populated and the daily table is populated by aggregating the hourly data. Other customers require only daily data in which case the hourly table is not populated.
At the moment, changes to customer data require that the content of these tables are rebuilt for that customer. This rebuild is done every night for the changed customers and I want to change this to be a near real time rebuild. The rebuild involves deleteing all existing entries from the three tables for the customer and then re-inserting the new set using new synthetic keys. If we do make this near real time, we need to be able to provide a snapshot of the data asof close of business every day, and we need to be able to report as of a point of time up to 10 days in the past.
For any one customer, they may have rows in the hourly table that goes out 20 years at a hourly granularity, but once the active date has passed(by 10 days), we no longer need to keep it. This is why we were considering partitioning as it gives us a simple way of dropping off old data, and as a nice side effect, helps to improve performance of queries that are looking for active data between a range of dates (which is most of them).
I did have a look at the idea of save points but I wasn't sure it would be efficient. So in this case, would the idea be that we don't partition the table but instead at close of business every day, we create a savepoint like "savepoint_20070921" and instead of using dbms_wm.gotodate. we would use dbms_wm.gotosavepoint. Then every day we would do
DBMS_WM.DeleteSavepoint(
workspace => 'LIVE',
savepoint_name => 'savepoint_20070910', --10 days ago
compress_view_wo_overwrite => TRUE,
DBMS_WM.CompressWorkspace(
workspace => 'LIVE,
compress_view_wo_overwrite => TRUE,
firstSP => 'savepoint_20070911', --the new oldest save point
);Is my understanding correct?
David
Message was edited by:
fixed some formatting
David Tyler -
How to add new column in partition table
Hi,
In Oracle 10g Database, I have one table (X) with list partition . I have added one new column to "X" by "Alter Table" command. Please advise whether any other command needs to be executed since it is a partition table .
The "X" table is used for partition swapping with another table (Y). I have added the same column also in table "Y". Will there be any issue while swapping the partion with the following command
alter table X exchange partition partition_name with table Y
Version Details :
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 OS
Solaris 5.10
Thanks in advanceyou would have to explicitly put that into the create table as select - the partition details.
ops$tkyte%ORA10GR2> create table t1
2 PARTITION BY RANGE (dt)
3 (
4 PARTITION part1 VALUES LESS THAN (to_date('13-mar-2003','dd-mon-yyyy')) ,
5 PARTITION part2 VALUES LESS THAN (to_date('14-mar-2003','dd-mon-yyyy')) ,
6 PARTITION junk VALUES LESS THAN (MAXVALUE)
7 )
8 COMPRESS
9 as
10 select * from t;
Table created.
Source:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:69076630635645
Hth
Girish Sharma -
Performance between two partitionned tables with different structure
Hi,
I would like if there is a difference between two partitionned tables with different structure in term of performance (access, query, insertions, updates ).
I explain myself in detail :
I have a table that stores one value every 10 minutes in a day (so we have 144 values (24*6) in the whole day), with the corresponding id.
Here is the structure :
| Table T1 |
+ id PK |
+ date PK |
+ sample1 |
+ sample2 |
+ ... |
+ sample144 |
The table is partionned on the column date, with a partionned every months. The primary key is based on the columns (id, date).
There is an additionnal index on the column (id) (is it useful ?).
I would like to know if it is better to have a table with just (id, date, value) , so for one row in the first table we'll have 144 rows in the future? table. The partition will already be on the columns (id, date) with the index associated.
What are the gains or loss in performance with this new structure ( access, DMLs , storage ) ?
I discuss with the Java developers and they say it is simpler to manage in their code.
Oracle version : Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
Thanks & Regards
From France
Oliver
Edited by: 998239 on 5 avr. 2013 01:59I mean storage in tablespaces and datafiles on disk.
Can you justify please and give me concrete arguments why the two structures are equivalent ( except inserting data in T(id, date,value))
because i have to make a report.i didnt say any thing like
two structures are equivalent ( except inserting data in T(id, date,value)i said
About structure : TABLE1(id, date, value) is better than TABLE1(id, date, sample1, .... sample144)because
1) oracle has restriction for numbers of column. Ok you can have 144 columns now but for future if you must have more than 1000 columns , what will you do?
2) Restrictions on Table Compression (Table compression is not supported for tables with more than 255 columns.)
3) store same type values on diffrent columns is bad practise
http://docs.oracle.com/cd/B28359_01/server.111/b28318/schema.htm#i4383
i remember i seen Toms article about this but now i cant find it sorry ((( if i found i will post here -
Gathering statistics on partitioned and non-partitioned tables
Hi all,
My DB is 11.1
I find that gathering statistics on partitioned tables are really slow.
TABLE_NAME NUM_ROWS BLOCKS SAMPLE_SIZE LAST_ANALYZED PARTITIONED COMPRESSION
O_FCT_BP1 112123170 843140 11212317 8/30/2011 3:5 NO DISABLED
LEON_123456 112096060 521984 11209606 8/30/2011 4:2 NO ENABLED
O_FCT 115170000 486556 115170 8/29/2011 6:3 YES
SQL> SELECT COUNT(*) FROM user_tab_subpartitions
2 WHERE table_name =O_FCT'
3 ;
COUNT(*)
112I used the following script:
BEGIN
DBMS_STATS.GATHER_TABLE_STATS(ownname => user,
tabname => O_FCT',
method_opt => 'for all columns size auto',
degree => 4,
estimate_percent =>10,
granularity => 'ALL',
cascade => false);
END;
/It costs 2 mins for the first two tables to gather the statistics respectively, but more than 10 mins for the partitioned table.
The time of collecting statistics accounts for a large part of total batch time.
And most jobs of the batch are full load in which case all partitions and subpartitions will be affected and we can't just gather specified partitions.
Does anyone have some experiences on this subject? Thank you very much.
Best regards,
Leon
Edited by: user12064076 on Aug 30, 2011 1:45 AMHi Leon
Why don't you gather stats at partition level? If your partitions data is not going to change after a day (date range partition for ex), you can simply do at partition level
GRANULARITY=>'PARTITION' for partition level and
GRANULARITY=>'SUBPARTITION' for subpartition level
You are gathering global stats every time which you may not require.
Edited by: user12035575 on 30-Aug-2011 01:50 -
Create list-range partition table
Database version: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
I am trying to create a partition table with LIST-Range, and I am getting this following error, is oracle 10.2.0.4 database supports to create list-range partition(composite)
SQL> CREATE TABLE tbp_list_range
REPORT_DATE DATE,
member_id_01 varchar2(2),
DATE_SERVICE date,
member_id varchar2(15)
PARTITION BY LIST(member_id_01)
SUBPARTITION BY RANGE (DATE_SERVICE)
PARTITION SPTYR04M01_C VALUES('AA','aa')
NOLOGGING
COMPRESS (
SUBPARTITION PTYR12M011 VALUES LESS THAN (TO_DATE(' 2012-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
SUBPARTITION PTYR12M021 VALUES LESS THAN (TO_DATE(' 2012-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
SUBPARTITION recent1 VALUES LESS THAN (MAXVALUE)
PARTITION SPTYR04M01_Yo VALUES('BJ','bj')
NOLOGGING
COMPRESS (
SUBPARTITION PTYR12M01 VALUES LESS THAN (TO_DATE(' 2012-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
SUBPARTITION PTYR12M02 VALUES LESS THAN (TO_DATE(' 2012-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
SUBPARTITION recent2 VALUES LESS THAN (MAXVALUE)
SUBPARTITION BY RANGE (DATE_SERVICE)
ERROR at line 9:
ORA-00922: missing or invalid option
SQL> select * from v$version;
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for Linux: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
Any help would be greatly appreciated.
Thanks,any possible work around for this scenario on 10.2.0.4
--thanks -
Need to uncompress a hash partitioned table
I am working on oracle 11.1.0.7 database on solaris.
We had issues loading data into compressed tables, so we are trying to uncompress the tables and their partitions.
When I tried uncompressing a hash partitioned table, I am getting this error
SQL> alter table sample move partition SYS_1 nocompress;
alter table sample move partition SYS_1 nocompress
ERROR at line 1:
ORA-14260: incorrect physical attribute specified for this partition
I am able to move the table, it is just the nocompress option which doesn;t work.
SQL> alter table sample move partition SYS_1;
Table altered.
Can't we uncompress a hash partitioned table which is compressed?You have to do it in two steps
alter table sample modify partition SYS_1 nocompress;
alter table sample move partition SYS_1;Best regards
Maxim
Maybe you are looking for
-
When I opened my iTunes today, I tried to listen to my songs, but whenever I clicked enter or double clicked the song, it wouldn't play, instead, it would play a song near it. So I tried my whole playlist and most of the songs aren't working! They're
-
File error - the specified file is locked, Final cut pro
file error - the specified file is locked, Final cut pro
-
HH1.5 - can I get faster connection with it?
Hello everyone I have a Home Hub 1.5, and although the conection is stable I would like to get faster download/upload speeds if possible. From speedtest.btwholesale.com just now I get the following Download Speed (Mbps): 2.21 Upload Speed (Mbps): 0
-
Table / FM which stores element list for a screen number
Hi everyone, I have a module pool program, with a few screens. I want to make a list of all screen fields used in my program. Is there a table or Function Module which maps this? Say progname-dynpro-fieldname? For example, my module pool program is S
-
Wireless network expansion with Airport Extreme
Hello, I have a Cable Modem Motorola SURFBoard Extreme in my home and I have a problems with my wireless range. I bought a Airport Extreme to expand my range, but I can't set up to work. Someone has an idea how can I set up this ? Thanks a lot.