Sql Oracle 12c-如何对现有表进行分区?

Sql Oracle 12c-如何对现有表进行分区?,sql,oracle,database-design,partitioning,Sql,Oracle,Database Design,Partitioning,是否可以在Oracle中对现有表进行分区而不创建辅助表 还是建议先创建一个包含所有分区的第二个表,然后从第一个表复制所有内容 我有表“t1”: CREATE TABLE t1 ( id INT NOT NULL, accountnumber VARCHAR NOT NULL, yr_qtr INT NOT NULL ) yr_qtr有15个不同的值 我想基于yr_qtr对表't1'进行分区,它是int(或者使用yr_qtr分区创建't2') 输出: Table drop

是否可以在Oracle中对现有表进行分区而不创建辅助表

还是建议先创建一个包含所有分区的第二个表,然后从第一个表复制所有内容

我有表“t1”:

CREATE TABLE t1 (
    id INT NOT NULL,
    accountnumber VARCHAR NOT NULL,
    yr_qtr INT NOT NULL
)
yr_qtr有15个不同的值

我想基于yr_qtr对表't1'进行分区,它是int(或者使用yr_qtr分区创建't2')

输出:

Table dropped.
Table created.
5 row(s) inserted.
no data found
Result Set 5

ID  ACCOUNTNUMBER   YR_QTR
1   AB  20141
2   CD  20142
3   EF  20143
4   GH  20144
5   IJ  20145

Download CSV
5 rows selected.
Table altered.
Result Set 6

ID  ACCOUNTNUMBER   YR_QTR
1   AB  20141
2   CD  20142
3   EF  20143
4   GH  20144
5   IJ  20145

Download CSV
5 rows selected.
Result Set 7

TABLE_NAME  COMPOSITE   PARTITION_NAME  SUBPARTITION_COUNT  HIGH_VALUE  HIGH_VALUE_LENGTH   PARTITION_POSITION  TABLESPACE_NAME PCT_FREE    PCT_USED    INI_TRANS   MAX_TRANS   INITIAL_EXTENT  NEXT_EXTENT MIN_EXTENT  MAX_EXTENT  MAX_SIZE    PCT_INCREASE    FREELISTS   FREELIST_GROUPS LOGGING COMPRESSION COMPRESS_FOR    NUM_ROWS    BLOCKS  EMPTY_BLOCKS    AVG_SPACE   CHAIN_CNT   AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED   BUFFER_POOL FLASH_CACHE CELL_FLASH_CACHE    GLOBAL_STATS    USER_STATS  IS_NESTED   PARENT_TABLE_PARTITION  INTERVAL    SEGMENT_CREATED INDEXING    READ_ONLY   INMEMORY    INMEMORY_PRIORITY   INMEMORY_DISTRIBUTE INMEMORY_COMPRESSION    INMEMORY_DUPLICATE  CELLMEMORY  INMEMORY_SERVICE    INMEMORY_SERVICE_NAME
T1  NO  P1  0   20141   5   1   LIVESQL_USERS   10   -  1   255 65536   1048576 1   2147483645  2147483645   -   -   -  YES DISABLED     -   -   -   -   -   -   -   -   -  DEFAULT DEFAULT DEFAULT NO  NO  NO   -  NO  YES ON  NO  DISABLED     -   -   -   -   -   -   - 
T1  NO  SYS_P29017  0   20142   5   2   LIVESQL_USERS   10   -  1   255 65536   1048576 1   2147483645  2147483645   -   -   -  YES DISABLED     -   -   -   -   -   -   -   -   -  DEFAULT DEFAULT DEFAULT NO  NO  NO   -  YES YES ON  NO  DISABLED     -   -   -   -   -   -   - 
T1  NO  SYS_P29018  0   20143   5   3   LIVESQL_USERS   10   -  1   255 65536   1048576 1   2147483645  2147483645   -   -   -  YES DISABLED     -   -   -   -   -   -   -   -   -  DEFAULT DEFAULT DEFAULT NO  NO  NO   -  YES YES ON  NO  DISABLED     -   -   -   -   -   -   - 
T1  NO  SYS_P29019  0   20144   5   4   LIVESQL_USERS   10   -  1   255 65536   1048576 1   2147483645  2147483645   -   -   -  YES DISABLED     -   -   -   -   -   -   -   -   -  DEFAULT DEFAULT DEFAULT NO  NO  NO   -  YES YES ON  NO  DISABLED     -   -   -   -   -   -   - 
T1  NO  SYS_P29020  0   20145   5   5   LIVESQL_USERS   10   -  1   255 65536   1048576 1   2147483645  2147483645   -   -   -  YES DISABLED     -   -   -   -   -   -   -   -   -  DEFAULT DEFAULT DEFAULT NO  NO  NO   -  YES YES ON  NO  DISABLED     -   -   -   -   -   -   - 
T1  NO  SYS_P29021  0   20146   5   6   LIVESQL_USERS   10   -  1   255 65536   1048576 1   2147483645  2147483645   -   -   -  YES DISABLED     -   -   -   -   -   -   -   -   -  DEFAULT DEFAULT DEFAULT NO  NO  NO   -  YES YES ON  NO  DISABLED     -   -   -   -   -   -   - 

Download CSV
6 rows selected.

您可以尝试以下操作:
ALTER TABLE t1按范围修改分区(yr_qtr)间隔(1)(分区P1值小于(2)/*根据要求添加(如您所说的15)*/)此外,您的qtr数量将随着时间的推移而不断增长。所以可能需要某种“自动”分区。目前,这些是yr_qtr的值:201412014220143201442014120152201532015420161201622016320164201712017220173。预计未来会有更多:20174、20181、20182…已包含区间分割。如果有索引,也要注意索引。尝试上面的查询:
altertable t1按范围修改分区(yr_qtr)间隔(1)(分区P1值小于(2))联机错误:
ORA-14006:无效的分区名14006。00000-“无效分区名称”*原因:需要该形式的分区名称,但不存在*操作:输入适当的分区名称。
对我运行良好@(Oracle Live SQL)所有对我有效的命令:
--创建分区联机更改表t1按范围修改分区(yr_qtr)间隔(1)(分区P1值小于(20141))联机不确定原因。。我正在使用Oracle Database 12c Enterprise Edition 12.1.0.2.0-64位版本
您可以尝试将分区名称改为random9801而不是P1吗?:P
Oracle数据库12c企业版12.2.0.1.0-64位生产0 PL/SQL版本12.2.0.1.0-生产0 CORE 12.2.0.1.0 Linux生产0 TNS:Version 12.2.0.1.0-生产0 NLSRTL Version 12.2.0.1.0-生产0
更改表t1按范围修改分区(yr_qtr)间隔(1)(PARTITION random9802 VALUES小于(20141))联机错误报告-ORA-14006:无效的分区名称14006.00000-“无效的分区名称”*原因:需要表单的分区名称,但不存在。*操作:输入适当的分区名称。
从何处运行是否重要?(目前正在使用SQL Developer)。您还需要创建分区的特定权限吗?您使用的是12c R1
Table dropped.
Table created.
5 row(s) inserted.
no data found
Result Set 5

ID  ACCOUNTNUMBER   YR_QTR
1   AB  20141
2   CD  20142
3   EF  20143
4   GH  20144
5   IJ  20145

Download CSV
5 rows selected.
Table altered.
Result Set 6

ID  ACCOUNTNUMBER   YR_QTR
1   AB  20141
2   CD  20142
3   EF  20143
4   GH  20144
5   IJ  20145

Download CSV
5 rows selected.
Result Set 7

TABLE_NAME  COMPOSITE   PARTITION_NAME  SUBPARTITION_COUNT  HIGH_VALUE  HIGH_VALUE_LENGTH   PARTITION_POSITION  TABLESPACE_NAME PCT_FREE    PCT_USED    INI_TRANS   MAX_TRANS   INITIAL_EXTENT  NEXT_EXTENT MIN_EXTENT  MAX_EXTENT  MAX_SIZE    PCT_INCREASE    FREELISTS   FREELIST_GROUPS LOGGING COMPRESSION COMPRESS_FOR    NUM_ROWS    BLOCKS  EMPTY_BLOCKS    AVG_SPACE   CHAIN_CNT   AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED   BUFFER_POOL FLASH_CACHE CELL_FLASH_CACHE    GLOBAL_STATS    USER_STATS  IS_NESTED   PARENT_TABLE_PARTITION  INTERVAL    SEGMENT_CREATED INDEXING    READ_ONLY   INMEMORY    INMEMORY_PRIORITY   INMEMORY_DISTRIBUTE INMEMORY_COMPRESSION    INMEMORY_DUPLICATE  CELLMEMORY  INMEMORY_SERVICE    INMEMORY_SERVICE_NAME
T1  NO  P1  0   20141   5   1   LIVESQL_USERS   10   -  1   255 65536   1048576 1   2147483645  2147483645   -   -   -  YES DISABLED     -   -   -   -   -   -   -   -   -  DEFAULT DEFAULT DEFAULT NO  NO  NO   -  NO  YES ON  NO  DISABLED     -   -   -   -   -   -   - 
T1  NO  SYS_P29017  0   20142   5   2   LIVESQL_USERS   10   -  1   255 65536   1048576 1   2147483645  2147483645   -   -   -  YES DISABLED     -   -   -   -   -   -   -   -   -  DEFAULT DEFAULT DEFAULT NO  NO  NO   -  YES YES ON  NO  DISABLED     -   -   -   -   -   -   - 
T1  NO  SYS_P29018  0   20143   5   3   LIVESQL_USERS   10   -  1   255 65536   1048576 1   2147483645  2147483645   -   -   -  YES DISABLED     -   -   -   -   -   -   -   -   -  DEFAULT DEFAULT DEFAULT NO  NO  NO   -  YES YES ON  NO  DISABLED     -   -   -   -   -   -   - 
T1  NO  SYS_P29019  0   20144   5   4   LIVESQL_USERS   10   -  1   255 65536   1048576 1   2147483645  2147483645   -   -   -  YES DISABLED     -   -   -   -   -   -   -   -   -  DEFAULT DEFAULT DEFAULT NO  NO  NO   -  YES YES ON  NO  DISABLED     -   -   -   -   -   -   - 
T1  NO  SYS_P29020  0   20145   5   5   LIVESQL_USERS   10   -  1   255 65536   1048576 1   2147483645  2147483645   -   -   -  YES DISABLED     -   -   -   -   -   -   -   -   -  DEFAULT DEFAULT DEFAULT NO  NO  NO   -  YES YES ON  NO  DISABLED     -   -   -   -   -   -   - 
T1  NO  SYS_P29021  0   20146   5   6   LIVESQL_USERS   10   -  1   255 65536   1048576 1   2147483645  2147483645   -   -   -  YES DISABLED     -   -   -   -   -   -   -   -   -  DEFAULT DEFAULT DEFAULT NO  NO  NO   -  YES YES ON  NO  DISABLED     -   -   -   -   -   -   - 

Download CSV
6 rows selected.