|
|
|
Вопрос по команде dbms_sql.parse
|
|||
|---|---|---|---|
|
#18+
У меня есть несколько запросов которые я по очереди вызываю в динамической сессии. Если тот же запрос я отдам на компиляцию второй раз будет ли он компилится так же как и в первый раз или он разберется и не станет этого делать. И вообще как сделать эту фичу чтобы таскать на выбор одним из нескольких запросов. Типы колонок совпадают. Поэтому жалко тратить время на парсинг и привязку выходных переменных. Как нибудь можно один раз отпарсить каждый запрос и потом только выполнять их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2003, 13:32 |
|
||
|
Вопрос по команде dbms_sql.parse
|
|||
|---|---|---|---|
|
#18+
А оракл сам так и делает. Иначе нет смысла в наличии library cache. При первом попадании текста запроса на сервер происходит hard parse с полным разбором, проверкой прав и построением дерева выполнения. При последующих попаданиях того же текста (в 9 еще и похожего текста) происходит soft parse, то есть проверка доступа и все, дальше запрос сразу выполняется по существующему плану. Бывает ситуации, когда план инвалидируется (изменились определения объектов) или просто выбрасывается (не хватает места в пуле). Тогда при появлении использованного уже запроса вновь происходит построение дерева выполнения. Ораклу все равно, используете вы динамический sql или нет. Этот вопрос очень странно услышать от сертифицированного оракловского администратора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2003, 13:49 |
|
||
|
Вопрос по команде dbms_sql.parse
|
|||
|---|---|---|---|
|
#18+
А вот неправда ваша. Сколько не запускай коменду dbms_sql.parse dbms_sql.parse она всегда выполняется примерно одно и тоже немаленькое время, даже запускать их подряд Есть же возможность принудительно перекомпилировать объект, вероятно она так и поступает и плевать ей на libruary_cache Вот отсюда и вопрос нужно ли открывать N динамических сессий или можно поколдовать и высасывать всё через одну. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2003, 13:57 |
|
||
|
Вопрос по команде dbms_sql.parse
|
|||
|---|---|---|---|
|
#18+
Проверьте одинаковость текста запросов. Если он разный - используйте стандартную рекомендацию оракла использовать bind-переменные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2003, 14:08 |
|
||
|
Вопрос по команде dbms_sql.parse
|
|||
|---|---|---|---|
|
#18+
Вы что издеваетесь. У меня запрос в переменной. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2003, 14:15 |
|
||
|
Вопрос по команде dbms_sql.parse
|
|||
|---|---|---|---|
|
#18+
А использовать для разных запросов BIND_VARIABLE я не могу там меняются ИМЕНА полей. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2003, 14:17 |
|
||
|
Вопрос по команде dbms_sql.parse
|
|||
|---|---|---|---|
|
#18+
Посмотрел в доке по dbms_sql.parse - явно конечно не сказано, но судя по приведенным там схемам обработки dbms_sql.parse парсит всегда заново. Твой пример это подтверждает. Вот при EXECUTE IMMEDIATE не должно по идее парсить повторно. Надо бы проверить, интересно будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2003, 15:54 |
|
||
|
Вопрос по команде dbms_sql.parse
|
|||
|---|---|---|---|
|
#18+
Странно, как вы проверяли Конечно soft parse, как и сказал Al. При EXECUTE IMMEDIATE будет тоже самое. На сколько я понимаю dbms_sql нужен для того чтобы не делать soft parse. cid:=dbms_sql.open_cursor; wNUM2:=10000; for wNUM in 1..10000 loop vv_sql:= 'select field1 from test where field1='||wNUM2; dbms_sql.parse(cid, vv_sql,dbms_sql.native); end loop; ret:=dbms_sql.execute(cid); dbms_sql.close_cursor(cid); cid:=dbms_sql.open_cursor; wNUM2:=10000; for wNUM in 1..10000 loop vv_sql:= 'select field1 from test where field1='||wNUM; dbms_sql.parse(cid, vv_sql,dbms_sql.native); end loop; ret:=dbms_sql.execute(cid); dbms_sql.close_cursor(cid); PL/SQL procedure successfully completed. Elapsed: 00:00:03.25 PL/SQL procedure successfully completed. Elapsed: 00:00:14.00 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2003, 18:46 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32155148&tid=1990674]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
169ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 501ms |

| 0 / 0 |
