LOB Verbeteringen In Oracle9i
Een aantal verbeteringen zijn aangemaakt met betrekking tot LOB's waaronder:
  • LOB Migratie
  • SQL enPL/SQL Function Ondersteuning
  • Impliciete LOB Conversies
  • OCI (Oracle Call Interface) Ondersteuning
  • Opletten

LOB Migratie

In Oracle8i kon een LONG column geconverteerd worden naar een LOB met de TO_LOB() functie. Een van de beperkingen daarvan was dat het niet gebruikt kon worden om een column te converteren in een bestaande tabel, alleen tijdens het maken van een nieuwe tabel. In Oracle9i is deze conversie mogelijk met de ALTER TABLE .. MODIFY syntax:
-- Column inhoud is nu een LONG

ALTER TABLE documents MODIFY (content CLOB);

-- Column onhoud is nu een LONG RAW
ALTER TABLE executables MODIFY (content BLOB);
Deze syntax kan alleen gebruikt worden om een conversie te maken van een een LONG en LONG RAW columns.

SQL en PL/SQL Functie Ondersteuning

In Oracle9i kunnen de meeste SQL functies en operatoren die VARCHAR2 parameters accepteren, ook CLOBS accepteren. Dit betekend dat operaties zoals SUBSTR, INSTR en|| allen uitgevoerd kunnen worden zonder te refereren naar de DBMS_LOB package.

Net als bij SQL functies, kunnen alle PL/SQL functies in de STANDARD package CLOBS en BLOBS accepteren waar dit vroeger alleen voor LONGS en RAWS mogelijk was. Deze ondersteuning is uitgebreid naar alle all built-ins.

Impliciete LOB Conversies

Impliciete conversies tussen LONG en CLOB columns en RAW en BLOB columns is nu mogelijk. Dit verbeterrd de flexibiliteit bij programmeren omdat je nu bijvoorbeeld de volgende code kunt gebruiken:
DECLARE
l_clob CLOB;
l_char VARCHAR2(32500);
BEGIN

SELECT content
INTO l_char
FROM documents
WHERE id = 12345;
v_clob := RTRIM(l_char);
END;
/
Deze impliciete conversie komt extra met assignment zodat een VARCHAR2 assigned kan worden aan een CLOB column tijdens een DML INSERT, en procedure parameters, zoals een VARCHAR2 variabele verwerkt kan worden als een parameter aan een procedure, gedefinieerd om een CLOB te accepteren.

OCI Ondersteuning

Ondersteuning voor LOBs het OCI is beter geworden door de 4K restricties op VARCHAR2 buffers die aan LOB columns zijn gebonden, op te hogen. Dit betekend dat nu buffers tot 4GB aan LOB columns kan worden toegekend voor INSERT, UPDATE of SELECT gebruik makend van een combinatie van buffers inclusief LONG, RAW, CLOB, BLOB en VARCHAR2.

Opletten

Deze verbeteringen zijn primair bedoeld om de conversie van LONG en RAW columns naar LOBs te vergemakkelijken. De impliciete conversie betekend dat het grootste deel van de database code correct zou moeten functioneren nadat de columns zijn gemigreerd echte,r het zou verder nagekeken moeten worden om performance te optimaliseren.

Er zijn een aantal restricties waar je op moet letten voordat je alle LONG columns gaat converteren:
  • In tegenstelling tot LONGs, zijn LOBs niet toegestaan in geclusterde tabellen.
  • Bij de migratie van gerepliceerde tabellen moeten de gerepliceerde objecten handmatig gemigreerd worden.
  • LOBs zijn niet toegestaan in de UPDATE OF lijst in update triggers.
  • Impliciete conversies zijn niet toegestaan in INSTEAD OF triggers.
  • Bij de ALTER TABLE .. MODIFY syntax moeten indexen handmatig gerebuilt worden omdat de syntax net als bij een MOVE .
  • Domain indexen op LONG columns moeten voor de conversie naar een LOB gedropped worden.

 

 

Advertentie

>

Poll

Voorkeur
 

Wie is er aanwezig

We hebben 273 gasten online