Sql Oracle 12c-如何对现有表进行分区?
是否可以在Oracle中对现有表进行分区而不创建辅助表 还是建议先创建一个包含所有分区的第二个表,然后从第一个表复制所有内容 我有表“t1”: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
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吗?:POracle数据库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.