HCC and PctFree

We seek to optimize storage space and I had a question about Compression hybrid columnar (HCC) and pctfree values. I think that the basic compress clause will use a pctfree 0 unless you specify a value. I know also that compress for OLTP will use a pctfree 10 unless ignore you it. My question is will HCC will automatically use a pctfree 0 or does use a different default value. I think that to archive high, he would use a pctfree 0, but wanted to see if someone could confirm this.

HCC should use a pctfree 0 as compression units (UC) are written only once - lines cannot be added to a CPU at a later stage in time then why leave free space which can never be used?

--
Kind regards
Greg Rahn
http://structureddata.org

Tags: Database

Similar Questions

  • Subpartition compresses with pctfree

    Hello

    How compress subpartition on exadata, by using "high motion" and pctfree 10 options?

    I used this statement, but I get only ORA-14160: this physical attribute may not be specified for a table subpartition.

    ALTER table table_name move subpartition subpartition_name PCTFREE 10 compress to request high;

    Published by: user837363 on 2012-11-12 05:14

    The document is on My Oracle Support

    https://support.Oracle.com/epmos/faces/UI/km/SearchDocDisplay.JSPX?ID=258597.1&type=document&DisplayIndex=1

    The short version is: you cannot specify physical attributes such as compression for an individual subpartition. You will have to do for the whole score (or even the entire table).

    Marc

  • Cancel a vector of change or an entire block

    Cancel a vector of change or the last image of the entire block?

    John Thorton says:

    UNDO lies in its own tablespace; not with the table object tablespace

    PCTFREE is not applicable in LMT which everyone should use instead of manually managed tablespace.

    I am struggling to find a way that the OP could find no link between the generation pctfree cancel, and pctfree is applicable in LMT.

    To answer your question on "what difference does make" - the obvious difference is that if you think that undo is to save the old blocks so the space that allow you to cancel when set the resources will be much larger it would be if you think that it is on the drivers of change.

    Concerning

    Jonathan Lewis

  • Change the INITRANS parameter to the existing blocks

    Version 11.2.0.2.0

    Hello guys, got little stuck to change the INITRANS parameter to a table partition. The table is partitioned by range.

    To change the INITRANS and PCTFREE for new block that will be generated, I can use the following statement.

    ALTER TABLE < table_name > PARTITION EDIT < nom_partition > INITRANS < value > < value > PCTFREE;   (but this change will apply only to newly created blocks and not the existing blocks).

    I try to change the existing blocks too, so when I read the thread on otn How do I change initrans in the partition table? he said to use the 'MOVE' clause, so I used the following statement.

    ALTER TABLE < table_name > FILM PARTITION < nom_partition > INITRANS < value > < value > PCTFREE; (they said that this measure will apply the change to exisiting blocks as well), but when I executed this statement I got the following error message.

    ORA-14020: this physical attribute may not be specified for the partition table.

    Can someone tell me where I'm wrong and I have to do correctly to apply the change initrans and pctfree to existing blocks of the table too?

    Thank you

    Cut-n-pasted from SQL * Plus - 11.2.0.4

    SQL > set comments on

    SQL > alter table pt_range move partition p400 initrans 20 pctfree 10;

    Modified table.

    Concerning

    Jonathan Lewis

  • On the tables

    I have a small question.
    I have create table like this:

    create table (Appo)
    number of col1,
    col2 number
    )
    tablespace user_data
    INITRANS 1
    PCTFREE 10

    Then I insert 100K record in the table. Secondly, I want to change the initrans and pctfree for the table:

    ALTER table Appo initrans 20 45 pctfree
    /
    ALTER table Appo move
    /

    My doubt is: after the table entering (the same tablespace) the old block which contained the 100K rows changes to the new definition of pctfree, initrans, or not?

    Tanks
    Stefanik

    Hello

    new definition of pctfree, initrans will support.

    concerning

  • UNRECOVERABLE clause

    Hello


    Can any body what is the use of the clause UNRECOVERABLE and PCTFREE

    For example:

    create the table sunk pctfree tempo



    Thank you

    UNRECOVERABLE

    This was frowned upon and supported only for backward compatibility. You must use the NOLOGGING clause or logging. To find out about them, you can read the document oracle.

    PCTFREE

    It is a parameter that indicates the amount of free space is required in a data block to make room for later updates. Again, you can read more about this document.

    Here is the link for the document of 10g R2

    http://www.Oracle.com/pls/db102/homepage

  • PCTFREE and PCTUSED

    Hai!

    I want to improve the performance of insertion and retriving from a table! "

    * Could I achieve this by changing the PCTFREE and PCTUSED values?
    * If so, what are the values that I put?
    -my table contains lakhs of records.
    -is continuous insertion of records.
    -Update of the is a rare disease.
    -iam using Oracle 10 g, data_block_size = 8kb, OS: windows-7
    * What to change in the block size?
    -Do I need to increase it? or decrease it?

    936113 wrote:
    u could tell me, how would I know if Segment space management is AUTOMATIC or NOT...!

    select segment_space_management from user_tablespaces where tablespace_name = (select tablespace_name from user_tables where table_name = 'XXX');
    
  • can I put PCTFREE and PCTUSED in LMT

    Hello
    can I put PCTFREE and PCTUSED in LMT (locally tablesapce)?
    and how I can decrease the probability of migration of line and chaning in LMT

    Thank you

    Hello

    It depends on the MANAGEMENT option space you choose.
    If you create the LMT with SPACE MANAGEMENT MANUAL then you will always have to tune
    PCTFREE and PCTUSED as formelly (with DMT).
    It is recommended to use the AUTOMATIC SPACE MANAGEMENT then these settings are tuned
    by algorithms.

    Also, by setting the AUTOMATIC SPACE MANAGEMENT, you can use the SHRINK command which is very
    useful to rearrange your Tables and indexes (starting with 10g).

    Best regards
    Jean Valentine

  • PCTFREE and PCTUSED for index.

    Simple doubt confuse many.

    1 why PCTFREE is required as update is performed internally as a deletion followed by insert in the index? Also this PCTFREE can waste space also in block.

    2. why PCTUSED is required as a complete block must be free (no key entry) to be re-used anywhere in the structure of the index by listing in free-list index?

    -Yasser

    YasserRACDBA wrote:
    Simple doubt confuse many.

    1 why PCTFREE is required as update is performed internally as a deletion followed by insert in the index? Also this PCTFREE can waste space also in block.

    PCTFREE is essentially used for updates of these Null enteries in marketing and now have updated.

    2. why PCTUSED is required as a complete block must be free (no key entry) to be re-used anywhere in the structure of the index by listing in free-list index?

    PCTUSED is NOT used for the index. You can't control how index blocks would be used as as setting limits used again lower in data blocks. Here's a good explanation for the same question asked by yours truly :)

    PCTUSED in the index 0...

    HTH
    Aman...

  • FREELISTS and FREELIST GROUPS of CREATE TABLE

    My oracle 10g, create table statement is below:

    CREATE TABLE S005. Test

    (

    AAA char (1)

    )

    PCTFREE 0

    STORAGE)

    FREELISTS 10

    FREELIST GROUPS 20

    )

    LOGGING

    NOCACHE

    NOPARALLEL

    NOMONITORING;

    After performing this sql, I have a query table USER_TABLES but FREELISTS and FREELIST_GROUPS fields show nothing.

    In my view, FREELISTS value must be 10, and FREELIST_GROUPS should be 20. How to retrieve these values?

    Thank you very much

    SAMS - Oracle FAQ

  • Question about the rowchain and performance impact

    Hi all

    We have a table is partitioned and we insert data with values in column PK only leaving all other null column values. After one or two days we will update the column values.

    We are to suspect that our table suffers from rowchain. We did no analysis to see the rowchain as he is busy 24/7 system.  system stats "table continues line" could not useful as we do scan on partitions full and never no index lookup.

    Assuming that we suffer from rowchain what is the best practice to follow?

    (1) should we insert the dummy data in the first place? We wanted to insert some dummy values that is going to be same length of length of data for future update. What is this popular help with problem the chain line?

    Made Oracle deletes data on the block and reuses the same space for the new updated value? (Assuming that the new value of data will be exact same length)

    (2) if the method above doesn't work, then the only solution it to have high PCTFREE?

    -Thank you

    That should help, if your update does not increase the size of the line is not necessary for oracle to migrate.

    You another issue of additional work would not set. What is a two step process?

  • NULL values and cardinality

    Hello Experts,

    I read a slide (five things you probably don't know about SQL) on the values NULL and the cardinality of Tom Kyte. He has demonstrated this indexed column with estimate cardinality evil cause NULL values. However, I do not understand why it causes the estimation of cardinality wrond? You have an idea?

    Party suite comes from the slide. Here's the proof, but is not written why.

    OPS$ % ORA11GR2 tkyte > create table t

    2 20 PCTFREE

    3 as

    4. Select a.*,

    5 case when mod(rownum,100) < = 50

    6 then last_ddl_time

    7 end end_date

    8 object;

    Table created.


    OPS$ % ORA11GR2 tkyte > create indexes t_idx

    2 on t (end_date);

    The index is created.


    OPS$ % ORA11GR2 tkyte > select count (*)

    2 t

    3 where end_date

    4 between to_date ('01 - sep - 2010 "," dd-mon-yyyy "")

    5 and to_date ('30-Oct-2010, ' mon-dd-yyyy "");

    COUNT (*)

    ----------

    36267


    OPS$ % ORA11GR2 tkyte > start

    DBMS_STATS.gather_table_stats 2 (user, 't');

    3 end;

    4.

    PL/SQL procedure successfully completed.


    OPS$ % ORA11GR2 tkyte > select count (*),

    2. count (distinct end_date)

    count (end_date) 3,.

    min (end_date) 4,

    5 max (end_date)

    6 t;

    CNT CNTD CNT2 MIN MAX

    ---------- ---------- ---------- --------- ---------

    72228 703 36850 1 OCTOBER 02 SEP 30.-11


    OPS$ % ORA11GR2 tkyte > set autotrace traceonly explain

    OPS$ % ORA11GR2 tkyte > select *.

    2 t

    3 where end_date

    4 between to_date (' 01-sep-2010', 'dd-mon-yyyy')

    5 and to_date ('30-Oct-2010, 'dd-mon-yyyy');

    Execution plan

    ----------------------------------------------------------

    Hash value of plan: 1601196873


    --------------------------------------------------------------------------

    | ID | Operation | Name | Lines | Bytes | Cost (% CPU). Time |

    --------------------------------------------------------------------------

    |   0 | SELECT STATEMENT |      | 36024 |  3588K |   339 (1) | 00:00:05 |

    |*  1 |  TABLE ACCESS FULL | T    | 36024 |  3588K |   339 (1) | 00:00:05 |

    --------------------------------------------------------------------------

    Information of predicates (identified by the operation identity card):

    ---------------------------------------------------

    1 Filter ("End_date" < = TO_DATE (' 2010-09-30 00:00:00 ',' syyyy-mm-dd '))

    HH24:MI:SS') AND 'End_date' > = TO_DATE (' 2010-09-01 00:00:00 ', ')

    'syyyy-mm-dd hh24:mi:ss"))


    OPS$ % ORA11GR2 tkyte > update t

    End_date set 2 =.

    3 to_date ('01 - jan - 9999',' mon-dd-yyyy "")

    4 where End_date is null;

    35378 lines to date.

    OPS$ % ORA11GR2 tkyte > commit;

    Validation complete.


    OPS$ % ORA11GR2 tkyte > start

    DBMS_STATS.gather_table_stats 2 (user, 't');

    3 end;

    4.

    PL/SQL procedure successfully completed.


    OPS$ % ORA11GR2 tkyte > select *.

    2 t

    3 where end_date

    4 between to_date ('01 - sep - 2010 "," dd-mon-yyyy "")

    5 and to_date ('30-Oct-2010, ' mon-dd-yyyy "");

    Execution plan

    -------------------------------------------------

    Hash value of plan: 470836197


    ---------------------------------------------------------------------------

    | ID | Operation | Name | Lines | Bytes | Cost (% CPU).

    ---------------------------------------------------------------------------

    |   0 | SELECT STATEMENT |       |   175. 18375 |    10 (0) |

    |   1.  TABLE ACCESS BY INDEX ROWID | T     |   175. 18375 |    10 (0) |

    |*  2 |   INDEX RANGE SCAN | T_IDX |   175 |       |     2 (0) |

    ---------------------------------------------------------------------------

    Information of predicates (identified by the operation identity card):

    ---------------------------------------------------

    1 Filter ("End_date" < = TO_DATE (' 2010-09-30 00:00:00 ',' syyyy-mm-dd '))

    HH24:MI:SS') AND 'End_date' > = TO_DATE (' 2010-09-01 00:00:00 ', ')

    'syyyy-mm-dd hh24:mi:ss"))



    Thanks in advance.

    Charlie

    Jonathan has hit it on the head.

    the index has nothing really to do with anything.

    See ask Tom: on queries to external tables, the consistency of data and nothing


    " NULL values and cardinality.


  • Local and Global Index confusion...

    Hi all

    Oracle Database 10 g Enterprise Edition Release 10.2.0.3.0 - 64 bit

    I have a partitioned table, when developing the application, they have committed an index ON this table. Previously, whenever we use to run 'Alter Table add partition..' global index becomes unusable and I used to rebuild the same. But in recent months, each time we add partition (Alter Table... ADD Partition..) on this table, index will get unusable to stat instead it shows that indexes THE data dictionaries (Lacality = Local in USER_PART_INDEXES). Partitioned indexes are also automatically created with each table partition creation.

    But the query below shows the output indexes are GLOBAL.

    Select double dbms_metadata.get_ddl('INDEX','ABCD','USER_A');

    Can someone me help on what actually happened here.

    But the example above has the keyword LOCAL?

    CREATING INDEX 'SEB '. "" CDRV_I1 ""SEBS ". "" CDRV ' ('CDRV_CURNT_FL', 'IND_LAST_VERSN', 'GMT_SEIZ_DT_TIME', 'CLECT_ZONE', 'CALL_ID',

    "SWTCH_ADMIN_ABBR")

    PCTFREE, INITRANS 10 2 MAXTRANS 255 LOGGING

    STORAGE (INITIAL 10485760 NEXT 10485760 MINEXTENTS 2 MAXEXTENTS 2147483645)

    PCTINCREASE 0 DEFAULT USER_TABLES)

    "SEBS_CDRV_TAB" of LOCAL TABLESPACE

    (PARTITION "CDRV_HISTORIC"

    PCTFREE, INITRANS 10 2 MAXTRANS 255

    STORAGE (INITIAL 10485760 NEXT 10485760 MINEXTENTS 2 MAXEXTENTS 2147483645)

    PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 DEFAULT USER_TABLES)

    TABLESPACE "SEBS_CDRV_TAB."

    If it looks like a duck and quacks like a duck, it is very probably a duck (or the local index)

    See you soon

    Richard Foote

    http://richardfoote.WordPress.com/

  • I used REGEXP_REPLACE to remove Scott. is it possible to delete all information on Scott and storage simultaneously using REGEXP_REPLACE...?

    I used REGEXP_REPLACE to remove Scott. is it possible to delete all information on Scott and storage simultaneously using REGEXP_REPLACE...?


    Select REGEXP_REPLACE (dbms_metadata.get_ddl('TABLE','EMP'), '("Scott")', ", 1, 0, 'i') twice;


    result:

    CREATE TABLE 'EMP '.

    (SELECT 'EMPNO' NUMBER (4,0) NOT NULL,)

    'ENAME' VARCHAR2 (10),

    VARCHAR2 (9) "JOB."

    "MGR" NUMBER (4,0).

    "SAL" NUMBER (7.2).

    "DEPTNO" NUMBER (2.0)

    ) PCTFREE, PCTUSED, INITRANS 40 10 1 MAXTRANS 255 NOCOMPRESS SLAUGHTER

    TABLESPACE 'USERS '.


    I want to:


    CREATE TABLE 'EMP '.

    (SELECT 'EMPNO' NUMBER (4,0) NOT NULL,)

    'ENAME' VARCHAR2 (10),

    VARCHAR2 (9) "JOB."

    "MGR" NUMBER (4,0).

    "SAL" NUMBER (7.2).

    "DEPTNO" NUMBER (2.0)

    )

    Hello.

    In fact, it's a Japanese forum here.

    I'm sorry, English is not good for me...

    According to the reference,.

    DBMS_METADATA

    The description of the parameter called SEGMENT_ATTRIBUTES, it is written like this.

    > If TRUE , include clauses attributes segment in the DDL. If FALSE , omit them. Default value is TRUE .

    Before you SELECT it, it's OK if you run the following.

    exec DBMS_METADATA. SET_TRANSFORM_PARAM (DBMS_METADATA. False SESSION_TRANSFORM, 'SEGMENT_ATTRIBUTES',);

    I hope you find it informative.

  • Exadata - any changes in functionality between V2 / X 3 and the ESS/RDBMS?

    All,

    We are running a quarter V2-rack on 11.2.0.2 BP7 and 11.2.2.3.2 ESS. We're heading to a quarter-rack 3 X little which runs to regardless of recent older versions and the RDBMS/GI/ESS.

    We use on our current Production environment, of hepatocellular carcinoma and discovered that with bitmap indexes (which we have a lot), it was necessary to disable the index, perform the HCC compression on the table and then rebuild the index later.


    Obviously, an operation very intense when we have HUGE clues.


    Anyone know if this same behavior in 11.2.0.3 ESS RDBMS/more later? We are always forced to disable the index before run us HCC on the table or have the relationship between the index bitmap and HCC cooled a bit?


    Mark

    Hi Mark,

    You will get probably may 2013 11.2.0.3.18 (RDBMS) on 11.2.3.2.1 (ESS).

    You can find some details in 888828.1 (or follow link https://updates.oracle.com/Orion/Services/download?type=readme&aru=16223374) to find what has been corrected.

    Kind regards

    Tycho

Maybe you are looking for