powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Партицирование уже существующей таблицы с XMLTYPE by reference
1 сообщений из 1, страница 1 из 1
Партицирование уже существующей таблицы с XMLTYPE by reference
    #39998911
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только что нарвался в 18C/19C. Если в child table есть XMLTYPE:

Тест кейс:


Код: 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.
SELECT  BANNER
  FROM  V$VERSION
/
CREATE TABLE SUBMISSION(
                        SUBM_ID INTEGER NOT NULL, 
                        CRT_DT TIMESTAMP(6) NOT NULL
                       )
  PARTITION BY RANGE(CRT_DT) 
    (
     PARTITION SEP2020 VALUES LESS THAN (TIMESTAMP' 2020-10-01 00:00:00')
    )
 / 
ALTER TABLE SUBMISSION
  ADD CONSTRAINT PK_SUBMISSION
    PRIMARY KEY(SUBM_ID)
/
CREATE TABLE ALERT_RULE(
                        ALERT_ID INTEGER NOT NULL,
                        SUBM_ID INTEGER NOT NULL,
                        ALERT_DESC XMLTYPE
                       )
/
ALTER TABLE ALERT_RULE
  ADD CONSTRAINT PK_ALERT_RULE
    PRIMARY KEY(ALERT_ID)
/
ALTER TABLE ALERT_RULE
    ADD CONSTRAINT FK1_ALERT_RULE
      FOREIGN KEY(SUBM_ID)
      REFERENCES SUBMISSION(SUBM_ID)
/
ALTER TABLE ALERT_RULE
  MODIFY
    PARTITION BY REFERENCE(FK1_ALERT_RULE)
/
DROP TABLE ALERT_RULE PURGE
/
CREATE TABLE ALERT_RULE(
                        ALERT_ID INTEGER NOT NULL,
                        SUBM_ID INTEGER NOT NULL
                       )
/
ALTER TABLE ALERT_RULE
  ADD CONSTRAINT PK_ALERT_RULE
    PRIMARY KEY(ALERT_ID)
/
ALTER TABLE ALERT_RULE
    ADD CONSTRAINT FK1_ALERT_RULE
      FOREIGN KEY(SUBM_ID)
      REFERENCES SUBMISSION(SUBM_ID)
/
ALTER TABLE ALERT_RULE
  MODIFY
    PARTITION BY REFERENCE(FK1_ALERT_RULE)
/
ALTER TABLE ALERT_RULE
    ADD ALERT_DESC XMLTYPE
/




Код: 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.
102.
103.
SQL> SELECT  BANNER
  2    FROM  V$VERSION
  3  /

BANNER
--------------------------------------------------------------------------------
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production

SQL> CREATE TABLE SUBMISSION(
  2                          SUBM_ID INTEGER NOT NULL,
  3                          CRT_DT TIMESTAMP(6) NOT NULL
  4                         )
  5    PARTITION BY RANGE(CRT_DT)
  6      (
  7       PARTITION SEP2020 VALUES LESS THAN (TIMESTAMP' 2020-10-01 00:00:00')
  8      )
  9   /

Table created.

SQL> ALTER TABLE SUBMISSION
  2    ADD CONSTRAINT PK_SUBMISSION
  3      PRIMARY KEY(SUBM_ID)
  4  /

Table altered.

SQL> CREATE TABLE ALERT_RULE(
  2                          ALERT_ID INTEGER NOT NULL,
  3                          SUBM_ID INTEGER NOT NULL,
  4                          ALERT_DESC XMLTYPE
  5                         )
  6  /

Table created.

SQL> ALTER TABLE ALERT_RULE
  2    ADD CONSTRAINT PK_ALERT_RULE
  3      PRIMARY KEY(ALERT_ID)
  4  /

Table altered.

SQL> ALTER TABLE ALERT_RULE
  2      ADD CONSTRAINT FK1_ALERT_RULE
  3        FOREIGN KEY(SUBM_ID)
  4        REFERENCES SUBMISSION(SUBM_ID)
  5  /

Table altered.

SQL> ALTER TABLE ALERT_RULE
  2    MODIFY
  3      PARTITION BY REFERENCE(FK1_ALERT_RULE)
  4  /
ALTER TABLE ALERT_RULE
            *
ERROR at line 1:
ORA-14427: table does not support modification to a partitioned state DDL

SQL> -- По частям работает
SQL> DROP TABLE ALERT_RULE PURGE
  2  /

Table dropped.

SQL> CREATE TABLE ALERT_RULE(
  2                          ALERT_ID INTEGER NOT NULL,
  3                          SUBM_ID INTEGER NOT NULL
  4                         )
  5  /

Table created.

SQL> ALTER TABLE ALERT_RULE
  2    ADD CONSTRAINT PK_ALERT_RULE
  3      PRIMARY KEY(ALERT_ID)
  4  /

Table altered.

SQL> ALTER TABLE ALERT_RULE
  2      ADD CONSTRAINT FK1_ALERT_RULE
  3        FOREIGN KEY(SUBM_ID)
  4        REFERENCES SUBMISSION(SUBM_ID)
  5  /

Table altered.

SQL> ALTER TABLE ALERT_RULE
  2    MODIFY
  3      PARTITION BY REFERENCE(FK1_ALERT_RULE)
  4  /

Table altered.

SQL> ALTER TABLE ALERT_RULE
  2      ADD ALERT_DESC XMLTYPE
  3  /

Table altered.

SQL>



By reference "в одном флаконе" работает как надо:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SQL> DROP TABLE ALERT_RULE PURGE
  2  /

Table dropped.

SQL> CREATE TABLE ALERT_RULE(
  2                          ALERT_ID INTEGER NOT NULL,
  3                          SUBM_ID INTEGER NOT NULL,
  4                          ALERT_DESC XMLTYPE,
  5                          CONSTRAINT FK1_ALERT_RULE
  6                            FOREIGN KEY(SUBM_ID)
  7                            REFERENCES SUBMISSION(SUBM_ID)
  8                         )
  9    PARTITION BY REFERENCE(FK1_ALERT_RULE)
 10  /

Table created.

SQL>



SY.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Партицирование уже существующей таблицы с XMLTYPE by reference
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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