分区&同义词&序列
📌 分区
--查询表分区格式
SELECT PARTITION_NAME FROM USER_TAB_PARTITIONS WHERE TABLE_NAME = '{}';
--加分区, 用于分区的字段需要作为表主键
ALTER TABLE TABLE_NAME ADD PARTITION P202409 VALUES (202409);
--多个字段组合分区的表
ALTER TABLE TABLE_NAME SPLIT PARTITION P_0924_MAX AT (0924, 202409) INTO (PARTITION P_0924_202408, PARTITION P_0924_MAX) UPDATE GLOBAL INDEXES;
🚁 清分区数据
--hive无分区表的表
TRUNCATE TABLE TABLE_NAME;
--hive单个分区的表
ALTER TABLE TABLE_NAME DROP IF EXISTS PARTITION (month='202409');
--Oracle多个字段组合分区的表
ALTER TABLE TABLE_NAME TRUNCATE PARTITION P0924_202409 UPDATE INDEXES;
📌 同义词
--查建同义词的语句
SELECT DBMS_METADATA.GET_DDL('SYNONYM', 'SYNONYMNAME', 'USER') FROM DUAL;
--同理,可用来查建表语句
SELECT DBMS_METADATA.GET_DDL('TABLE', 'TABLE_NAME', 'USER') FROM DUAL;
--建同义词
CREATE OR REPLACE STNONYM USER1.SYNONYMNAME FOR USER2.TABLE_NAME;
--查所有同义词
SELECT * FROM DBA_SYNONYMS WHERE SYNONYM_NAME IN ('?');
--查表或视图或同义词各项信息,如创建时间
SELECT * FROM DBA_OBJECTS WHERE OBJECT_NAME = '?';
📌 序列
--查询序列的NEXTVAL
SELECT USER.SEQ_TABLE_NAME.NEXTVAL FROM DUAL;
--或者这种方式,需要先确定是哪个属主
SELECT T.LAST_NUMBER, T.* FROM USER_SEQUENCES T WHERE SEQUENCE_NAME LIKE '%SEQ_TABLE_NAME%';
--修改序列递增值
ALTER SEQUENCE SEQUENCE_NAME INCREMENT BY 100;
--建序列
DROP SEQUENCE USER.SEQUENCE_NAME;
CREATE SEQUENCE USER.SEQUENCE_NAME
MINVALUE 100000000001
MAXVALUE 999999999999
START WITH 100000000001
INCREMENT BY 1
CACHE 2000;