0
FE80:0000:0000:0000:0202:B3FF:FE1E:8329/120のようなipv6の範囲を処理し、テーブルを使用してください。PL/SQLブロック。サブネットの値が与えられたときにipv6の範囲を効率的に作成する
現在の実装では、アドレスをバイナリに変換して、whileループの最小アドレスと最大アドレスを繰り返してテーブルに挿入しています。
それは小さい範囲については正常に動作しますが、大規模な範囲を処理するための効率的な方法が必要です(フェッチ使用して一括挿入の行に何か)
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;
実際に行っていることを再考する必要があります。範囲の開始と終了を保存するだけで十分であり、すべてのアドレスを保存するよりもパフォーマンスが向上するはずです。 – Peter
はい、私のプロジェクトでは、これらのアドレスに接続して情報を処理する必要があるため、範囲内のすべてのアドレスをテーブルに保存することが不可欠です –