|
|
|
Подмена плана
|
|||
|---|---|---|---|
|
#18+
Вырисовалась проблемка подменой плана. SQL profiles использовать нельзя - нет лицензии. Oracle SPM (baseline) - не работает, ибо Oracle SE. Oracle SQL patch не работает, ибо строка хинтов больше 500 символов. OUTLINES не получается использовать ибо непонятно как связать имеющийся правильный курсор с нужным плохим запросом. Запрос изменить нельзя. Что делать? И главное как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2017, 09:33 |
|
||
|
Подмена плана
|
|||
|---|---|---|---|
|
#18+
подменаВырисовалась проблемка подменой плана. SQL profiles использовать нельзя - нет лицензии. Oracle SPM (baseline) - не работает, ибо Oracle SE. Oracle SQL patch не работает, ибо строка хинтов больше 500 символов. OUTLINES не получается использовать ибо непонятно как связать имеющийся правильный курсор с нужным плохим запросом. Запрос изменить нельзя. Что делать? И главное как. По sql patch https://iusoltsev.wordpress.com/2015/02/22/sql-patch-notes/ посмотри комментарии По outlines - это именно то, для чего outlines были предназначены, "учиться, учиться и еще раз учиться". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2017, 09:55 |
|
||
|
Подмена плана
|
|||
|---|---|---|---|
|
#18+
Nobody1111подменаВырисовалась проблемка подменой плана. SQL profiles использовать нельзя - нет лицензии. Oracle SPM (baseline) - не работает, ибо Oracle SE. Oracle SQL patch не работает, ибо строка хинтов больше 500 символов. OUTLINES не получается использовать ибо непонятно как связать имеющийся правильный курсор с нужным плохим запросом. Запрос изменить нельзя. Что делать? И главное как. По sql patch https://iusoltsev.wordpress.com/2015/02/22/sql-patch-notes/ посмотри комментарии По outlines - это именно то, для чего outlines были предназначены, "учиться, учиться и еще раз учиться". Жаль, что люди не умеют читать - в комментариях идёт речь про SQL profile. "С помощью указанной DBMS_SQLTUNE_INTERNAL.I_CREATE_SQL_PROFILE можно делать большие патчи". Я написал, что SQL profie я не могу использовать. Про outlines - не понял, что ты хотел сказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2017, 10:03 |
|
||
|
Подмена плана
|
|||
|---|---|---|---|
|
#18+
подменаЖаль, что люди не умеют читать - в комментариях идёт речь про SQL profile. "С помощью указанной DBMS_SQLTUNE_INTERNAL.I_CREATE_SQL_PROFILE можно делать большие патчи". Я написал, что SQL profie я не могу использовать. SQL Profile в SE вообще как класс не может использоваться, только с EE, а не по причине отсутствия лицензии на опцию. У Ильи Деева тоже SE, и он, тем не менее, планировал, судя по комменту, что-то на основе этого использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2017, 10:57 |
|
||
|
Подмена плана
|
|||
|---|---|---|---|
|
#18+
Nobody1111подменаЖаль, что люди не умеют читать - в комментариях идёт речь про SQL profile. "С помощью указанной DBMS_SQLTUNE_INTERNAL.I_CREATE_SQL_PROFILE можно делать большие патчи". Я написал, что SQL profie я не могу использовать. SQL Profile в SE вообще как класс не может использоваться, только с EE, а не по причине отсутствия лицензии на опцию. У Ильи Деева тоже SE, и он, тем не менее, планировал, судя по комменту, что-то на основе этого использовать. Хватит уже просто что-то писать. Ещё раз объясняю, мы не имеем права использовать SQL profile. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2017, 11:15 |
|
||
|
Подмена плана
|
|||
|---|---|---|---|
|
#18+
подмена, SQL patches основаны на тех же profiles и отличаются лишь типом(PATCH) и отсутствием force_match: Код: plsql 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. Так можете его использовать для наборов хинтов(аутлайнов): тестовый код Код: plsql 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. 37. 38. 39. результат Код: plsql 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. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2017, 11:59 |
|
||
|
Подмена плана
|
|||
|---|---|---|---|
|
#18+
подменастрока хинтов больше 500 символов.кстати у профилей есть похожая проблема: Код: plsql 1. 2. 3. поэтому при клонировании/закреплении аутлайнов где какая-нибудь строка длиной больше 500, ее надо разбивать. Я это делал по последнему пробелу в очередных 500 символах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2017, 12:05 |
|
||
|
Подмена плана
|
|||
|---|---|---|---|
|
#18+
xtender, Зачем, там же есть overloaded версия с аргументом типа clob без всяких ограничений Regards Maxim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2017, 16:17 |
|
||
|
Подмена плана
|
|||
|---|---|---|---|
|
#18+
Maxim Demenko, overloaded версия чего? dbms_sqldiag_internal.i_create_patch - не имеет overloaded версий dbms_sqltune_internal.i_create_sql_profile - имеет две версии, но в обоих "PROFILE_XML IN CLOB" dbms_sqltune.import_sql_profile - имеет две версии: одна из них - sys.sqlprof_attr, а вторая - "profile_xml IN CLOB" profile_xml - нужен тут в виде именно xml, а не чистых хинтов из аутлайна. При копировании или фиксации существующего плана их, конечно, можно получать из v$sql_plan.other_xml, но во-первых, не всегда оно заполняется, а во-вторых, достаточно геморройно. А если свои хинты писать, то все равно надо генерировать XML, а тут либо самому, либо пользоваться DBMS_SMB_INTERNAL.VARR_TO_HINTS_XML, который принимает на вход все те же sys.sqlprof_attr ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2017, 16:42 |
|
||
|
Подмена плана
|
|||
|---|---|---|---|
|
#18+
Я имел в виду именно dbms_sqltune.import_sql_profile У нас они берутся именно из other_xml - кстати, в каких случаях это поле не заполняется -я пока с таким не сталкивался? Та которая берет sqlprov_attr всеравно клеит хинты в хмл, так что особого смысла в ней я не вижу, если можно сразу хмл с хинтами из плана взять. Regards Maxim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2017, 16:56 |
|
||
|
Подмена плана
|
|||
|---|---|---|---|
|
#18+
Maxim Demenko, Не анализировал, но встречал, что other_xml вообще был null. Можете на своих базах посчитать сколько с null где ID =1. А насчёт геморройности, так выковыривать outline_data было проблемой - для 10 приходилось одни запросы использовать для 11 - другие, и вообще даже на 12 xmltable до сих пор иногда ошибки выдаёт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2017, 17:07 |
|
||
|
Подмена плана
|
|||
|---|---|---|---|
|
#18+
Maxim Demenko, Я даже до сих пор помню, что в 11.2 ещё в этом поле был невалидный xml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2017, 17:09 |
|
||
|
Подмена плана
|
|||
|---|---|---|---|
|
#18+
DBA http://www.praetoriate.com/t_oracle_sql_stability_14_replace_non_hinted_outlines.htm Вот этот метод я использовал до 10g. Я что-то не помню, чтобы я его на MOS (металинке тогда) находил, там было: How to Edit a Stored Outline to Use the Plan from Another Stored Outline (Doc ID 730062.1) Хотя сейчас есть свежий документ: How to Switch Originial Query Outlines with Modified Query Outlines (Doc ID 2254235.1) Этот метод с прямым update ol$hints кто видел во времена 9i на metalink.oracle.com? Предположу, что могло не быть, т.к. опасались, что люди будут ol$hints криво править, с private outline выглядит как более безопасный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2017, 05:00 |
|
||
|
Подмена плана
|
|||
|---|---|---|---|
|
#18+
Maxim Demenkoxtender, Зачем, там же есть overloaded версия с аргументом типа clob без всяких ограничений Regards Maxim Maxim Demenko, Появилось в 12.2 (может и в 12.1, не проверял) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2017, 23:25 |
|
||
|
Подмена плана
|
|||
|---|---|---|---|
|
#18+
orac_list, прикольно, действительно с 12.2 - на 12.1 еще не было. Но основной минус так и не исправили: через прямой вызов SYS.DBMS_SQLTUNE_INTERNAL.I_CREATE_SQL_PROFILE( TYPE => 'PATCH', IS_PATCH => TRUE можно добавить force_match=>true, а в I_CREATE_PATCH так и нет этого параметра... однако какая там унутрях жесть... Код: plsql 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. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. хинты будут "битыми" при таком подходе :( Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2017, 02:58 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39441384&tid=1886056]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 507ms |

| 0 / 0 |
