Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Партиционирование по дате с плавающим периодом / 24 сообщений из 24, страница 1 из 1
20.07.2016, 16:19:00
    #39277199
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование по дате с плавающим периодом
Добрый день всем гуру!

Появился в моей жизни "веселый" заказчик. Помимо прочего, хочет заказчик иметь таблицу, секционированную по дате, но чтобы период секционирования мог быть произвольным. Я в свое время очень подробно изучал вопрос секционирования в Oracle, но такого я там не находил. Прежде чем послать заказчика искать в Перу город Науи (в латинской транскрипции там еще посередине есть буква "h"), я бы хотел спросить у людей знающих - такое в принципе (хотя бы теоретически) возможно. Чтобы жили в рамках одной таблицы партиции за день, за месяц и за час?

Заранее благодарен за ответы

Oracle EE 11.2.0.4.0
...
Рейтинг: 0 / 0
20.07.2016, 16:27:56
    #39277203
Partition
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование по дате с плавающим периодом
А какие проблемы?
Обычный (не интервальный) range-partitioning
...
Рейтинг: 0 / 0
20.07.2016, 16:28:28
    #39277204
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование по дате с плавающим периодом
Леонов Юрий,

чисто теоретически - легко
например, вычисляете из даты число, как yymmdd и секционируете по нему
соответственно, числа yy0000 и yy0100 - yy1200 могут соответствовать годам и месяцам
...
Рейтинг: 0 / 0
20.07.2016, 16:29:43
    #39277205
так?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование по дате с плавающим периодом
Леонов Юрий,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
--drop table a;

create table a (a date) partition by range (a)
(partition a_2016 values less than (To_Date('2017-01-01', 'YYYY-MM-DD')),
partition a_2016_01 values less than (To_Date('2017-02-01', 'YYYY-MM-DD')),
partition a_2016_01_15 values less than (To_Date('2017-02-16', 'YYYY-MM-DD')),
partition a_2016_03 values less than (To_Date('2017-04-01', 'YYYY-MM-DD'))
);

insert into a values(To_Date('2016-06-05', 'YYYY-MM-DD'));
insert into a values(To_Date('2017-01-05', 'YYYY-MM-DD'));
insert into a values(To_Date('2017-02-05', 'YYYY-MM-DD'));
insert into a values(To_Date('2017-03-05', 'YYYY-MM-DD'));

select * from dba_tab_partitions tp where tp.table_name='A';
...
Рейтинг: 0 / 0
20.07.2016, 16:45:55
    #39277218
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование по дате с плавающим периодом
понятно, то есть через жопу можно, но о потомстве не мечтайте...

вот только сии антиквары хотят автоматическое создание партиций
...
Рейтинг: 0 / 0
20.07.2016, 16:51:11
    #39277225
Антиквар
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование по дате с плавающим периодом
Если хотят автоматическое - сталбыть представляют себе алгоритм определения размера следующей секции.
Уточняйте требования и работайте, интервальное секционирование - не панацея и не серебряная пуля.
...
Рейтинг: 0 / 0
20.07.2016, 17:04:37
    #39277238
Партиционирование по дате с плавающим периодом
АнтикварЕсли хотят автоматическое - сталбыть представляют себе алгоритм определения размера следующей секции .
Уточняйте требования и работайте, интервальное секционирование - не панацея и не серебряная пуля.

+1

Думаю, что Юрий не поинтересовался зачем....

Подозреваю, что заказчик создает электронный архив , с постановкой табличных простраств в
RO и отсетгивание в траспортные пространства и записью на носители фиксированного
объема для договременного хранения.
То есть задача поставлена для оптимальной утилизации
носителей длительного хранения.....
В описании носителя будет описан период , который на нем лежит.
...
Рейтинг: 0 / 0
20.07.2016, 17:29:55
    #39277252
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование по дате с плавающим периодом
Леонов Юрийпонятно, то есть через жопу можно, но о потомстве не мечтайте...

вот только сии антиквары хотят автоматическое создание партиций
ну, создавать автоматически можно с диапазоном по_умолчанию,
а потом, естественно , резать/клеить

хотя и тут, получается жопа уныло
...
Рейтинг: 0 / 0
20.07.2016, 17:42:36
    #39277269
Партиционирование по дате с плавающим периодом
orawishну, создавать автоматически можно с диапазоном по_умолчанию,
а потом, естественно , резать/клеить
Резка/клейка на интервальном range partitioning?
Если я ничего не путаю, то для этого надо перед операциями сделать табличку не-интервальной, или хотя бы переопределить базовую секцию на более свежую, иначе не взлетит.
...
Рейтинг: 0 / 0
20.07.2016, 17:51:25
    #39277274
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование по дате с плавающим периодом
Примерчик не покажете?orawishну, создавать автоматически можно с диапазоном по_умолчанию,
а потом, естественно , резать/клеить
Резка/клейка на интервальном range partitioning?
Если я ничего не путаю, то для этого надо перед операциями сделать табличку не-интервальной, или хотя бы переопределить базовую секцию на более свежую, иначе не взлетит.
ну, про интервальное секционирование здесь говорил не я
...
Рейтинг: 0 / 0
20.07.2016, 17:54:30
    #39277278
Ойнувсе
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование по дате с плавающим периодом
orawishну, про интервальное секционирование здесь говорил не я
А в тезисе про "автоматическое создание секций по умолчанию" - имелся ввиду некий кастомный техпроцесс?
Тогда не совсем понятно что значит "автоматическое".
...
Рейтинг: 0 / 0
20.07.2016, 18:23:03
    #39277303
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование по дате с плавающим периодом
Ойнувсеorawishну, про интервальное секционирование здесь говорил не я
А в тезисе про "автоматическое создание секций по умолчанию" - имелся ввиду некий кастомный техпроцесс?
Тогда не совсем понятно что значит "автоматическое".
кастомный?
например, ~нашедулить на ~начало ~года
19431906
...
Рейтинг: 0 / 0
21.07.2016, 09:01:04
    #39277496
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование по дате с плавающим периодом
ОйнувсеТогда не совсем понятно что значит "автоматическое".
автоматическое - обычно обозначает, что процесс выполняется механизмами без участия человека.

Например, делаем табличку с полем, в котором храним признак текущий партиции.
Всем вставляемым строкам партиционированной таблицы в поле партиционирования подставляем это значения из вспомогательной таблицы. По событию заполнения табличного пространства (скажем на 90%) текущей партиции, создаем новую партицию, меняем значение во вспомогательной и переводим старое пространство в режим ro.
Для надежности в процедуре выбора значения для актуальной таблички делаем проверку заполненности текущего пространства и если больше тех же 90% ждем пока сменится текущее пространство. :)
...
Рейтинг: 0 / 0
21.07.2016, 10:05:28
    #39277556
Партиционирование по дате с плавающим периодом
Сергей АрсеньевОйнувсеТогда не совсем понятно что значит "автоматическое".
автоматическое - обычно обозначает, что процесс выполняется механизмами без участия человека.

Например, делаем табличку с полем, в котором храним признак текущий партиции.
Всем вставляемым строкам партиционированной таблицы в поле партиционирования подставляем это значения из вспомогательной таблицы. По событию заполнения табличного пространства (скажем на 90%) текущей партиции, создаем новую партицию, меняем значение во вспомогательной
и переводим старое пространство в режим ro.
Для надежности в процедуре выбора значения для актуальной таблички делаем проверку заполненности текущего пространства и если больше тех же 90% ждем пока сменится текущее пространство. :)

5 копеек дополнения:

все индексы должны быть локально партиционированы,
что бы устанвленное в ro пространство не мешало вставке
новых записей в партицию находящуюся в rw пространстве
не разбрасывать грабли в виде ORA-01502
...
Рейтинг: 0 / 0
21.07.2016, 12:01:26
    #39277683
ДаешьЗОЖ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование по дате с плавающим периодом
Сергей АрсеньевНапример, делаем табличку с полем, в котором храним признак текущий партиции.
Всем вставляемым строкам партиционированной таблицы в поле партиционирования подставляем это значения из вспомогательной таблицы.
Жжешь напалмом. Открыли новый велосипедостроительный завод? :) :) :)
...
Рейтинг: 0 / 0
21.07.2016, 13:53:12
    #39277837
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование по дате с плавающим периодом
ванговательАнтикварЕсли хотят автоматическое - сталбыть представляют себе алгоритм определения размера следующей секции .
Уточняйте требования и работайте, интервальное секционирование - не панацея и не серебряная пуля.

+1

Думаю, что Юрий не поинтересовался зачем....

Подозреваю, что заказчик создает электронный архив , с постановкой табличных простраств в
RO и отсетгивание в траспортные пространства и записью на носители фиксированного
объема для договременного хранения.
То есть задача поставлена для оптимальной утилизации
носителей длительного хранения.....
В описании носителя будет описан период , который на нем лежит.

Ну конечно, я совсем уже лох, чтобы у заказчика не поинтересоваться...

У заказчика есть DBA, который о себе самого высокого мнения, но не знает как снять трассу...
Механизм выгрузки в external table уже реализован, причем механизм довольно таки гибкий.
Просто этому тамбовскому волку (товарищем его язык не поворачивается назвать) хочется на боевой базе ручками партиции поюзать (разбить на части, склеить и т.п.)... Зачем ему это надо - одному Богу известно.
...
Рейтинг: 0 / 0
21.07.2016, 14:32:51
    #39277892
Партиционирование по дате с плавающим периодом
Леонов Юрий Прежде чем послать заказчика искать в Перу город Науи (в латинской транскрипции там еще посередине есть буква "h"), я бы хотел спросить


Леонов Юрий
Просто этому тамбовскому волку (товарищем его язык не поворачивается назвать) хочется на боевой базе ручками партиции поюзать (разбить на части, склеить и т.п.)...
Зачем ему это надо - одному Богу известно.

Мне кажется, что вы не по адресу обращаетесь.

Вам к психотерапевту надо, пусть пропишет валерьяночки, новопасита ,
или чего покрепче ....
...
Рейтинг: 0 / 0
21.07.2016, 14:44:50
    #39277911
Партиционирование по дате с плавающим периодом
ДаешьЗОЖСергей АрсеньевНапример, делаем табличку с полем, в котором храним признак текущий партиции.
Всем вставляемым строкам партиционированной таблицы в поле партиционирования подставляем это значения из вспомогательной таблицы.
Жжешь напалмом. Открыли новый велосипедостроительный завод? :) :) :)

Нука , ткните плиз в доку, что ораклу сказать , что бы он сам
при достижении табличным пространство обьема , ну допустьи 4.7 гиг ( обьем ДВД)
автоматом созавал новое пространсво, создавал там следующие партиции
переключал партиционирование для списка таблиц ,
а старое пространство ставил в рид онли и преобразовывал в транспортное. под запись на диск....

ась ?
...
Рейтинг: 0 / 0
21.07.2016, 14:45:00
    #39277913
Упс, а-ооо
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование по дате с плавающим периодом
ванговательВам к психотерапевту надо, пусть пропишет валерьяночки, новопасита ,
или чего покрепче .... Походу заказчик подтянулся :)
...
Рейтинг: 0 / 0
21.07.2016, 14:57:52
    #39277928
Партиционирование по дате с плавающим периодом
Упс, а-ооованговательВам к психотерапевту надо, пусть пропишет валерьяночки, новопасита ,
или чего покрепче .... Походу заказчик подтянулся :)


Моему велосипеду уже лет 5, как минимум...

Код: 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.
CREATE OR REPLACE PACKAGE data_arch     
		authid current_user /* вызов с правами текущего пользователя необходим для того,
			чтобы была возможность включить роль SELECT_CATALOG_ROLE (в режиме вызова
			с definer's rights роли блокированы) */
as
	procedure detach_ts(p_ts varchar2);	/* в заданном табличном пространстве
		преобразует все секции в отдельные таблицы, проверяет замкнутость
		набора для транспортировки и переводит tablespace в READ ONLY */
	procedure attach_ts(p_ts varchar2 default NULL, p_dfmb integer default 22780, p_dfcnt integer default 3);
		/* создает очередное табличное пространство (со следующим порядковым номером)
		и регистрирует его для дальнейшего использования */
	procedure update_ts;	/* проверяет размер текущего табличного пространства и при
		необходимости изменяет его */
	procedure drop_detached_partitions(p_ts varchar2 default NULL);	/* удаляет
		пустые секции, оставшиеся после detach_ts (если в них в дальнейшем не
		предполагается импортировать данные) */
	procedure import_ts(p_ts varchar2);	/* преобразует отдельные таблицы в транспортированном
		табличном пространстве в секции соответствующих таблиц, создавая эти секции и сами
		таблицы, если это необходимо */
	procedure mark_on_tape(p_ts varchar2);	/* изменяет статус табличного пространства с
		DETACHED на ON TAPE */
	procedure urgent_switch_cur_ts;	/* выполняет переключение текущего табличного пространства на
		следующее по порядковому номеру -- для случаев, когда следующее пространство не было создано
		вовремя и требуется срочное переключение */
	procedure check_inactive_tss(p_curts number);	/* проверяет состав секций на неактивных табличных
		пространствах с серийными номерами, меньшими p_curts, и делает их READ ONLY, если все в порядке */
	function get_last_msg return varchar2;	/* возвращает последнее сообщение из таблицы 
		otla_tbs_error */
	function get_col_defs(st CLOB) return CLOB;	/* возвращает из DDL-оператора создания таблицы
		только часть, соответствующую описанию столбцов (заключенную в скобки) */
	function get_ind_def(st CLOB) return CLOB;	/* возвращает из DDL-оператора создания индекса
		только часть CREATE ... INDEX ... ON .... (....) */
end otla_arch;
/
...
Рейтинг: 0 / 0
21.07.2016, 16:53:17
    #39278082
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование по дате с плавающим периодом
ванговательвсе индексы должны быть локально партиционированы,
ну или в другом табличном пространстве. :)
...
Рейтинг: 0 / 0
21.07.2016, 17:06:10
    #39278092
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование по дате с плавающим периодом
ванговательНука , ткните плиз в доку, что ораклу сказать , что бы он сам
Ну честно говоря, он и так почти все сам делать может. Ну несколько команд надо.
Не делать avtoextend. Подписаться на событие переполнения и сплитнуть текущую партицию с переносом старого по новому месту жительства.
А потом это старое и в ro.

И вообще велосипедов бояться, на природе не кататься. :)
...
Рейтинг: 0 / 0
21.07.2016, 17:27:39
    #39278107
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование по дате с плавающим периодом
Леонов Юрийвот только сии антиквары хотят автоматическое создание партицийНу и какие проблемы?
Делаешь, например, интеравальное по дню, в конце месяца мерджишь секции прошедшего месяца в одну.
В конце года можешь клеить месяца.
Ясное дело секции после этого перестают быть интервальными *_tab_partitions.interval = NO.
Короче надо быть внимательным при работе с метаданными, чтоб понимать какая секция за день а какая за другой период.

При желании даже по произвольному листу можно делать секционирование, но это другая история.
...
Рейтинг: 0 / 0
21.07.2016, 17:33:21
    #39278113
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Партиционирование по дате с плавающим периодом
Леонов Юрийхочется на боевой базе ручками партиции поюзать (разбить на части, склеить и т.п.)... Зачем ему это надо - одному Богу известно.Ручками на боевой базе ничего делать не надо, а вот партиции разбиают и кляет много кто.
Надо только не забывать про перестройку индексов и другие тонкости при написании механизма.
Открой для себя "retention and archiving policy" если боишься спросить, вспомни что при склеивании данные можно сжимать и прочее.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Партиционирование по дате с плавающим периодом / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]