| 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=
|  |  |