grant EXECUTE_CATALOG_ROLE,CREATE ANY TABLE,ALTER ANY TABLE,DROP ANY TABLE,LOCK ANY TABLE,SELECT ANY TABLE to &用户名;
或者直接使用DBA用户。
begin
dbms_redefinition.can_redef_table(uname => &user,
tname => &table,
options_flag => dbms_redefinition.CONS_USE_PK);
end;
/
如果当前表没有主键,需要将选项设置为CONS_USE_rowid(表示使用rowid作为分区依据。)
alter session force parallel dml parallel &并行度;
alter session force parallel query parallel &并行度;
CREATE TABLE scott.emp_tmp
(
EMPNO NUMBER(4) not null,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2)
)
partition BY range(EMPNO)
(
partition tab_part_2020 VALUES less than (7700),
partition tab_part_2021 VALUES less than (7900),
partition tab_part_2022 values less than(maxvalue)
);
BEGIN
DBMS_REDEFINITION.START_REDEF_TABLE(uname => &用户名,
orig_table => &源表名,
int_table => &临时表名,
col_mapping => null,
options_flag => dbms_redefinition.cons_use_pk
);
END;
/
ERROR at line 1:
ORA-12008: error in materialized view refresh path
ORA-14400: inserted partition key does not map to any partition
select * from dba_mview_logs where log_owner=SCOTT;
select MVIEW_NAME,CONTAINER_NAME,QUERY from dba_mviews where owner=SCOTT;
drop materialized view log on scott.emp1;
drop materiallized view scott.emp_tmp;
DECLARE
error_count PLS_INTEGER :=0;
BEGIN
DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS(uname => &用户名,
orig_table => &源表名,
int_table => &临时表名,
copy_indexes => DBMS_REDEFINITION.CONS_ORIG_PARAMS,
copy_triggers => TRUE,
copy_constraints => TRUE,
copy_privileges => TRUE,
ignore_errors => true,
num_errors => error_count,
copy_statistics => FALSE );
DBMS_OUTPUT.PUT_LINE(errors := || TO_CHAR(error_count));
END;
ERROR at line 1:
ORA-01442: column to be modified to NOT NULL is already NOT NULL
select * from DBA_REDEFINITION_ERRORS;
SELECT CONSTRAINT_NAME, VALIDATED FROM USER_CONSTRAINTS WHERE TABLE_NAME = &表名;
ALTER TABLE &表名 ENABLE VALIDATE CONSTRAINT &约束名称;
SELECT CONSTRAINT_NAME, VALIDATED FROM USER_CONSTRAINTS WHERE TABLE_NAME = &表名;
BEGIN
DBMS_REDEFINITION.SYNC_INTERIM_TABLE(uname => &用户名,
orig_table => &源表名,
int_table => &临时表名
);
END;
BEGIN
DBMS_REDEFINITION.FINISH_REDEF_TABLE(uname => &用户名,
orig_table => &源表名,
int_table => &临时表名
);
END;
EXEC DBMS_STATS.gather_table_stats(&用户名, &表名, cascade => TRUE,no_invalidate => FALSE);
no_invalidate参数决定了新统计量生成之后,如何处理此时已经生成的执行计划,no_invalidate取值true,新的执行计划不会立即生效;no_invalidate取值false,新的执行计划会立即生效,取值auto_invalidate则数据库自行判断何时生效(默认值)。
SELECT ALTER INDEX || INDEX_OWNER || . || INDEX_NAME ||
REBUILD PARTITION || PARTITION_NAME || NOLOGGING online;
FROM DBA_IND_PARTITIONS
WHERE INDEX_OWNER NOT IN (SYS, SYSTEM, PUBLIC)
AND STATUS = UNUSABLE
UNION ALL
SELECT alter index || OWNER || . || A.INDEX_NAME ||
REBUILD online nologging;
FROM DBA_INDEXES A
WHERE OWNER NOT IN (SYS, SYSTEM, PUBLIC)
AND STATUS = UNUSABLE;
select * from dba_objects where status<>VALID and owner=&用户名;
truncate table &临时表名;
drop table &临时表名;
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129302.html
摘要:背景由于性能数据每天导入量,数据库表空间每天增长很快,且不需要太长的保存周期,为避免爆表,因此需要定制定期清理计划。数据的清理可以有多种方案,根据场景的不同可以分为离线,在线。 背景 由于性能数据每天导入量,数据库表空间每天增长很快,且不需要太长的保存周期,为避免爆表,因此需要定制定期清理计划。数据的清理可以有多种方案,根据场景的不同可以分为离线,在线。后续又在可以细分。这里仅考虑在线...
摘要:前言在使用加载数据数据库常见的优化操作后端掘金一索引将放第一位,不用说,这种优化方式我们一直都在悄悄使用,那便是主键索引。 Redis 内存压缩实战 - 后端 - 掘金在讨论Redis内存压缩的时候,我们需要了解一下几个Redis的相关知识。 压缩列表 ziplist Redis的ziplist是用一段连续的内存来存储列表数据的一个数据结构,它的结构示例如下图 zlbytes: 记录整...
阅读 1235·2023-01-11 13:20
阅读 1543·2023-01-11 13:20
阅读 996·2023-01-11 13:20
阅读 1651·2023-01-11 13:20
阅读 3958·2023-01-11 13:20
阅读 2456·2023-01-11 13:20
阅读 1290·2023-01-11 13:20
阅读 3452·2023-01-11 13:20