Zusammenfassung
mxlc
erscheint die maximale Anzahl von Zeichen für die Bindevariable zu sein, aber nur, wenn die variable Zeichenlänge Semantik verwendet.
Methode
ich für mxlc
My Oracle Support gesucht. Fast jeder Artikel hat mxlc=00
, die einzigen Ausnahmen beinhalten eine NVARCHAR
oder NCHAR
. Der folgende Code basiert auf dem Code aus Dokument ID 552262.1. Ich änderte die Variablengrößen (99
und 123 char
) um, und jedesmal wurde mxlc
auf die variable Größe gesetzt, wenn Zeichenlänge Semantik verwendet wurde.
-Code
create table t1(ncol1 nvarchar2(100), col1 varchar2(100));
alter session set timed_statistics = true;
alter session set statistics_level=all;
alter session set max_dump_file_size = unlimited;
alter session set events '10046 trace name context forever,level 4';
VAR nvar1 NVARCHAR2(99)
VAR var1 VARCHAR2(123 char)
EXEC :nvar1 := 'nvarchar'
EXEC :var1 := 'varchar'
SELECT * FROM T1 WHERE ncol1 = :nvar1 and col1 = :var1;
ALTER SESSION SET EVENTS '10046 trace name context off';
Ergebnisse:
Bind#0
oacdty=01 mxl=2000(198) mxlc=99 mal=00 scl=00 pre=00
oacflg=03 fl2=1000010 frm=02 csi=2000 siz=4000 off=0
kxsbbbfp=0e702edc bln=2000 avl=16 flg=05
value=0 6e 0 76 0 61 0 72 0 63 0 68 0 61 0 72
Bind#1
oacdty=01 mxl=2000(369) mxlc=123 mal=00 scl=00 pre=00
oacflg=03 fl2=1000010 frm=01 csi=873 siz=0 off=2000
kxsbbbfp=0e7036ac bln=2000 avl=07 flg=01
value="varchar"
Mehr Fragen
die Beziehung zwischen mxl
und mxlc
macht Sinn Normalerweise. Für eine NVARCHAR
, UTF16 auf meinem System, gibt es 2 Bytes pro Zeichen, also 198 und 99. Meine Datenbank ist UTF8, ein Zeichen könnte bis zu 4 Bytes dauern. Vielleicht schätzt Oracle, dass die durchschnittliche Größe 3 Bytes beträgt, also 123 und 369. Offensichtlich könnte es mehr als 369 sein, vielleicht ist das nur der anfänglich zugewiesene Speicher, und er kann später wachsen?
Aber Ihre Zahlen, 36 und 35, ergeben für mich keinen Sinn.Sicherlich die Anzahl der Bytes kann nie weniger als die Anzahl der Zeichen sein? Spricht Oracle schlecht oder schickt ein Clientprogramm schlechte Daten?
haha .. nicht genau das, was ich mir erhofft hatte. Wo hast du diesen Tisch gefunden? – Craig
:) Das ist ein Geheimnis. Es ist von [this] (http://www.amazon.com/Secret-ORACLE-Unleashing-Leveraging-Undocumented/dp/1435705513) Buch. Diese Parameter sind anscheinend nicht dokumentiert. – Annjawn
[Schnipsel] (http://books.google.com/books?id=Go3QBdT-qysC&pg=PA237&lpg=PA237&dq=mxlc+Oracle&source=bl&ots=J4ZRhUvF5s&sig=A9Dkbn6XoNk2PonfkrGKzAYH8u4&hl=en#v=onepage&q=mxlc%20Oracle&f=false) von das Buch. – Annjawn