2013-06-04 2 views
0

Я использую кластер RAC ORACLE setup.ORACLE select отсутствует строка

Моя проблема в том, когда DB получил проблему (до сих пор не знаю причину) мой SQL SELECT не хватает строк

пример:

select * 
from student_detail 
where student_id = 1231 

должен вернуть 10 строк данных студента имеют идентификатор 1231, но в этом случай только возврат 6 строк

может кто-нибудь помочь мне понять эту проблему!

+0

Вы, кажется, определяете, что в базе данных есть проблема, основанная на возврате всех строк, которые вы ожидаете. Если есть какой-то другой симптом, то вы, конечно, должны сказать нам, что это такое. –

+0

Есть ли 'student_detail' вид? У вас включен VPD? –

+0

запрос в порядке. Другие данные хранятся в student_detail, которые вы ожидаете получить. Может быть, вы подключаетесь к неправильному экземпляру db? – BlueConga

ответ

2

Как правило, Oracle SELECT всегда возвращает правильное количество строк в строке. Если набор результатов не соответствует вашему ожиданию, тогда возникает проблема с вашим пониманием.

Например, вы можете ошибочно определить количество строк с student_id = 1231. Если запрос возвращает только шесть строк, как вы знаете, их должно быть десять? Это может быть не так просто, как Eyeballing ...

select * from student_detail 
order by student_id 

... если student_id имеет тип данных VARCHAR2 и некоторые идентификаторы с суффиксом блуждающих пространств. Подобный запрос будет диагностировать эту проблему:

select student_id, count(*) 
from student_detail 
group by student_id 
order by student_id 

Другие возможные причины? Неверный взгляд? Row Level Security ограничивает набор результатов? Некоторая причудливая конфигурация на стороне клиента, которая показывает только первые шесть строк вместо всего набора?

Вы упомянули RAC. RAC использует механизм, называемый Global Cache Service Process, для передачи измененных данных на разные узлы. Возможно, вы испытываете провал в этом процессе. Поговорите со своим администратором баз данных и попросите их расследовать.

0

Возможно, данные должны быть неправильными. , например, если данные user_id равны «1231», это не так, но если данные остаются пробелом , например «1231», вы не можете видеть данные.

'1231', '1231' также не может быть распечатан. Решение, когда вы вставляете некоторые данные, используйте функцию «обрезка» или «замена» ... отделка только удаляет левый промежуток.

Смежные вопросы