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。

1645

被折叠的 条评论
为什么被折叠?



