sql >> Database >  >> RDS >> Oracle

Heeft Oracle 12 problemen met lokale verzamelingstypen in SQL?

Bij verdere experimenten kwamen we erachter dat de problemen nog dieper zijn dan werd aangenomen.

Bijvoorbeeld verschillende elementen die worden gebruikt in het pakket buggy_report we kunnen een ORA-03113: end-of-file on communication channel . krijgen bij het uitvoeren van het script (in de vraag). Het kan worden gedaan door het type t_id_table te veranderen naar VARRAY of TABLE .. INDEX BY .. . Er zijn veel manieren en variaties die ons naar verschillende uitzonderingen leiden, die buiten het onderwerp van dit bericht vallen.

Wat nog interessanter is, is de compilatietijd van buggy_report pakketspecificatie kan tot 25 seconden duren, terwijl dit normaal ongeveer 0,05 seconden duurt. Ik kan zeker zeggen dat het afhangt van de aanwezigheid van TYPE t_id_table parameter in de pipe_table functiedeclaratie en "langdurige compilatie" komen voor in 40% van de installatiegevallen. Het lijkt er dus op dat het probleem met local collection types in SQL latent verschijnen tijdens de compilatie.

We zien dus dat Oracle 12.1.0.2 duidelijk een bug heeft bij het realiseren van het gebruik van lokale verzamelingstypes in SQL.

De minimale voorbeelden om ORA-22163 . te krijgen en ORA-03113 zijn aan het volgen. Daar gaan we uit van hetzelfde buggy_report pakket zoals in de vraag.

-- produces 'ORA-03113: end-of-file on communication channel'
DECLARE   
  l_cur buggy_report.t_info_cur;

  FUNCTION get_it RETURN buggy_report.t_info_cur IS BEGIN RETURN buggy_report.get_cursor(); END;    
BEGIN
   l_cur := get_it();

   dbms_output.put_line('');
END;
/

-- produces 'ORA-22163: left hand and right hand side collections are not of same type'
DECLARE  
  l_cur buggy_report.t_info_cur;

  PROCEDURE hello IS BEGIN NULL; END;
BEGIN
  l_cur := buggy_report.get_cursor;

  -- comment `hello` and exception disappears
  hello;

  CLOSE l_cur;
END;
/


  1. Als ik verbinding maak met meerdere databases, heb ik dan meerdere SQLAlchemy Metadata-, Base- of Session-objecten nodig?

  2. LOCALTIME-voorbeelden - MySQL

  3. Hoe verschillende records uit een tabel in SQL Server te halen - SQL Server / TSQL-zelfstudie 112

  4. Toegang geweigerd voor MYSQL ERROR 1045