LOB pctversion vs retention definition
I am trying to understand the difference between pctversion and retention definitions of LOB column.
I am using outline LOB (5.5Kb size) that is stored in ASSM tablespace with UNIFORM size .
If i create a LOB without any settings then default is RETENTION that is derived from UNDO_RETENTION of the instance.
In addition i can see in user_lobs PCTVERSION is set to 10 which is a default value.
The question is what definition is taken precedence RETENTION or PCTVERSION ?
What is the exact meaning of RETENTION inside the LOB definition , does it mean that previous LOB pages are not overwritten for the UNDO_RETENTION period of time ?
My application is running massive update commands against LOB column with very few select statemnets .
I see that my LOB Segment is growing and application is waiting for "enq HW contention" wait.
Thank you
Michael
Yes, of course i read the docs but got confused by what is defined in the docs and especially what was not written there.
Oracle documentation does not mention that in ASSM tablespaces LOBS default definition is retention and not pctversion. This information i found in metalink.
My question was when i see both definitions in user_lobs what definition is really taken place.
I have played a little with PCTVERSION by setting it to 100 or to 0.
When i set it to 100 i see that each time i do an update LOB segment allocates new extent and does not overwrite any of already allocated extents in a future.
Test case:
Create table with LOB
In a LOOP update LOB column one by one (all table rows) doing a commit after each update.
The result of this test case with PCTVERSION 0 is that LOB segment is increased by initial value of extents
If at the begining it was 100 extents , after 1 full update it was extended to 200 extents and so on.
The question is for how long time old versions will be kept (please notice that all these old versions are from committed changes) ?
Another question about RETENTION, does it mean that for X sec (defined by UNDO_RETENTION) Oracle is keeping old versions of the LOB without doing overwrite ?
If this is true then this may very quickly lead to significant LOB segment growth.
For example application that performs massive updates on LOBS and UNDO_RETENTION is defined for 12 hours.
The problem here that i can not tune RETENTION period on a LOB level .
Michael
Similar Messages
-
Hi,
I try to modify the retention parameter on a partition table. Whatever the SQL order, I ran ... I can't see the result in the dictionary. What's wrong in my sql order ?
Thanks a lot for your help ..
The release of the database is 9.2.0.8.
I create the table:
==============
CREATE TABLE test_lob (chp1 clob, chp2 int)
lob (chp1) STORE AS SEGNAME (TABLESPACE FD
PCTVERSION 0)
partition by range (chp2)
(PARTITION P1 VALUES LESS THAN (1),
PARTITION P2 VALUES LESS THAN (2),
PARTITION P3 VALUES LESS THAN (3));
I verify that the value is correct in the dictionary:
===================================
select bitand(defflags,32) from sys.partlob$ where TABOBJ# in(select OBJECT_ID from dba_objects where OBJECT_NAME='TEST_LOB');
(result is 0)
I modify the table:
===============
alter table test_lob modify lob(chp1) (retention);
I check one more time:
==================
select bitand(defflags,32) from sys.partlob$ where TABOBJ# in(select OBJECT_ID from dba_objects where OBJECT_NAME='TEST_LOB');
(result is 0 .. must be 32)
I make another SQL order:
====================
alter table test_lob modify partition p1 lob (chp1) (retention);
alter table test_lob modify partition p2 lob (chp1) (retention);
alter table test_lob modify partition p3 lob (chp1) (retention);
I check one more time :
====================
select bitand(defflags,32) from sys.partlob$ where TABOBJ# in(select OBJECT_ID from dba_objects where OBJECT_NAME='TEST_LOB');
(result is 0 .. must be 32)
What's wrong ???Before I checked the 10g manual I would have said that LOB segments do not use UNDO tablespace. UNDO for LOB segments is kept in the LOB segment.
>>
PCTVERSION integer Specify the maximum percentage of overall LOB storage space used for maintaining old versions of the LOB. The default value is 10, meaning that older versions of the LOB data are not overwritten until they consume 10% of the overall LOB storage space.
You can specify the PCTVERSION parameter whether the database is running in manual or automatic undo mode. PCTVERSION is the default in manual undo mode. RETENTION is the default in automatic undo mode. You cannot specify both PCTVERSION and RETENTION.
RETENTION Use this clause to indicate that Oracle Database should retain old versions of this LOB column. Oracle Database uses the value of the UNDO_RETENTION initialization parameter to determine the amount of committed undo data to retain in the database.
You can specify the RETENTION parameter only if the database is running in automatic undo mode. In this mode, RETENTION is the default value unless you specify PCTVERSION. You cannot specify both PCTVERSION and RETENTION
<<
I still believe that when RETENTION is set that Oracle uses the LOB segment to store the UNDO rather than the UNDO tablespace, but I will have to see the documentation in more detail to try to find support.
HTH -- Mark D Powell -- -
Deallocating the Clob Segments
Hi,
We have an application which has many tables with CLOB columns. There are some historical tables which has to be purged on a regular basis to keep the DB size as minimal as possible. Now When I Query the user Segments , I find lot of LOB segments taking more space. Is there anyway through which we can relate these LOB_SEGMENTS to their respective tables and columns ?.query ALL_LOBS
SQL> desc all_LOBS
Name Null? Type
OWNER VARCHAR2(30)
TABLE_NAME VARCHAR2(30)
COLUMN_NAME VARCHAR2(4000)
SEGMENT_NAME VARCHAR2(30)
TABLESPACE_NAME VARCHAR2(30)
INDEX_NAME VARCHAR2(30)
CHUNK NUMBER
PCTVERSION NUMBER
RETENTION NUMBER
FREEPOOLS NUMBER
CACHE VARCHAR2(10)
LOGGING VARCHAR2(7)
ENCRYPT VARCHAR2(4)
COMPRESSION VARCHAR2(6)
DEDUPLICATION VARCHAR2(15)
IN_ROW VARCHAR2(3)
FORMAT VARCHAR2(15)
PARTITIONED VARCHAR2(3)
SECUREFILE VARCHAR2(3)
SEGMENT_CREATED VARCHAR2(3) -
Quick Migrate SQL 2k To Oracle 10g fails
Has anyone come across a solution for the following:
Error ocurred during capture: ORA-24816: Expanded non LONG bind data supplied after actual LONG or LOB column
When using the quick migrate feature of SQL Developer 2.1.1.64 to import a SQL Server 2000 database into Oracle 10g. I am also using JTDS 1.2.5.
Any assistance would be appreciated - thanks in advance.
Edited by: user13281085 on Jun 10, 2010 4:34 PMHi,
I found a reference to a cause for this error available in My Oracle Support -
ORA-24816 On Insert Statement (Doc ID 746333.1)
When attempting to insert data into a table that contains LOBs, received the following error during insert.
INSERT INTO catentdesc (NAME, LONGDESCRIPTION, XMLDETAIL, AVAILABLE, PUBLISHED) VALUES (?, ?, ?, ?, ?)
ERROR
Ora-24816: expanded non long bind data supplied after actual long or lob column
The table definition is:
Name Null? Type
NAME VARCHAR2(128)
LONGDESCRIPTION CLOB
XMLDETAIL CLOB
AVAILABLE NOT NULL NUMBER(38)
PUBLISHED NOT NULL NUMBER(38)
The workround was to change the insert -
INSERT INTO catentdesc (NAME, AVAILABLE, PUBLISHED,
LONGDESCRIPTION, XMLDETAIL) VALUES (?, ?, ?, ?, ?);
where the lob columns are positioned at the end of the statement.
This is fixed in the 11.2 RDBMS.
========
To follow up we would need to know the statement causing the problem and the definition of the SQL*Server table involved.
Could you do a manual capture and generate the scripts for the Oracle table creates ?
Regards,
Mike -
Using SECUREFILE in STORAGE preference?
I know I can set BASIC_STORAGE preferences for a CONTEXT index. For r_table_clause, the documentation states that The default clause is: 'LOB(DATA) STORE AS (CACHE)'.
If I'm using 11g, does it make sense to specify this as: 'LOB(DATA) STORE AS SECUREFILE (CACHE)'?
If so, do any of the other SECURFILE options (like COMPRESS or DEDUPLICATE) make sense?
Thanks!As far as I understand, option SECUREFILE (CACHE) wont make any sense with both base table and $R table, IF
- all your queries are using the specified index
Other way round, if all your queries are using index always, then it can fetch the required data from $R itself and it wont require to access the base table for LOB data.
But, for other option like COMPRESS it very well make sense.
If you use COMPRESS option only in $R table, it compresses the data of only $R table but your base table still uses large amount of space.
So, for big LOB data, you should definitely use COMPRESS for base table too (keeping in mind about the performance issue while syncing index etc). -
LOB Storage definition in Designer
Does somebody know how to specify a
LOB Storage definition in Designer 6i?
Thanks,
MichaelHi Didier - its actually the measure I'm trying tu restrict.
I'm a bit hazy on what I'øm supposed to use as a filter key.
What I'm trying to do is:
1. Create a restricted measuer called BO Amount Curr
2. Which is based on SAP measure Amount
3. The restriction should be based on the dimension L01 Currency
4. where the use selects the desired currency unit at run time.
I suspect that I'm messing up the filter key selection - however, I haven't been able to find a guide on how to use this functionality.
What should be uesd as Filter key - the dimesion you want to filter or the dimension you want to use as filter?
When I use the Filter dimension as filter key - I get an empty query result.
br
Jess -
R3load export of table REPOSRC with lob col - error ora-1555 and ora-22924
Hello,
i have tried to export data from our production system for system copy and then upgrade test. while i export the R3load job has reported error in table REPOSRC, which has lob column DATA. i have apsted below the conversation in which i have requested SAP to help and they said it comes under consulting support. this problem is in 2 rows of the table.
but i would like to know if i delete these 2 rows and then copy from our development system to production system at oracle level, will there be any problem with upgrade or operation of these prorgams and will it have any license complications if i do it.
Regards
Ramakrishna Reddy
__________________________ SAP SUPPORT COnveration_____________________________________________________
Hello,
we have are performing Data Export for System copy of our Production
system, during the export, R3load Job gave error as
R3LOAD Log----
Compiled Aug 16 2008 04:47:59
/sapmnt/DB1/exe/R3load -datacodepage 1100 -
e /dataexport/syscopy/SAPSSEXC.cmd -l /dataexport/syscopy/SAPSSEXC.log -stop_on_error
(DB) INFO: connected to DB
(DB) INFO: DbSlControl(DBSL_CMD_NLS_CHARACTERSET_GET): WE8DEC
(DB) INFO: Export without hintfile
(NT) Error: TPRI_PAR: normal NameTab from 20090828184449 younger than
alternate NameTab from 20030211191957!
(SYSLOG) INFO: k CQF :
TPRI_PAR&20030211191957&20090828184449& rscpgdio 47
(CNV) WARNING: conversion from 8600 to 1100 not possible
(GSI) INFO: dbname = "DB120050205010209
(GSI) INFO: vname = "ORACLE "
(GSI) INFO: hostname
= "dbttsap "
(GSI) INFO: sysname = "AIX"
(GSI) INFO: nodename = "dbttsap"
(GSI) INFO: release = "2"
(GSI) INFO: version = "5"
(GSI) INFO: machine = "00C8793E4C00"
(GSI) INFO: instno = "0020111547"
(DBC) Info: No commits during lob export
DbSl Trace: OCI-call 'OCILobRead' failed: rc = 1555
DbSl Trace: ORA-1555 occurred when reading from a LOB
(EXP) ERROR: DbSlLobGetPiece failed
rc = 99, table "REPOSRC"
(SQL error 1555)
error message returned by DbSl:
ORA-01555: snapshot too old: rollback segment number with name "" too
small
ORA-22924: snapshot too old
(DB) INFO: disconnected from DB
/sapmnt/DB1/exe/R3load: job finished with 1 error(s)
/sapmnt/DB1/exe/R3load: END OF LOG: 20100816104734
END of R3LOAD Log----
then as per the note 500340, i have chnaged the pctversion of table
REPOSRC of lob column DATA to 30, but i get the error still,
i have added more space to PSAPUNDO and PSAPTEMP also, still the same
error.
the i have run the export as
exp SAPDB1/sap file=REPOSRC.dmp log=REPOSRC.log tables=REPOSRC
exp log----
dbttsap:oradb1 5> exp SAPDB1/sap file=REPOSRC.dmp log=REPOSRC.log
tables=REPOSRC
Export: Release 9.2.0.8.0 - Production on Mon Aug 16 13:40:27 2010
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to: Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit
Production
With the Partitioning option
JServer Release 9.2.0.8.0 - Production
Export done in WE8DEC character set and UTF8 NCHAR character set
About to export specified tables via Conventional Path ...
. . exporting table REPOSRC
EXP-00056: ORACLE error 1555 encountered
ORA-01555: snapshot too old: rollback segment number with name "" too
small
ORA-22924: snapshot too old
Export terminated successfully with warnings.
SQL> select table_name, segment_name, cache, nvl(to_char
(pctversion),'NULL') pctversion, nvl(to_char(retention),'NULL')
retention from dba_lobs where
table_name = 'REPOSRC';
TABLE_NAME | SEGMENT_NAME |CACHE | PCTVERSION | RETENTION
REPOSRC SYS_LOB0000014507C00034$$ NO 30 21600
please help to solve this problem.
Regards
Ramakrishna Reddy
Dear customer,
Thank you very much for contacting us at SAP global support.
Regarding your issue would you please attach your ORACLE alert log and
trace file to this message?
Thanks and regards.
Hello,
Thanks for helping,
i attached the alert log file. i have gone through is, but i could
not find the corresponding Ora-01555 for table REPOSRC.
Regards
Ramakrishna Reddy
+66 85835-4272
Dear customer,
I have found some previous issues with the similar symptom as your
system. I think this symptom is described in note 983230.
As you can see this symptom is mainly caused by ORACLE bug 5212539 and
it should be fixed at 9.2.0.8 which is just your version. But although
5212539 is implemented, only the occurrence of new corruptions will be
avoided, the already existing ones will stay in the system regardless of the patch.
The reason why metalink 452341.1 was created is bug 5212539, since this
is the most common software caused lob corruption in recent times.
Basically any system that was running without a patch for bug 5212539 at some time in the past could be potentially affected by the problem.
In order to be sure about bug 5212539 can you please verify whether the
affected lob really is a NOCACHE lob? You can do this as described in
mentioned note #983230. If yes, then there are basically only two
options left:
-> You apply a backup to the system that does not contain these
corruptions.
-> In case a good backup is not available, it would be possible to
rebuild the table including the lob segment with possible data loss . Since this is beyond the scope of support, this would have to be
done via remote consulting.
Any further question, please contact us freely.
Thanks and regards.
Hello,
Thanks for the Help and support,
i have gone through the note 983230 and metalink 452341.1.
and i have ran the script and found that there are 2 rows corrupted in
the table REPOSRC. these rows belong to Standard SAP programs
MABADRFENTRIES & SAPFGARC.
and to reconfirm i have tried to display them in our development system
and production system. the development systems shows the src code in
Se38 but in production system it goes to short dump DBIF_REPO_SQL_ERROR.
so is it possible to delete these 2 rows and update ourselves from our
development system at oracle level. will it have any impact on SAP
operation or upgrade in future.
Regards
Ramakrishna ReddyHello, we have solved the problem.
To help someone with the same error, what we have done is:
1.- wait until all the processes has finished and the export is stopped.
2.- startup SAP
3.- SE14 and look up the tables. Crete the tables in the database.
4.- stop SAP
5.- Retry the export (if you did all the steps with sapinst running but the dialogue window in the screen) or begin the sapinst again with the option: "continue with the old options".
Regards to all. -
Hello.
We have tablespace USERS, in this tablespace we have big LOBSEGMENT (115 GB):
IFD.SYS_LOB0000153564C00002$$
I find what it is it:
SELECT owner, table_name, column_name
FROM dba_lobs
WHERE segment_name LIKE 'SYS_LOB0000153564C00002$$';
Result:
OWNER : IFD
TABLE_NAME : T_XML_LOAD
COLUMN_NAME : XML_DOC_BLOB
I try to find what in this LOB take so many space ?! And use this:
SELECT dbms_lob.getlength(XML_DOC_BLOB)/1048576,ss.user_name,ss.id,ss.num_of_line,ss.date_load FROM IFD.T_XML_LOAD ss ORDER BY dbms_lob.getlength(XML_DOC_BLOB) DESC;
Result:
DBMS_LOB.GETLENGTH(XML_DOC_BLO USER_NAME ID NUM_OF_LINE DATE_LOAD
161,970319747925 IFD 40035 805462 26.03.2010 13:40:02
160,532628059387 SYS 28768692 1710570 19.08.2011 22:50:00
159,682207107544 SYS 28526053 1701731 12.08.2011 22:50:00
159,381219863892 SYS 28413137 1698744 05.08.2011 22:50:00
158,797404289246 SYS 28284336 1692654 29.07.2011 22:50:00
158,017144203186 SYS 27468680 1684534 22.07.2011 22:50:00
157,411050796509 SYS 27332613 1678214 15.07.2011 22:50:00
156,677186965942 SYS 27199246 1670574 08.07.2011 22:50:01
156,494536399841 SYS 27044492 1668730 01.07.2011 22:50:00
155,795727729797 SYS 26757077 1661519 24.06.2011 22:50:00
154,577393531799 SYS 26611800 1648826 17.06.2011 22:50:00
154,029727935791 SYS 26548886 1643136 10.06.2011 22:50:00
153,142061233521 SYS 25521350 1633923 03.06.2011 22:50:00
152,008434295654 SYS 25426220 1622157 27.05.2011 22:50:00
151,739135742188 SYS 23757539 1621182 25.03.2011 21:01:11
151,739135742188 SYS 23759891 1621182 26.03.2011 15:44:11
151,229548454285 SYS 24915230 1614073 20.05.2011 22:50:01
150,821460723877 SYS 24763769 1610080 06.05.2011 22:50:00
150,512250900269 SYS 24840403 1606616 13.05.2011 22:50:00
150,183876991272 SYS 24705893 1603575 29.04.2011 22:50:01
Not summary 115 Gb...If you will look this size in MB's ... But total size not 115 GB... How to find who take big size in this LOB ?!
Please help! Thx.Try first to get the user size of all LOB column with something like:
SELECT sum(dbms_lob.getlength(XML_DOC_BLOB)/1048576)
FROM IFD.T_XML_LOAD;Then you need to check at least:
1. LOB segment storage parameters like PCTVERSION/RETENTION because undo data for LOB column is stored in LOB segments and not in undo tablespace
2. CHUNK parameter
See http://download.oracle.com/docs/cd/E11882_01/appdev.112/e18294/adlob_tables.htm#ADLOB45274.
Please post also your 4 digits Oracle version and if using 11g whether you are using BasicFiles or SecureFiles.
Edited by: P. Forstmann on 25 août 2011 08:28 -
E-Recruiting 6.0: Expiry & Retention Periods
Hi Experts,
Expiration Period
Definition: It indicates the maximum period of time an application & the person-related data of the associated candidate may be saved in the system once the recruitment process has been completed. The process is completed when the application status is set to 'rejected' or 'withdrawn'.
Question (1):
If I set the period to be 12 months, after 12 months, what happens to my applications? Will the system automatically deletes it? How does the system actually works based on the config for this parameter?
Retention Period
Definition: It indicates how long a requisition and all related information (applications, applicant data, activities, audit trails etc) must be retained before they can be deleted.
Question (2):
I have set it to 12 months. But when i tried deleting a requisition which I have created, the system still allows it. Can anyone share with me how does the system reacts based on my settings?
Thanks in advance.
WilliamWell the functionality is not consistent.
If you maintain periods of time for retention on a requisition, the workflow calculates a retention limit date for an application when it is rejected. It will never be updated automatically.
A check on retention dates when deleting an requisition is not implemented. I checked the code but did not find anything.
The only check on this date, which will be than in the candidacy information (hrp5133), is in report:
RCF_DELETE_EXT_CAND
Regards -
Hi all,
I'm working with 11gR2 version in RAC environment with 2 nodes. I'm creating the schemes on my new database with empty tablespaces and 100Mb of initial free space. I'm having an error on the creation of this table:
CREATE TABLE "IODBODB1"."DOCUMENTOS"
( "ID_DOC" NUMBER NOT NULL ENABLE,
"ID_APP" NUMBER(5,0) NOT NULL ENABLE,
"ID_CLS" NUMBER(6,0) NOT NULL ENABLE,
"CREATE_FEC" DATE NOT NULL ENABLE,
"LAST_MODIFIED_FEC" DATE NOT NULL ENABLE,
"DOC_NAME" VARCHAR2(100 BYTE) NOT NULL ENABLE,
"DOC_SIZE" NUMBER NOT NULL ENABLE,
"DOC_DATA" BLOB NOT NULL ENABLE,
"CLASE_FORMATO_FORMATO" VARCHAR2(150 BYTE),
"REGULAR_NAME" VARCHAR2(100 BYTE) NOT NULL ENABLE,
"USUARIO" VARCHAR2(25 BYTE),
"USUARIO_LEVEL" VARCHAR2(5 BYTE)
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "ODBODB_TBD_DADES"
LOB ("DOC_DATA") STORE AS BASICFILE (ENABLE STORAGE IN ROW CHUNK 8K PCTVERSION 10 NOCACHE LOGGING STORAGE( BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT))
PARTITION BY LIST ("ID_APP")
SUBPARTITION BY RANGE ("ID_DOC")
PARTITION "PTL_DOCUMENTOS_FICTICIO" VALUES (0) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
STORAGE(BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "ODBODB_TBD_DADES"
LOB ("DOC_DATA") STORE AS BASICFILE (ENABLE STORAGE IN ROW CHUNK 8K PCTVERSION 10 NOCACHE LOGGING STORAGE(BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT))
(SUBPARTITION "PTR_DOCUMENTOS_FICTICIO" VALUES LESS THAN (MAXVALUE) LOB ("DOC_DATA") STORE AS (TABLESPACE "ODBODB_TBL_LOBS" ) TABLESPACE "ODBODB_TBD_DADES" NOCOMPRESS ) );
PARTITION "PTL_DOCUMENTOS_ALFIMG" VALUES (2) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
STORAGE(BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "ODBODB_TBD_DADES"
LOB ("DOC_DATA") STORE AS BASICFILE (ENABLE STORAGE IN ROW CHUNK 32K PCTVERSION 10 NOCACHE LOGGING STORAGE(BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT))
(SUBPARTITION "STR_DOCUMENTOS_ALFIMG" VALUES LESS THAN (MAXVALUE) LOB ("DOC_DATA") STORE AS (TABLESPACE "BEALFIMG_TBL_ODB" ) TABLESPACE "BEALFIMG_TBD_ODB" NOCOMPRESS )
The error is:
ORA-03252: initial extent size not enough for LOB segment
I can't understand how Oracle can't allocate enough extents to create the LOB segment, and I don't know to which LOB segment it refers because the sqlplus don't mark it with the error.
Any ideas about this issue?
Thanks in advance!
dbajugPlease, forget this post, I feel dumb... The LOB segment need to have same size of the rest of partition...
-
EXP/IMP..of table having LOB column to export and import using expdp/impdp
we have one table in that having colum LOB now this table LOB size is approx 550GB.
as per our knowldge LOB space can not be resused.so we have alrady rasied SR on that
we are come to clusion that we need to take backup of this table then truncate this table and then start import
we need help on bekow ponts.
1)we are taking backup with expdp using parellal parameter=4 this backup will complete sussessfully? any other parameter need to keep in expdp while takig backup.
2)once truncate done,does import will complete successfully..?
any SGA PGA or undo tablespace size or undo retention we need to increase.. to completer susecfully import? because its production Critical database?
current SGA 2GB
PGA 398MB
undo retention 1800
undo tbs 6GB
please any one give suggestion to perform activity without error...also suggest parameter need to keep during expdp/impdp
thanks an advance.Hi,
From my experience be prepared for a long outage to do this - expdp is pretty quick at getting lobs out but very slow at getting them back in again - a lot of the speed optimizations that may datapump so excellent for normal objects are not available for lobs. You really need to test this somewhere first - can you not expdp from live and load into some test area - you don't need the whole database just the table/lob in question. You don;t want to find out after you truncate the table that its going to take 3 days to import back in....
You might want to consider DBMS_REDEFINITION instead?
Here you precreate a temporary table (with same definitiion as the existing one), load the data into it from the existing table and then do a dictionary switch to swap them over - giving you minimal downtime. I think this should work fine with LOBS at 10g but you should do some research and see if it works fine. You'll need a lot of extra tablespace (temporarily) for this approach though.
Regards,
Harry -
Buffer busy waits after cnanging lob storage to oracle securefiles
Hi Everyone
I need help resolving a problem with buffer busy waits in for a lob segment using securefiles for storage.
During the load the application inserts a record into a table with the lob segment and update the record after, populating lob data. The block size on the table space holding the lob is 8 kb and the chunk size on the lob segment is set to 8kb. The average size of the lob record is 6 kb and the minimum size is 4.03 KB. The problem occurs only when running a job with a big number of relatively small inserts (4.03 Kb) in to the lob column . The table definition allow in-row storage and the ptcfree set to 10%. The same jobs runs without problem when using basicfiles storage for the lob column.
According to [oracle white paper |http://www.oracle.com/technetwork/database/options/compression/overview/securefiles-131281.pdf] securefiles have a number of performance enhancements. I was particular interested to test Write Gather Cache as our application does a lot of relatively small inserts into a lob segment.
Below is a fragment from the AWR report. It looks like all buffer busy waits belong to a free list class. The lob segment is located in an ASSM tablespace and I cannot increase freelists.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning option
Host Name Platform CPUs Cores Sockets Memory(GB)
DB5 Microsoft Windows x86 64-bit 8 2 31.99
Snap Id Snap Time Sessions Curs/Sess
Begin Snap: 1259 01-Apr-11 14:40:45 135 5.5
End Snap: 1260 01-Apr-11 15:08:59 155 12.0
Elapsed: 28.25 (mins)
DB Time: 281.55 (mins)
Cache Sizes Begin End
~~~~~~~~~~~ ---------- ----------
Buffer Cache: 2,496M 2,832M Std Block Size: 8K
Shared Pool Size: 1,488M 1,488M Log Buffer: 11,888K
Load Profile Per Second Per Transaction Per Exec Per Call
~~~~~~~~~~~~ --------------- --------------- ---------- ----------
DB Time(s): 10.0 0.1 0.01 0.00
DB CPU(s): 2.8 0.0 0.00 0.00
Redo size: 1,429,862.3 9,390.5
Logical reads: 472,459.0 3,102.8
Block changes: 9,849.7 64.7
Physical reads: 61.1 0.4
Physical writes: 98.6 0.7
User calls: 2,718.8 17.9
Parses: 669.8 4.4
Hard parses: 2.2 0.0
W/A MB processed: 1.1 0.0
Logons: 0.1 0.0
Executes: 1,461.0 9.6
Rollbacks: 0.0 0.0
Transactions: 152.3
Top 5 Timed Foreground Events
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Avg
wait % DB
Event Waits Time(s) (ms) time Wait Class
buffer busy waits 1,002,549 8,951 9 53.0 Concurrenc
DB CPU 4,724 28.0
latch: cache buffers chains 11,927,297 1,396 0 8.3 Concurrenc
direct path read 121,767 863 7 5.1 User I/O
enq: DW - contention 209,278 627 3 3.7 Other
?Host CPU (CPUs: 8 Cores: 2 Sockets: )
~~~~~~~~ Load Average
Begin End %User %System %WIO %Idle
38.7 3.5 57.9
Instance CPU
~~~~~~~~~~~~
% of total CPU for Instance: 40.1
% of busy CPU for Instance: 95.2
%DB time waiting for CPU - Resource Mgr: 0.0
Memory Statistics
~~~~~~~~~~~~~~~~~ Begin End
Host Mem (MB): 32,762.6 32,762.6
SGA use (MB): 4,656.0 4,992.0
PGA use (MB): 318.4 413.5
% Host Mem used for SGA+PGA: 15.18 16.50
Avg
%Time Total Wait wait Waits % DB
Event Waits -outs Time (s) (ms) /txn time
buffer busy waits 1,002,549 0 8,951 9 3.9 53.0
latch: cache buffers chain 11,927,297 0 1,396 0 46.2 8.3
direct path read 121,767 0 863 7 0.5 5.1
enq: DW - contention 209,278 0 627 3 0.8 3.7
log file sync 288,785 0 118 0 1.1 .7
SQL*Net more data from cli 1,176,770 0 103 0 4.6 .6
Buffer Wait Statistics DB/Inst: ORA11G/ora11g Snaps: 1259-1260
-> ordered by wait time desc, waits desc
Class Waits Total Wait Time (s) Avg Time (ms)
free list 818,606 8,780 11
undo header 512,358 141 0
2nd level bmb 105,816 29 0
-> Total Logical Reads: 800,688,490
-> Captured Segments account for 19.8% of Total
Tablespace Subobject Obj. Logical
Owner Name Object Name Name Type Reads %Total
EAG50NSJ EAG50NSJ SYS_LOB0000082335C00 LOB 127,182,208 15.88
SYS SYSTEM TS$ TABLE 7,641,808 .95
Segments by Physical Reads DB/Inst: ORA11G/ora11g Snaps: 1259-1260
-> Total Physical Reads: 103,481
-> Captured Segments account for 224.4% of Total
Tablespace Subobject Obj. Physical
Owner Name Object Name Name Type Reads %Total
EAG50NSJ EAG50NSJ SYS_LOB0000082335C00 LOB 218,858 211.50
....Best regards
Yuri KogunHi Jonathan,
I was puzzled by the number of logical reads as well. This hasn't happened when the lob was stored as a basic fille and I assumed that the database is able to store the records in-row when we switched to securefiles. With regards to ASSM, according to the documentation this is the only option when using securefiles.
We did have high number of HW-enqueue waits in the database when running the test with basic files and had to set 44951 event
alter system set EVENTS '44951 TRACE NAME CONTEXT FOREVER, LEVEL 1024' There are 2 application servers running 16 jobs each, so we should not have more than 32 sessions inserting the data in the same time but I need to check wheter jobs can be brocken to smaller peaces. I that case the number of concurrent session may be bigger. Each session is configured with bundle size of 30 and it will issue commit every 30 inserts.
I am not sure how exactly the code does insert, as I've been told it should be straight insert and update I will be able to check this on Monday.
Below is the extract from the AWR reports with top SQL, I could not find any SQL related to the $TS table in the report. The query to the V$SEGMENT_STATISTICS was executed by me during the job run.
?SQL ordered by Elapsed Time DB/Inst: ORA11G/ora11g Snaps: 1259-1260
-> Resources reported for PL/SQL code includes the resources used by all SQL
statements called by the code.
-> % Total DB Time is the Elapsed Time of the SQL statement divided
into the Total Database Time multiplied by 100
-> %Total - Elapsed Time as a percentage of Total DB time
-> %CPU - CPU Time as a percentage of Elapsed Time
-> %IO - User I/O Time as a percentage of Elapsed Time
-> Captured SQL account for 91.3% of Total DB Time (s): 16,893
-> Captured PL/SQL account for 0.1% of Total DB Time (s): 16,893
Elapsed Elapsed Time
Time (s) Executions per Exec (s) %Total %CPU %IO SQL Id
7,837.5 119,351 0.07 46.4 28.3 .7 2zrh6mw372asz
Module: JDBC Thin Client
update JS_CHANNELDESTS set CHANNELID=:1, DESTID=:2, CHANNELDESTSTATUSDATE=:3, ST
ATUS=:4, BINOFFSET=:5, BINNAME=:6, PAGECOUNT=:7, DATA=:8, SORTORDER=:9, PRINTFOR
MAT=:10, ENVELOPEID=:11, DOCID=:12, CEENVELOPEID=:13, CHANNELTYPE=:14 where ID=:
15
7,119.0 115,997 0.06 42.1 23.1 .2 3vjx93vur4dw1
Module: JDBC Thin Client
insert into JS_CHANNELDESTS (CHANNELID, DESTID, CHANNELDESTSTATUSDATE, STATUS, B
INOFFSET, BINNAME, PAGECOUNT, DATA, SORTORDER, PRINTFORMAT, ENVELOPEID, DOCID, C
EENVELOPEID, CHANNELTYPE, ID) values (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :
11, :12, :13, :14, :15)
85.6 2 42.80 .5 98.3 .0 cc19qha9pxsa4
Module: SQL Developer
select object_name, statistic_name, value from V$SEGMENT_STATISTICS
where object_name = 'SYS_LOB0000082335C00011$$'
35.0 111,900 0.00 .2 74.3 7.6 c5q15mpnbc43w
Module: JDBC Thin Client
insert into JS_ENVELOPES (BATCHID, TRANSACTIONNO, SPOOLID, JOBSETUPID, JOBSETUPN
AME, SPOOLNAME, STEPNO, MASTERCHANNELJOBID, SORTKEY1, SORTKEY2, SORTKEY3, ID) va
lues (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12)
34.9 111,902 0.00 .2 63.0 2.6 a0hmmbjwgwh1k
Module: JDBC Thin Client
insert into JS_CHANNELJOBPROPERTIES (NAME, VALUE, CHANNELJOBID, ID) values (:1,
:2, :3, :4)
29.2 950 0.03 .2 95.9 .1 du0hgjbn9vw0v
Module: JDBC Thin Client
SELECT * FROM JS_BATCHOVERVIEW WHERE BATCHID = :1
?SQL ordered by Executions DB/Inst: ORA11G/ora11g Snaps: 1259-1260
-> %CPU - CPU Time as a percentage of Elapsed Time
-> %IO - User I/O Time as a percentage of Elapsed Time
-> Total Executions: 2,476,038
-> Captured SQL account for 96.0% of Total
Elapsed
Executions Rows Processed Rows per Exec Time (s) %CPU %IO SQL Id
223,581 223,540 1.0 22.4 63.7 .0 gz7n75pf57c
Module: JDBC Thin Client
SELECT SQ_CHANNELJOBPROPERTIES.NEXTVAL FROM DUAL
120,624 120,616 1.0 8.1 99.0 .0 6y3ayqzubcb
Module: JDBC Thin Client
select batch0_.BATCHID as BATCHID0_0_, batch0_.BATCHNAME as BATCHNAME0_0_, batch
0_.STARTDATE as STARTDATE0_0_, batch0_.PARFINDATE as PARFINDATE0_0_, batch0_.PRO
CCOMPDATE as PROCCOMP5_0_0_, batch0_.BATCHSTATUS as BATCHSTA6_0_0_, batch0_.DATA
FILE as DATAFILE0_0_, batch0_.BATCHCFG as BATCHCFG0_0_, batch0_.FINDATE as FINDA
119,351 227,878 1.9 7,837.5 28.3 .7 2zrh6mw372a
Module: JDBC Thin Client
update JS_CHANNELDESTS set CHANNELID=:1, DESTID=:2, CHANNELDESTSTATUSDATE=:3, ST
ATUS=:4, BINOFFSET=:5, BINNAME=:6, PAGECOUNT=:7, DATA=:8, SORTORDER=:9, PRINTFOR
MAT=:10, ENVELOPEID=:11, DOCID=:12, CEENVELOPEID=:13, CHANNELTYPE=:14 where ID=:
15
116,033 223,892 1.9 8.0 92.2 .0 406wh6gd9nk
Module: JDBC Thin Client
select m_jobprope0_.CHANNELJOBID as CHANNELJ4_1_, m_jobprope0_.ID as ID1_, m_job
prope0_.NAME as formula0_1_, m_jobprope0_.ID as ID4_0_, m_jobprope0_.NAME as NAM
E4_0_, m_jobprope0_.VALUE as VALUE4_0_, m_jobprope0_.CHANNELJOBID as CHANNELJ4_4
_0_ from JS_CHANNELJOBPROPERTIES m_jobprope0_ where m_jobprope0_.CHANNELJOBID=:1
115,997 115,996 1.0 7,119.0 23.1 .2 3vjx93vur4d
Module: JDBC Thin Client
insert into JS_CHANNELDESTS (CHANNELID, DESTID, CHANNELDESTSTATUSDATE, STATUS, B
INOFFSET, BINNAME, PAGECOUNT, DATA, SORTORDER, PRINTFORMAT, ENVELOPEID, DOCID, C
EENVELOPEID, CHANNELTYPE, ID) values (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :
11, :12, :13, :14, :15)
115,996 115,996 1.0 15.9 75.0 4.5 3h58syyk145
Module: JDBC Thin Client
insert into JS_DOCJOBS (CREATEDATE, EFFDATE, JURIST, LANG, IDIOM, DD, DDVID, USE
RKEY1, USERKEY2, USERKEY3, USERKEY4, USERKEY5, USERKEY6, USERKEY7, USERKEY8, USE
RKEY9, USERKEY10, USERKEY11, USERKEY12, USERKEY13, USERKEY14, USERKEY15, USERKEY
16, USERKEY17, USERKEY18, USERKEY19, USERKEY20, REVIEWCASEID, ID) values (:1, :2
115,440 115,422 1.0 11.5 63.3 .0 2vn581q83s6
Module: JDBC Thin Client
SELECT SQ_CHANNELDESTS.NEXTVAL FROM DUAL
...The tablespace holding the lob segment has system extent allocation and the number of blocks for the lob segments roughly the same as the number of blocks in allocated extents.
select segment_name, blocks, count (*)
from dba_extents where segment_name = 'SYS_LOB0000082335C00011$$'
group by segment_name, blocks
order by blocks
SEGMENT_NAME BLOCKS COUNT(*)
SYS_LOB0000082335C00011$$ 8 1
SYS_LOB0000082335C00011$$ 16 1
SYS_LOB0000082335C00011$$ 128 158
SYS_LOB0000082335C00011$$ 256 1
SYS_LOB0000082335C00011$$ 1024 120
SYS_LOB0000082335C00011$$ 2688 1
SYS_LOB0000082335C00011$$ 8192 117
SELECT
sum(ceil(dbms_lob.getlength(data)/8000))
from EAG50NSJ.JS_CHANNELDESTS
SUM(CEIL(DBMS_LOB.GETLENGTH(DATA)/8000))
993216
select sum (blocks) from dba_extents where segment_name = 'SYS_LOB0000082335C00011$$'
SUM(BLOCKS)
1104536 Below is the instance activity stats related to securefiles from the AWR report
Statistic Total per Second per Trans
securefile allocation bytes 3,719,995,392 2,195,042.4 14,415.7
securefile allocation chunks 380,299 224.4 1.5
securefile bytes non-transformed 2,270,735,265 1,339,883.4 8,799.6
securefile direct read bytes 1,274,585,088 752,089.2 4,939.3
securefile direct read ops 119,725 70.7 0.5
securefile direct write bytes 3,719,995,392 2,195,042.4 14,415.7
securefile direct write ops 380,269 224.4 1.5
securefile number of non-transfo 343,918 202.9 1.3Best regards
Yuri
Edited by: ykogun on 02-Apr-2011 13:33 -
Oracle 11.2.0.3 - Lob space usage
Hi Everyone,
I would like some advise about how to interrupt LOB space usage given the following statistics. And would appreciate any feedback on whether my understanding of the following is correct:
We have a table with BLOB column which is located on a LOB segment.
This the DDL to create the table and the LOB:
CREATE TABLE BLOB_TEST
TEST_ID NUMBER NOT NULL,
TEST BLOB
LOB (TEST) STORE AS (
TABLESPACE USERS
ENABLE STORAGE IN ROW
CHUNK 8192
RETENTION
NOCACHE
LOGGING
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
TABLESPACE USERS
RESULT_CACHE (MODE DEFAULT)
PCTUSED 0
PCTFREE 30
INITRANS 10
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
The statistics for this table is as follows:
The size of the test blob is:
A.
select sum(dbms_lob.getlength (test))/1024/1024 mb from BLOB_TEST
= 4860 mb
Space above HWM ( using dbms_space.unused_space):
B.
TOTAL_BLOCKS = 778368
TOTAL_BYTES = 6376390656
UNUSED_BLOCKS = 0
UNUSED BYTES = 0
LAST_USED_EXTENT_FILE_ID = 12
LAST_USED_EXTENT_BLOCK_ID = 3383296
LAST_USED_BLOCK = 8192
Space below HWM (using dbms_space.used_space):
C.
TOTAL_BLOCKS = 778368
TOTAL_BYTES = 6376390656
UNUSED_BLOCKS = 0
UNUSED BYTES = 0
LAST_USED_EXTENT_FILE_ID = 12
LAST_USED_EXTENT_BLOCK_ID = 3383296
LAST_USED_BLOCK = 8192
Unformatted Blocks = 0
FS1 Blocks = 0
FS2 Blocks = 0
FS3 Blocks = 0
FS4 Blocks = 0
Full Blocks = 777114
Using the above, this is what I'm interrupting and need your help on this to make sure that this is right.
From A, the total size of the test blob data is: 4806 MB.
From B, the amount of free space ABOVE HWM is 0. This is because there is 0 in the unused_blocks.
From C, the amount of free space BELOW HWM is 0, because all the FS's are 0 and so is UNUSED_BLOCKS as well.
The amount of full blocks = 777114 blocks. This means that 615168 blocks (from 4806MB) is for data. The rest is for undo space as there is 0 for free space?
In addition to this, 778368 - 777114 = 1254 blocks = 9.8 mb (approx) of? I'm not sure what is this.
Am I on the right track here?
ThanksPavel wrote:
Hello!
I have Oracle 11.2.0.3 on Aix 64bit installed and see symptoms of bug 13443029 ,
have I downgrade to 11.2.0.2 to appling the patch for fixing this bug ?
README for *13443029*
Patch Details
Oracle Database 11g Release *11.2.0.2.0*
ORACLE DATABASE Patch for Bug# 13443029 for AIX5L Platforms
Released: 13 Jan, 2012Thanks and regards,
PavelOpen SR . you will get help and send you patch if they think its need that . -
Reclaiming LOB space in Oracle 10.2.0.5
Hi experts,
we have a database with some tables having LOB datatype. Even when rows from the tables having LOB data type are deleted, space is not released.
Going through documents I came across -
alter table <table> modify lob (col) (shrink space);
However this generates a lots of log. This is a big issue for me as my table has grown roughly 120G. Is there any way I could suppress log generating while shrinking space for a particular table?
Thanks for your help/advice.Shrinking the space generates a lot of redo because you're moving the LOB data around within the LOB segment. Those changes have to be protected by the generation of redo if you want the system to be online while the LOB data is being moved around. If you were somehow to suppress redo generation during the shrink operation, that would mean that if something went wrong during the shrink, your entire lob segment would be unusable. I'm assuming that would not be acceptable to you.
Is it possible for you to partition the table in such a way that the LOB data in some partitions eventually becomes at least mostly static?
What, exactly, is the problem with generating large amounts of redo? Obviously, it's going to generate a decent amount of load on your disk subsystem to write that redo information to disk and, assuming you're in archived log mode, it would add to the backup time. It's definitely annoying if you've got DataGuard and are trying to keep a standby database synchronized. It would be helpful to know exactly what aspect of the redo generation is problematic for you.
Justin -
Retention policy notification message outlook2010
some user have the "retention policy" bar at bottom of messages and some don't even though all have same default policy applied; client is outlook 2010 w latest updates; would like it applied across the board; heard someone mention that it may
be due to office 2010 professional being installed on some machines vs office 2010 standard, can anyone confirm? any suggestions to getting bar to appear short of installing professional?
thxYep, its definitely a license thing and there is no way around it.
http://office.microsoft.com/en-001/outlook-help/license-requirements-for-personal-archive-and-retention-policies-HA102576659.aspx
DJ Grijalva | MCITP: EMA 2007/2010 SPA 2010 | www.persistentcerebro.com
Maybe you are looking for
-
Urgent issue REPORT FOR ALL MATERIAL BASED ON STOC TYPE
Hi I want report for based on stock type i want to check the stock for all mterial with stock type "quality inspction" i want that type of material documents is it possible to see the report regards sesidhar
-
Customized Skins in Non-English Projects
I have a customized skin that when used non-English projects, it omits special characters in the buttons for Contents and Index. I didn't create the skin so I don't have Flash. Any suggestions on how to fix the buttons to display the missing characte
-
Query regarding perl in Oracle Home
Hi All, One of my customers has asked the following question There is Perl 5.6.1 present in OracleHome but I can't use it like Perl is meant to be, because there is no makemaker ... so I can't use modules provided by CPAN. I want to know if it is po
-
dear all, I have a simple question (I hope). I downloaded the Java EE 5 development kit but I didn't find the javaee5tutorial. Where can I find and download this tutorial? Many thanks for the help and bye, Giordano
-
Skype won't sign in on Windows 8.1
So every time I try to sign in to Skype on Windows 8.1 using the desktop version or the app version, it freezes on Signing In. I've tried compatibility mode, and it works fine on my phone, but I can't get it working on my computer. I upgraded to 8.1