| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Mailing Lists -> Oracle-L -> RE: 8i CLOB data needs a lobotomy
This is a multi-part message in MIME format.
------=_NextPart_000_0029_01BFE272.9FCD1530 Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
John,
Hmmm, there must be something weird with that perl load stuff. The DBA manuals are somewhat deficient regarding LOB management but the "Application Developer's Guide - Large Objects" documentation actually has some good stuff for DBA's. There's a section about loading data into LOB's which may help. Definitely a strange phenomenon. Good luck and let us know what you discover.
Steve Orr
-----Original Message-----
From: root_at_fatcity.com [mailto:root_at_fatcity.com]On Behalf Of John Barron
Sent: Thursday, June 29, 2000 11:09 AM
To: Multiple recipients of list ORACLE-L
Subject: RE: 8i CLOB data needs a lobotomy
Steve
We created the database from scratch and this was our first data load into a new database. Just to recap the initial datafiles was 245M and it ended up consuming 900M in the CLOB tablespace.
Ive just looked at our table create for the CLOB tables and noticed that there is no storage clause in the LOB parameters section. When we created this we set the table PCTFREE to 0 and I also asked the devlopers to do the same with LOBS. Anyway it has not been done. At present we use the defaults CHUNK=8K (our db block size) and PCTVERSION=10. I also assume that PCTFREE is set to default of 50 which could account for some of the space used. Im still not quite sure how the PCTVERSION would affect the data storage (the manual is not all that clear).
Our process for uploading the data (all done through a perl program) is:
1 rename the HOLD table to TEMP
2 rename the PREV table (which has been truncated as it holds the previous
load data) to HOLD
3 rename TEMP table to PREV table
The data is then uploaded from the perl program. The perl program dynamically constructs sql statements to do the upload and has some specific sub routines to handle CLOB cols so you cant actually see the sql. When I get round to it I may modify the program to show the SQL. There is one perl program which does the whole shabang and from a high level design perspective Im not 100% convinced it is the best method. These HOLD tables are just holding data prior to a data transformation that runs.
BTW Im juts the DBA the design of all this is by our perl/oracle developers. I just run the uploads and sort out the problems plus do some perl debugging.
Going back to the LOB storage parameters I will try setting them to CHUNK=8K (our db block size) and PCTVERSION=0 as we never change the data and set PCTFREE=0.
Do you have any suggestions on these parameter settings?
Below is the largest of one of our HOLD tables.
Thanks for any help you can give.
John Barron
ps we have a small bug in the above process of renaming tables. because we explicitly name the PK it travels with the table renames which can be a bit confusing. We intend to go back to system generated ones.
CREATE TABLE CR_HLD_QISI_calls
pkey Integer NOT NULL,
defectcall Integer NULL,
callcalldup INTEGER NULL,
agentcall Integer NULL,
customercall Integer NULL,
workgroupcall INTEGER NULL,
ownercall Integer NULL,
solutioncall Integer NULL,
CALLSTATUS VARCHAR2(20) NOT NULL,
ORIGIN VARCHAR2(20) NULL,
PRIORITY VARCHAR2(20) NULL,
problem VARCHAR2(240) NOT NULL,
action VARCHAR2(240) NULL,
datereported DATE NULL,
dateassigned DATE NULL,
dateowned DATE NULL,
dateresolved DATE NULL,
datemodified DATE NULL,
modifiedby VARCHAR2(20) NULL,
nextcontactdate DATE NULL,
datepending DATE NULL,
WHYPENDING VARCHAR2(30),
problemtext CLOB NULL,
analysistext CLOB NULL,
history CLOB NULL,
rdproductcall INTEGER NULL,
TECHNICAL_IMPACT VARCHAR2(20) NOT NULL,
PSOS_CLASS VARCHAR2(30) NULL,
MX_CLASS VARCHAR2(30) NULL,
target VARCHAR2(80) NULL,
prod_ver VARCHAR2(80) NULL,
comp_ver VARCHAR2(80) NULL,
tools_ver VARCHAR2(80) NULL,
host VARCHAR2(80) NULL,
host_os_ver VARCHAR2(80) NULL,
PRODUCT_LINE VARCHAR2(35) NOT NULL,
external_id VARCHAR2(80) NULL,
esc_status INTEGER NULL,
esc_summary CLOB NULL,
WHYCLOSED VARCHAR2(30) NULL,
board VARCHAR2(80) NULL,
TOOLS VARCHAR2(20) NULL,
datedefectlink DATE NULL,
DATE_EXTRACTED DATE NULL,
DATE_UPLOADED DATE NULL,
SOURCE_DATA_FILE VARCHAR2(50) NULL,
SOURCE_PARTITION VARCHAR2(30) NULL,
XFORM_PROCESSED_FLAG VARCHAR2(10) NULL,
Changed_Flag Varchar2(10) NULL,
CONSTRAINT CR_HLD_QISI_calls_PK
PRIMARY KEY (pkey)
USING INDEX
TABLESPACE &&idxsp
LOB (analysistext) store as (tablespace &&lobsp) LOB (esc_summary) store as (tablespace &&lobsp) LOB (history) store as (tablespace &&lobsp) LOB (problemtext) store as (tablespace &&lobsp)storage(initial 128m next 128m pctincrease 0) PCTFREE 0 ; At 09:56 AM 6/28/00 -0800, you wrote:
------=_NextPart_000_0029_01BFE272.9FCD1530 Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META content=3D"text/html; charset=3Dwindows-1252" =http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2919.6307" name=3DGENERATOR></HEAD> <BODY> <DIV><FONT color=3D#0000ff face=3DArial size=3D2><SPAN=20class=3D222345215-30062000>John,</SPAN></FONT></DIV> <DIV><FONT color=3D#0000ff face=3DArial size=3D2><SPAN=20 class=3D222345215-30062000></SPAN></FONT> </DIV> <DIV><FONT color=3D#0000ff face=3DArial size=3D2><SPAN = class=3D222345215-30062000>Hmmm,=20
convinced it is the best method. These HOLD tables are just holding =
data prior=20
to a data transformation that runs.<BR><BR>BTW Im juts the DBA the =
design of=20
all this is by our perl/oracle developers. I just run the uploads and =
sort out=20
the problems plus do some perl debugging.<BR><BR>Going back to the LOB =
storage=20
parameters I will try setting them to CHUNK=3D8K (our db block size) =
and=20
PCTVERSION=3D0 as we never change the data and set =
PCTFREE=3D0.<BR><BR>Do you have=20
any suggestions on these parameter settings?<BR><BR>Below is the =
largest of=20
one of our HOLD tables.<BR><BR>Thanks for any help you can =
give.<BR><BR>John=20
Barron<BR><BR>ps we have a small bug in the above process of renaming =
tables.=20
because we explicitly name the PK it travels with the table renames =
which can=20
be a bit confusing. We intend to go back to system generated ones.=20
<BR><BR><BR><FONT face=3Dr_ansi>CREATE TABLE CR_HLD_QISI_calls (=20
<BR> =20
=
pkey &nb=
sp; =20
Integer NOT NULL, <BR> =20
defectcall =
Integer=20
NULL, <BR> =20
callcalldup =
INTEGER=20
NULL, <BR> =20
=
agentcall &nbs=
p;=20
Integer NULL, <BR> =20
customercall Integer =
NULL,=20
<BR> =20
workgroupcall INTEGER NULL,=20
<BR> =20
=
ownercall &nbs=
p;=20
Integer NULL, <BR> =20
solutioncall Integer =
NULL,=20
<BR> =20
CALLSTATUS =
VARCHAR2(20) NOT NULL, <BR> =20
=
ORIGIN &=
nbsp; =20
VARCHAR2(20) NULL, <BR> =20
=
PRIORITY  =
; =20
VARCHAR2(20) NULL, <BR> =20
=
problem =
=20
VARCHAR2(240) NOT NULL, <BR> =20
=
action &=
nbsp; =20
VARCHAR2(240) NULL, <BR> =20
datereported DATE =
NULL,=20
<BR> =20
dateassigned DATE =
NULL,=20
<BR> =20
=
dateowned &nbs=
p;=20
DATE NULL, <BR> =20
dateresolved DATE =
NULL,=20
<BR> =20
datemodified DATE =
NULL,=20
<BR> =20
modifiedby =
VARCHAR2(20) NULL, <BR> =20
nextcontactdate DATE NULL,=20
<BR> =20
datepending DATE =
NULL,=20
<BR> =20
WHYPENDING =
VARCHAR2(30),<BR> =20
problemtext CLOB =
NULL,=20
<BR> =20
analysistext CLOB =
NULL,=20
<BR> =20
=
history =
=20
CLOB NULL, <BR> =20
rdproductcall INTEGER NULL,=20
<BR> =20 TECHNICAL_IMPACT VARCHAR2(20) NOT NULL,=20 <BR> =20 PSOS_CLASS =
VARCHAR2(30) NULL, <BR> =20
=
MX_CLASS  =
; =20
VARCHAR2(30) NULL, <BR> =20
=
target &=
nbsp; =20
VARCHAR2(80) NULL, <BR> =20
=
prod_ver  =
; =20
VARCHAR2(80) NULL, <BR> =20
=
comp_ver  =
; =20
VARCHAR2(80) NULL, <BR> =20
=
tools_ver &nbs=
p;=20
VARCHAR2(80) NULL, <BR> =20
=
host &nb=
sp; =20
VARCHAR2(80) NULL, <BR> =20
host_os_ver =
VARCHAR2(80)=20
NULL, <BR> =20
PRODUCT_LINE =
VARCHAR2(35) NOT=20
NULL, <BR> =20
external_id =
VARCHAR2(80)=20
NULL, <BR> =20
esc_status =
INTEGER=20
NULL, <BR> =20
esc_summary CLOB =
NULL,=20
<BR> =20
=
WHYCLOSED &nbs=
p;=20
VARCHAR2(30) NULL, <BR> =20
=
board &n=
bsp; =20
VARCHAR2(80) NULL, <BR> =20
=
TOOLS &n=
bsp; =20
VARCHAR2(20) NULL, <BR> =20
datedefectlink DATE NULL,=20
<BR> =20
DATE_EXTRACTED DATE NULL,=20
<BR> =20
DATE_UPLOADED DATE NULL,=20
<BR> =20 SOURCE_DATA_FILE VARCHAR2(50) NULL,=20 <BR> =20 SOURCE_PARTITION VARCHAR2(30) NULL,=20 <BR> XFORM_PROCESSED_FLAG =VARCHAR2(10)=20
tables<BR>>------------------------------------------------------<BR>&=gt;alter=20
CRTS.CR_HLD_QISI_CALLS move tablespace CRTS_QISI_DATA<BR>>lob =
(ESC_SUMMARY)=20
store as (tablespace CRTS_QISI_LOB<BR>>storage(minextents=20
1));<BR>><BR>><BR>><BR>><BR>>The BEFORE and AFTER space =
=
output<BR>>-------------------------------------------------<BR>>Or=acle8i=20
Production<BR>><BR>><BR>>Table &nbs= p; =20 CLOB Col<BR>>CR_HLD_QISI_CALLS =20=
altered.<BR>><BR>><BR>><BR>><BR>>Table=20 altered.<BR>><BR>><BR>><BR>><BR>>Table=20 altered.<BR>><BR>><BR>><BR>><BR>>Tablespace=20 altered.<BR>><BR>><BR>><BR>><BR>>Table=20 altered.<BR>><BR>><BR>>CR_HLD_QISI_CALLS =20=
![]() |
![]() |