Добрый день!
используются следующая схема: БД на Oracle 10 на Solaris x86 (типа агрегатор), она имеет связь через dblink с другими БД (Oracle 10 на Solaris SPARC), архитектура которых абсолютно идентична.
Программы, написанные на java, крутятся на сервере Solaris x86 и все запросы до других БД идут через dblink'и БД-агрегатора.
запросы несложные, нигде не связываются таблицы/НД с разных ДБ.
Вдруг, почему-то перестало работать несколько запросов вида:
select t1.col1, t2.col1
from table1@db_1 t1
inner join table2@db_1 t2 on (t1.id = t2.id) where t2.col3 = 1
order by ...;
что значит не работает: запрос должен вернуть около 70000 записей, но происходит следующее:
ResultSet благополучно открывается, записи в цикле начинают забираться и сохраняться в массив, но после записи № 49470 метод rset.next() виснет. Может провисеть хоть 12 часов без генерации исключений и пр.
пример java кода:
rset = stmt.executeQuery(query);
System.out.println("Забрал");
progBar=0;
while (rset.next()){
progBar++;
if (progBar == 49468) {
System.out.print("+"); //для дебага
}
/*операции обработки записи и сохранения в массив*/
}
System.out.println("\n");
System.out.println("Положил в массив " + arr.size());
System.out.print("Закрываю ResultSet... ");
rset.close();
System.out.print(" Закрыл...\n");
при этом на сервере db_1 в логе sqlnet.log пишется:
Tracing not turned on.
Tns error struct:
ns main err code: 12535
TNS-12535: TNS:operation timed out
ns secondary err code: 12560
nt main err code: 505
TNS-00505: Operation timed out
nt secondary err code: 145
nt OS err code: 0
Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=W.X.Y.Z)(PORT=54606))
непонятно почему, недавно еще все работало (как всегда)...
подозрение пало на dblink'и, т.к. переделанная программа, в которой jdbc соединение устанавливается напрямую c db_1, отрабатывает корректно. хотя запрос с использованием dblink в sqlplus также возвращает полный набор записей...
есть ли мнение, куда копать, что смотреть, чтобы выяснить и устранить причину этого странного поведения?
Буду благодарен за любую помощь по теме!