|
|
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
Привет всем! PB 9.0.1 Build 6533, Oracle 9.2.0.6 Использую в своем PB-приложении оракловый пакет DBMS_APPLICATION_INFO для указания, какая времяемкая операция выполняется в БД в данный момент: action1 = "Расчет оборотки" as_sql = begin DBMS_APPLICATION_INFO.SET_ACTION('" + action1 + "'); end;" execute immediate :as_sql; Все работает, но DBA наезжает: так нехорошо, потому что без использования Bind Variable для указания операции в Shared Pool Area Oracle хранится куча одинаковых текстов begin DBMS_APPLICATION_INFO.SET_ACTION... Переделал вызов на динамический SQL format 2: PREPARE SQLSA FROM "begin DBMS_APPLICATION_INFO.SET_ACTION(?); end;"; EXECUTE SQLSA USING :action1; Опять все работает, но PB передает ораклу по-прежнему SQL Statement без Bind Variable?! Помогите, плз! Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2005, 15:15 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
Попробуй DbParm=DisableBind=1 в коннекте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2005, 15:25 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
2 AIZ: Уже пробовал - не помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2005, 15:36 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
Так может проще написать функцию БД и вызывать ее передавая соответствующий параметр? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 08:49 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
AIZПопробуй DbParm=DisableBind=1 в коннекте Не путайте Божий дар с яичницей, вот: RTFMDescription For those DBMSs that support bind variables, PowerBuilder binds input parameters to a compiled SQL statement by default. The DisableBind parameter allows you to specify whether you want to disable this default binding. When you set DisableBind to 1 to disable the binding, PowerBuilder replaces the input variable with the value entered by the application user or specified in a PowerBuilder script. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 11:05 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
MikeVВсе работает, но DBA наезжает: так нехорошо, потому что без использования Bind Variable для указания операции в Shared Pool Area Oracle хранится куча одинаковых текстов begin BMS_APPLICATION_INFO.SET_ACTION... ...Как это ни прискорбно, но, по большому счету, DBA прав... Почему вы не хотите использовать RPC-вызов? Код: plaintext 1. строка trans_object.DBParm не должна запрещать использование bind-переменных, т.е. DisableBind=0 (по умолчанию) Код: plaintext 1. 2. Честно говоря, не проверял, т.к. эти проблемы решаются простым наращиванием железа, а разрабатывать мне удобнее именно с DisableBind :-), но думаю, что это может помочь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 11:59 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
2 PL99 Как это ни прискорбно, но, по большому счету, DBA прав Почему прискорбно? Различающиеся запросы лишают смысл применение library cache, который как раз и создан для повторного выполнения запросов Честно говоря, не проверял, т.к. эти проблемы решаются простым наращиванием железа, а разрабатывать мне удобнее именно с DisableBind :-), но думаю, что это может помочь... Во-первых, наращивание железа - не всегда простой и доступный путь. Во-вторых, согласно концепции Oracle, оптимизация приложений (к которому относится и использование bind var) - это то, что дает макс. выигрыш в производительности и с чего следует начинать любую оптимизацию при неудовлетворительных скоростных характеристиках PS В Oracle есть еще параметр CURSOR_SHARING, который может отчасти решить проблему, но использование bind - верный путь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 12:46 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
tru552 PL99 Как это ни прискорбно, но, по большому счету, DBA прав Почему прискорбно?Это плохо прикрытый наезд на DBA :-) tru55 Честно говоря, не проверял, т.к. эти проблемы решаются простым наращиванием железа, а разрабатывать мне удобнее именно с DisableBind :-), но думаю, что это может помочь... Во-первых, наращивание железа - не всегда простой и доступный путь. Наверное, это в самом деле так... Но, до сих пор, в моей практике, стоимость оптимизации (читай стоимость времени разработчиков) всегда была в разы выше стоимости апгрейда... tru55Во-вторых, согласно концепции Oracle, оптимизация приложений (к которому относится и использование bind var) - это то, что дает макс. выигрыш в производительности и с чего следует начинать любую оптимизацию при неудовлетворительных скоростных характеристикахТоже согласен - начинать надо с оптимизации приложения. А вот оптимизацию приложения надо начинать с проектирования правильной структуры данных... Все остальные способы оптимизации вряд ли влияют более чем на 10-15% общей производительности Все IMHO, разумеется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 17:24 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
Это плохо прикрытый наезд на DBA Зачем же так с DBA (как я есть "в одном флаконе") Наверное, это в самом деле так... Но, до сих пор, в моей практике, стоимость оптимизации (читай стоимость времени разработчиков) всегда была в разы выше стоимости апгрейда... 1. Зависит от мощности сервера (чем выше мощность, тем дороже) 2. Дык разработчики часто свои, им и так зарплату платят, а деньги на железо надо еще выбить Тоже согласен - начинать надо с оптимизации приложения. А вот оптимизацию приложения надо начинать с проектирования правильной структуры данных... Все остальные способы оптимизации вряд ли влияют более чем на 10-15% общей производительности Структура данных, безусловно, влияет (правда, проценты никогда не считал). Но есть и другие немаловажные факторы, например, оптимизация запросов и др... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 18:42 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
offtop tru55 Это плохо прикрытый наезд на DBA Зачем же так с DBA (как я есть "в одном флаконе") Больше не буду :-) tru55 Наверное, это в самом деле так... Но, до сих пор, в моей практике, стоимость оптимизации (читай стоимость времени разработчиков) всегда была в разы выше стоимости апгрейда... 1. Зависит от мощности сервера (чем выше мощность, тем дороже) 2. Дык разработчики часто свои, им и так зарплату платят, а деньги на железо надо еще выбить Давайте возьмем российский сервер. Самый дорогой из тех, на которые указана цена, стоит 10532$ - т.е. 1.5 - 2 человеко-месяца по весьма скромным для Москвы расценкам... Если проект небольшой, скажем, 1 человеко-год, то цена сервера сопоставима с ценой разработки, но для такого проекта/предприятия и сервер, скорее всего, подойдет попроще... tru55 Тоже согласен - начинать надо с оптимизации приложения. А вот оптимизацию приложения надо начинать с проектирования правильной структуры данных... Все остальные способы оптимизации вряд ли влияют более чем на 10-15% общей производительности Структура данных, безусловно, влияет (правда, проценты никогда не считал). Но есть и другие немаловажные факторы, например, оптимизация запросов и др...Если приложение грамотно спроектировано, то для того, чтобы написать неоптимальный запрос, придется потрудиться... endoff ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 19:53 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
2 PL99: Спасибо! RPC-вызов - то, что надо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2005, 14:33 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
В продолжение темы :) Неприятно удивил метод dw_1.ReselectRow(row) Он, редиска, формирует фразу WHERE без всяких Bind Variables: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Помогите, плз! Может, кто-то подскажет, как с этим сбороться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2005, 15:40 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
Нашел-таки ответ на свой последний вопрос: вместо ReselectRow(row) пишем execute immediate 'alter session set cursor_sharing=force'; ReselectRow(row) execute immediate 'alter session set cursor_sharing=exact'; Между прочим, этой нехитрой штукой мы сэкономили 164 Mb в shared_pool ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2005, 10:41 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
Sorry, I do not have Russian keyboard at work, but I really need help. I have to run followed code within UserObject that I created. I have unknown amount of retrieval arguments. That is why I need Use Describe SQLSA Into SQLDA; Any suggestions would be highly appreciated. I am stuck. Thank you Here is the code that I ran: ls_sql = "select distinct multiplier from multiplier where contract_nmbr = ?" SQLCA.dbParm = "DisableBind = 1" Prepare SQLSA From :ls_sql using sqlca; Describe SQLSA Into SQLDA; If SQLCA.SQLCode <> 0 then MessageBox("Describe failed", SQLCA.SQLErrText) /////ERROR APPEAR HERE as followed /////////////////////////////////////////////////////// below code did not run return "" end if Declare my_cur Dynamic CURSOR FOR SQLSA ; …… Thank you ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2005, 01:47 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
pbdeveloperSorry, I do not have Russian keyboard ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2005, 08:22 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
спасибо Попробую перевести B невидiмом обьекте мне нужно запустить следующий коде: ls_sql = "select distinct multiplier from multiplier where contract_nmbr = ?" SQLCA.dbParm = "DisableBind = 1" Prepare SQLSA From :ls_sql using sqlca; т.к мне не известно количество аргументов мне необходимо запустить Describe SQLSA Into SQLDA;: Describe SQLSA Into SQLDA; Здесь появляется ошибка : ORA-01008: not all variables bound что значит DisableBind = 0 мне нужно изменить значенuе в динамическом режиме на DisableBind = 1. Я работаю в PowerBuiler 9.02 build 7610, Oracle 8i. Буду очень признательна за помощь. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2005, 18:45 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
pbdeveloperls_sql = "select distinct multiplier from multiplier where contract_nmbr = ?" Где в этом sql упомянутые "неизвестное количество аргументов" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2005, 19:15 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
Describe SQLSA Into SQLDA; Здесь появляется ошибка : ORA-01008: not all variables bound По идее на этапе Describe еще не требуется binding. Так что скорее всего ошибка возникает открытии курсора через OPEN из-за того что неверно указан список bind-переменных. Надо открывать курсор так: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2005, 19:39 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#18+
Согласно документацуии : Accessing attribute information When a statement is described into a DynamicDescriptionArea, this information is available to you in the attributes of that DynamicDescriptionArea variable: Information Attribute Number of input parameters NumInputs Array of input parameter types InParmType Number of output parameters NumOutputs Array of output parameter types OutParmType NumInputs Я могу витащить только после Describe. Я написала просто пример на самом деле Я не снаю сколько аргументов будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2005, 20:32 |
|
||
|
Bind Variable: PB --> Oracle
|
|||
|---|---|---|---|
|
#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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. PS. Кстати, "DisableBind=X" на dynamic SQL никак не влияет. Этот параметр используется при генерации запросов в DW и embedded SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2005, 23:10 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=32992430&tid=1338443]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 358ms |

| 0 / 0 |
