|
|
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
Всем привет! Как не используя системных таблиц узнать имя партиции, в которой находится строка? Строки я фильтрую по полю с датой, но таблица секционирована по другой колонке. Названия партиций такие: partition NL_1600000 values less than (1600000) partition NL_1700000 values less than (1700000) partition NL_1800000 values less than (1800000) ... partition NL_1600000 values less than (2100000) ... То есть, число в названии увеличивается на 100 000. Названия мне нужны, чтобы в курсоре дергать отдельно эти партиции и джойнить с другой таблицей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2016, 11:17:56 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
israelshamirдергать отдельно эти партицииRTFM partition_extension_clause (FAQ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2016, 11:36:16 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
Elic, ну да, ключ секционирования известен. Но как узнать какие именно партиции дергать? Таблица эта огроменная, я делаю выборку за прошедший месяц из нее, но секционирована она не по этому полю с датами, а по другому столбцу, и шоб не тянуть в курсор весь набор за месяц, я хочу обращаться к отдельным кускам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2016, 11:50:35 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
israelshamir, без системной таблицы, думаю, не получится. Вот способ по rowid или по любому полю из таблицы: Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2016, 12:06:40 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
israelshamirНо как узнать какие именно партиции дергать?Ты не увидел partition for? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2016, 12:27:28 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
Elic, По всей видимости пациент знает значение столбца, который не есть ключ секционирование и не понимает, что потенциально ему может быть необходимо прочитать все секции, если между этим столбцом и ключом нет функциональной зависимости. Строки я фильтрую по полю с датой, но таблица секционирована по другой колонке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2016, 12:34:32 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
pihel, большое спасибо за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2016, 10:24:41 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
israelshamir, Я смотрю вы нашли друг друга. Ну как, удалось избежать сканирования всех секций? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2016, 10:41:44 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, Короче, ситуация такая, что я стажер и меня не ввели в предметную область. Есть специальная таблица с датами и диапазонами значений. Я по ней вычисляю количество секций за месяц и генерю их названия(их там 146). Теперь вылез гемор с вложенными курсорами, ибо мне надо в циклах бежать по отдельным партициям + еще по одной таблице, в которой надо искать нужные строки и вставлять их в темповую таблицу. Цимес задачи в том, чтобы отточить навык говнокодинга на pl\sql. В общем, я не знаю, как правильно написать вложенные курсоры. Вот что пока имею( я тут позаменял названия таблиц и схем): Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2016, 11:40:30 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
israelshamir, та таблица(огромная, за день не обсерешь), из которой мне нужны отдельные партиции находится в другой базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2016, 11:54:09 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
israelshamirКороче, ситуация такая, что я стажер и меня не ввели в предметную область.Так попроси чтоб тебя ввели. Если ты делаешь какой-то говнокод без попыток понять данные ты гарантированно завалишь задачу. Вместо того, чтоб вываливать полотно на форум с просьбой сделать за тебя лучше задай конкретные вопросы тому, кто тебя менторит. Скажу по секрету, что я в случае работы со стажером больше обращал бы внимание как он думает и подходит к решению поставленных задач чем сколько он наговнокодил. Надеюсь ты осилил мысль потенциально может быть необходимо прочитать все секции, если между этим столбцом и ключом нет функциональной зависимостиЕсли нет - дальше двигаться нет смысла. Теперь если у тебя таки есть зависимость. Например, если дата по которой ты фильтруешь гарантированно находится в пределах одного дня от ключа секционирования, то просто примени видоизмененный предикат к ключу секционирования. Оракл сам сделает partition pruning. Кляузу partition [for] имеет смысл использовать поскольку в это случае по другому накладываются блокировки, особенно хороший профит может быть при параллельных запросах. Сомневаюсь, что это от тебя требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2016, 12:13:38 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopНапример, если дата по которой ты фильтруешь гарантированно находится в пределах одного дня от ключа секционированияТакой зависимости явно быть не может, поскольку ключ секционирования не дата. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2016, 12:15:32 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
israelshamir, не по теме select trunc(sysdate, 'DD')-7 into v_unl_call_start_from from dual заменить на v_unl_call_start_from:=trunc(sysdate, 'DD')-7; и тд зы вопрос по циклам не я не понял мож Вам вместо execute immediate надо open ... ...... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2016, 18:32:32 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
pihelisraelshamir, Вот способ по rowid или по любому полю из таблицы: Или прoще: Код: 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. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2016, 21:43:12 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
SYpihelisraelshamir, Вот способ по rowid или по любому полю из таблицы: WHERE DATA_OBJECT_ID = DBMS_MVIEW.PMARKER(X.ROWID) Best regards Maxim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2016, 15:00:55 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
Maxim Demenko WHERE DATA_OBJECT_ID = DBMS_MVIEW.PMARKER(X.ROWID) Абсолютно без разницы. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2016, 19:27:30 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
SYАбсолютно без разницы. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2016, 19:39:33 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
Ладно, не всякий DBA делает move своим partitions. Но split/merge - тоже в списке: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2016, 20:01:36 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
Согласен. Не учел что сегмент может "пeрeехать". SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2016, 22:17:59 |
|
||
|
Как узнать имя партиции, которой принадлежит строка?
|
|||
|---|---|---|---|
|
#18+
Я имел в виду скорее (исходя из своего совершенно субъективного опыта DWH проектов) довольно распространенные операции truncate partition + insert / exchange partition. Best regards Maxim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2016, 23:00:07 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39289769&tid=1887681]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
187ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 508ms |

| 0 / 0 |
