Ervan uitgaande dat u de basisnetwerkdingen zoals interfaces, firewalls, proxy's en ook de hardware-elementen van de DB-server al hebt gecontroleerd.
Optie 1:
In plaats van:
Class.forName("oracle.jdbc.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@//xxx.xxx.xxx.xxx:1521/orcl", "user", "pass");
probeer :
OracleDataSource ods = new OracleDataSource();
java.util.Properties prop = new java.util.Properties();
prop.setProperty("MinLimit", "2");
prop.setProperty("MaxLimit", "10");
String url = "jdbc:oracle:oci8:@//xxx.xxx.xxx.xxx:1521/orcl";
ods.setURL(url);
ods.setUser("USER");
ods.setPassword("PWD");
ods.setConnectionCachingEnabled(true);
ods.setConnectionCacheProperties (prop);
ods.setConnectionCacheName("ImplicitCache01");
Meer details hier
Optie 2:Ophaalgrootte
Zoals Stephen sterk heeft aangegeven, lijkt de fetchmaat te groot.
En, voor een ophaalgrootte van 500.000, wat is uw -Xms en -Xmx. Ook, in profiler, wat is de hoogste heapgrootte?
Optie 3:DB
-
Controleer indexen en queryplan voor
src_schema.big_table_view
-
Is dit een tool of een applicatiesysteem. Als het maar een hulpmiddel was, zou je parallelle graden, indexhints, partitionering enz. kunnen toevoegen op basis van DB-systeemmogelijkheden
Optie 4:Discussies
Zeg
U kunt
Dat gezegd hebbende, dit alles mag nooit een vooraf gedefinieerde code zijn zoals het nu is.
Optie 5:
In plaats van
Je zou kunnen gebruiken
Dit vermijdt het maken van 500000
Optie 6 :
In de tussentijd kunt u ook contact opnemen met uw DBA voor eventuele problemen met het DB-systeem en een SR melden bij Oracle-ondersteuning
.n
n
. starten Threads van schrijver, elk geconfigureerd om een bepaalde bucket te verwerken, b.v. thread1 verwerkt 0 tot 10000, schrijven naar n
verschillende bestanden, en als alle koppen klaar zijn, voeg je na het samenvoegen de bestanden samen, bij voorkeur met een OS-commando op laag niveau.'n'
en de buckets moeten tijdens runtime worden berekend. En het creëren van meer threads dan wat uw systeem ondersteunt, verpest alleen maar.select * from src_schema.big_table_view
SELECT column1||CHR(9)||column2||CHR(9).....||columnN FROM src_schema.big_table_view
StringBuilders
en Strings
. (Ervan uitgaande dat er geen andere complexe opmaak bij betrokken is). CHR(9) is het tabteken.