Ich muss einen ipv6-Bereich wie FE80: 0000: 0000: 0000: 0202: B3FF: FE1E: 8329/120 verarbeiten und die Adressen im Bereich in a speichern Tabelle mit PL/SQL Block.Effiziente Methode zum Erstellen eines ipv6-Bereichs, wenn ein Subnetz-Wert angegeben wird
In meiner aktuellen Implementierung konvertiere ich die Adresse in binäre, Iteration zwischen Minimum und Maximum Adressen in einer While-Schleife und Einfügen von ihnen in einer Tabelle.
Es funktioniert für kleinere Bereiche in Ordnung, aber eine effiziente Art und Weise müssen große Bereiche (etwas auf den Linien von Masseneinfügung mit Abruf) zu handhaben
while ipv6_counter_iterator <= ipv6_counter_max
loop
ipv6_value_intermediate := nvl(lpad(dec2bin(ipv6_counter_iterator),
ipv6_counter,
'0'),
'');
ipv6_binary_value := substr(ipv6_addr, 1, ipv6_range) ||
ipv6_value_intermediate;
ipv6_address_value := Binary_to_ipv6(ipv6_binary_value);
ipv6_counter_iterator := ipv6_counter_iterator + 1;
insert into sdb_ip_range_values
(ip_address, session_id)
values
(ipv6_address_value, session);
end loop;
END IF;
Sie sollten wirklich darüber nachdenken, was Sie tun. Das Speichern von Anfang und Ende des Bereichs sollte ausreichen und Ihnen wahrscheinlich eine bessere Leistung als das Speichern aller Adressen geben. – Peter
Ja, aber in meinem Projekt muss ich mich mit dieser Adresse verbinden und einige Informationen verarbeiten, deshalb ist es für mich wichtig, alle Adressen im Bereich in einer Tabelle zu speichern –