Oracle 普通表转分区表

实战派 ESP32-S3,双模无线开发板

ESP32-S3 原生支持 ESP-IDF,WiFi + 蓝牙一次搞定

1.保留脚本

开始之前先把表的整个创建脚本保留下来(包括表,索引,主键,赋权,注释等)。

2.新建分区表

1.根据表的保留时间添加首个分区。

2.是否压缩根据实际情况而定。

3.打开行迁移。

CREATE TABLE MONKEY.TEST_TABLE_BAK
(
   ID              NUMBER NOT NULL,
   NAME            VARCHAR2 (50 BYTE),
   ADD_DATE        DATE DEFAULT SYSDATE
)
TABLESPACE USERS
PARTITION BY RANGE
   (ADD_DATE)
   INTERVAL ( NUMTOYMINTERVAL (1, 'MONTH') )
   (
   PARTITION DCS_P202411
      VALUES LESS THAN
         (TO_DATE (' 2024-12-01 00:00:00',
                   'SYYYY-MM-DD HH24:MI:SS',
                   'NLS_CALENDAR=GREGORIAN')))
COMPRESS FOR OLTP
ENABLE ROW MOVEMENT;

3.重命名并赋权

-- 重命名索引
SELECT 'ALTER INDEX '||OWNER||'.'||INDEX_NAME||' RENAME TO '||INDEX_NAME||'D;' FROM DBA_INDEXES WHERE OWNER='MONKEY' AND TABLE_NAME='TEST_TABLE';
ALTER INDEX MONKEY.PK_TEST_TABLE RENAME TO PK_TEST_TABLED;
ALTER INDEX MONKEY.IX_TEST_TABLE_ADD_DATE RENAME TO IX_TEST_TABLE_ADD_DATED;
-- 重命名主键
ALTER TABLE MONKEY.TEST_TABLE RENAME CONSTRAINT PK_TEST_TABLE TO PK_TEST_TABLE_OLD;
-- 重命名表
ALTER TABLE MONKEY.TEST_TABLE RENAME TO TEST_TABLE_OLD;
ALTER TABLE MONKEY.TEST_TABLE_BAK RENAME TO TEST_TABLE;	
-- 赋权
GRANT SELECT ON MONKEY.TEST_TABLE TO SAILY;

4.重编译

依赖旧表的存储过程需要重新编译。

5.导出资料

vi MONKEY_TEST_TABLE.par

DIRECTORY=MONKEY
CONTENT=DATA_ONLY
DUMPFILE=MONKEY_TEST_TABLE_ALL_%U.dmp
LOGFILE=MONKEY_TEST_TABLE_ALL.log
TABLES=MONKEY.TEST_TABLE_OLD
FILESIZE=4G
CLUSTER=N
COMPRESSION=ALL
PARALLEL=6

expdp \'/ as sysdba\' parfile=MONKEY_TEST_TABLE.par

6.导入资料

vi MONKEY_TEST_TABLE_IMP.par	

DIRECTORY=MONKEY
DUMPFILE=MONKEY_TEST_TABLE_ALL_%U.dmp
LOGFILE=MONKEY_TEST_TABLE_IMP.log
QUERY=MONKEY.TEST_TABLE_OLD:" WHERE ADD_DATE >TO_DATE('2024/11/01 00:00:00','YYYY/MM/DD HH24:MI:SS')"
REMAP_TABLE=MONKEY.TEST_TABLE_OLD:TEST_TABLE
PARALLEL=6

impdp \'/ as sysdba\' parfile=MONKEY_TEST_TABLE_IMP.par 

7.重建索引

CREATE INDEX MONKEY.IX_TEST_TABLE_ADD_DATE ON MONKEY.TEST_TABLE
(ADD_DATE)
NOLOGGING
TABLESPACE USERS
PCTFREE    10
INITRANS   20
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            NEXT             1M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
PARALLEL 10 LOCAL;

ALTER INDEX MONKEY.IX_TEST_TABLE_ADD_DATE NOPARALLEL;

CREATE UNIQUE INDEX MONKEY.PK_TEST_TABLE ON MONKEY.TEST_TABLE
(ID,ADD_DATE)
NOLOGGING
TABLESPACE USERS
PCTFREE    10
INITRANS   20
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            NEXT             1M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
PARALLEL 10;

ALTER INDEX MONKEY.PK_TEST_TABLE NOPARALLEL;

8.加 keycols

如果表是 OGG 过来的,之前 ID 唯一索引是全局的,现在和 ADD_DATE 一起修改为分区索引,要在 OGG 中加上 keycols。

9.收集统计信息

实战派 ESP32-S3,双模无线开发板

ESP32-S3 原生支持 ESP-IDF,WiFi + 蓝牙一次搞定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值