Suponiendo que ya haya verificado las cosas básicas de la red, como interfaces, firewalls, proxies, así como también los elementos de hardware del servidor DB.
Opción 1:
En lugar de:
Class.forName("oracle.jdbc.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@//xxx.xxx.xxx.xxx:1521/orcl", "user", "pass");
intenta usar :
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");
Más detalles aquí
Opción 2:Fetchsize
Como señaló fuertemente Stephen, el fetchsize parece demasiado grande.
Y, para un tamaño de búsqueda de 500 000, ¿cuál es su -Xms y -Xmx? Además, en Profiler, ¿cuál es el tamaño de almacenamiento dinámico más alto?
Opción 3:base de datos
-
Verifique los índices y el plan de consulta para
src_schema.big_table_view
-
¿Es esta una herramienta o un sistema de aplicación? Si solo es una herramienta, podría agregar grados paralelos, sugerencias de índice, particiones, etc. en función de las capacidades de los sistemas de base de datos
Opción 4:Temas
Di
Puede iniciar
Dicho esto, todo esto nunca debería ser un código predefinido como ahora.
Opción 5:
En lugar de
Podrías usar
Esto evita crear 500000
Opción 6:
Mientras tanto, también puede verificar con su DBA cualquier problema del sistema de base de datos y generar una SR con Soporte de Oracle
.n
n
Subprocesos de escritor, cada uno configurado para procesar un determinado depósito, p. thread1 procesa de 0 a 10000, escribiendo en n
diferentes archivos, y una vez que todos los anuncios estén listos, publíquelos, fusione los archivos, preferiblemente usando un comando de sistema operativo de bajo nivel.'n'
y los cubos deben calcularse en tiempo de ejecución. Y crear una cantidad de subprocesos superior a la que admite su sistema solo arruina.select * from src_schema.big_table_view
SELECT column1||CHR(9)||column2||CHR(9).....||columnN FROM src_schema.big_table_view
StringBuilders
y Strings
. (Suponiendo que no haya ningún otro formato complejo involucrado). CHR(9) es el carácter de tabulación.