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 MigratieIn 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 OndersteuningIn 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 ConversiesImpliciete 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 OndersteuningOndersteuning 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.
OplettenDeze 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.
|
|
|