一张几亿的分区表,能改名么?

简介: 一个微信群中有位朋友问“一张几亿的分区表,能改名么?”。我想他要表达的,不是语法上是否可以改名,而是改名是否有什么影响?是否有影响,需要看看背后做了什么。

一个微信群中有位朋友问“一张几亿的分区表,能改名么?”。我想他要表达的,不是语法上是否可以改名,而是改名是否有什么影响?


是否有影响,需要看看背后做了什么。


创建测试表,

create table tbl_par (

  id number,

  insert_time date

)

partition by range (insert_time)

(

  partition par_1 values less than (to_date('2017-01-02', 'yyyy-mm-dd')),

  partition par_2 values less than (to_date('2017-01-03', 'yyyy-mm-dd')),

  partition par_3 values less than (to_date('2017-01-04', 'yyyy-mm-dd'))

);


插入测试数据,

SQL> select insert_time, count(*) from tbl_par group by insert_time;
INSERT_TI   COUNT(*)
--------- ----------
01-JAN-17      10000
02-JAN-17      10000
03-JAN-17      10000


SQL> select count(*) from tbl_par partition(par_1);

COUNT(*)

----------

10000


SQL> select count(*) from tbl_par partition(par_2);

COUNT(*)

----------

10000


SQL> select count(*) from tbl_par partition(par_3);

COUNT(*)

----------

10000


执行10046事件,

SQL> alter session set events '10046 trace name context forever, level 12';

Session altered.


SQL> alter table tbl_par rename to tbl_par_k;

Table altered.


SQL> alter session set events '10046 trace name context off';

Session altered.


从trace看,首先以对表TBL_PAR以NOWAIT加了EXCLUSIVE表级排他锁,

LOCK TABLE "TBL_PAR" IN EXCLUSIVE MODE  NOWAIT

此时禁止对表进行DDL或DML操作,若执行了DDL操作,直接提示“ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired”的错误,若执行了DML操作,则处于hang,但允许执行select(非for update)操作。


接着有一段自治事务,判断table rename的操作,



又做了一系列的CRUD操作,主要是针对数据字典表,总计100次select,7次insert,16次delete,10次update,


整个trace文件一共4107行,大约执行一半的时候,从obj$%E

目录
相关文章
|
2月前
|
存储 算法 数据库
NetApp数据恢复—NetApp存储误删除文件的数据恢复案例
某公司一台NetApp存储,该存储中有24块磁盘。 工作人员误删除了NetApp存储中一个文件夹,文件夹中有非常重要的数据。 数据恢复工程师在现场对该存储进行了初检。虽然这个文件夹被删除很长时间,但是根据NetApp存储中的WAFL文件系统的特性,删除数据被覆盖的可能性不大,可以尝试恢复数据。
NetApp数据恢复—NetApp存储误删除文件的数据恢复案例
|
2月前
|
SQL 关系型数据库 MySQL
还在担心被误删的表吗,快来体验“PolarDB MySQL从表回收站中恢复误删的表”,最高可得米家照片打印机!
本次活动旨在帮助用户通过实际操作体验如何使用PolarDB MySQL提供表回收站的功能,从表回收站恢复误删的表。完成场景体验,即可获得智能护眼灯,邀请好友完成任务即有机会获得小米米家照片打印机、卫衣、ET公仔等诸多好礼。
|
4月前
|
机器学习/深度学习 分布式计算 DataWorks
MaxCompute产品使用合集之表分区被误删了,该如何恢复
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
存储 NoSQL Java
数据系统分区设计 - 分区与二级索引
目前的分区方案都依赖KV数据模型。KV模型简单,都是通过K访问记录,自然可根据K确定分区,并将读写请求路由到负责该K的分区。
94 0
|
存储 SQL Oracle
《 OushuDB:将数据库升级到下一级的正确选择》
《 OushuDB:将数据库升级到下一级的正确选择》
84 0
|
存储 SQL 算法
炸锅了,MySQL表500W行,居然有人不做分区?
炸锅了,MySQL表500W行,居然有人不做分区?
1065 0
炸锅了,MySQL表500W行,居然有人不做分区?
|
程序员 Linux Shell
教你三招快速文件批量重命名方法
教你三招快速文件批量重命名方法
1293 0