oracle--set unused_大柏树运维笔记的博客-程序员宅基地

技术标签: OCP考题记录  oracle  java  mysql  数据库  大数据  

一.使用set unused的情况

当表中的某一个列不再使用的时候,我们可以删除这个列

alter table xxx drop column xxx;

或者

alter table xxx drop (xxx,xxx);

当删除列的时候,需要注意的是,不能删除一个表的所有列和删除sys下面表的列。

You cannot drop all columns from a table, nor can you drop columns from a table owned by SYS. Any attempt to do so results in an error

当我们删除一个大表中的数据,这个操作会需要一定的时间。这个时候,我们就可以用ALTER TABLE XXX SET UNUSED;

This statement marks one or more columns as unused, but does not actually remove the target column data or restore the disk space occupied by these columns. However, a column that is marked as unused is not displayed in queries or data dictionary views, and its name is removed so that a new column can reuse that name. In most cases, constraints, indexes, and statistics defined on the column are also removed. The exception is that any internal indexes for LOB columns that are marked unused are not removed.

此语句将一个或多个列标记为未使用,但实际上并不删除目标列数据或恢复这些列占用的磁盘空间。但是,被标记为未使用的列不会显示在查询或数据字典视图中,它的名称将被删除,以便新列可以重用该名称。在大多数情况下,还会删除列上定义的约束、索引和统计信息。例外情况是,LOB列中标记为未使用的任何内部索引都不会被删除。

You can later remove columns that are marked as unused by issuing an ALTER TABLE...DROP UNUSED COLUMNS statement. Unused columns are also removed from the target table whenever an explicit drop of any particular column or columns of the table is issued.

稍后,您可以通过发出ALTER TABLE来删除标记为未使用的列…删除未使用的列语句。每当发出任何特定列或表的列的显式删除时,还将从目标表中删除未使用的列

The data dictionary views USER_UNUSED_COL_TABSALL_UNUSED_COL_TABS, or DBA_UNUSED_COL_TABS can be used to list all tables containing unused columns. The COUNT field shows the number of unused columns in the table.

USER_UNUSED_COL_TABS、ALL_UNUSED_COL_TABS或DBA_UNUSED_COL_TABS可用于列出包含未使用列的所有表。COUNT字段显示表中未使用的列的数量。

只是可以查看表明和unused的列的数量。无法查看具体的unused的列名

For external tables, the SET UNUSED statement is transparently converted into an ALTER TABLE DROP COLUMN statement. Because external tables consist of metadata only in the database, the DROP COLUMN statement performs equivalently to the SET UNUSED statement.

对于外部表,SET used语句被透明地转换为ALTER TABLE DROP COLUMN语句。因为外部表只包含数据库中的元数据,所以DROP列语句的执行与SET used语句相当。

The ALTER TABLE...DROP UNUSED COLUMNS statement is the only action allowed on unused columns. It physically removes unused columns from the table and reclaims disk space.

ALTER TABLE……删除未使用的列语句是未使用的列上唯一允许的操作。它从物理上删除表中未使用的列并回收磁盘空间。

In the ALTER TABLE statement that follows, the optional clause CHECKPOINT is specified. This clause causes a checkpoint to be applied after processing the specified number of rows, in this case 250. Checkpointing cuts down on the amount of undo logs accumulated during the drop column operation to avoid a potential exhaustion of undo space.

在随后的ALTER TABLE语句中,指定了可选子句检查点。此子句导致在处理指定行数(本例中为250)后应用检查点。检查点减少了drop列操作期间积累的撤消日志数量,以避免潜在的撤消空间耗尽。 

ALTER TABLE hr.admin_emp DROP UNUSED COLUMNS CHECKPOINT 250;

二.恢复unused的列

设置unused的作用是为了在cpu、内存等资源不充足的时候,先做上unused标记再等数据库资源空闲的时候用drop set unused删除

设置unused列之后,并不是将该列数据立即删除,而是被隐藏起来,物理上还是存在的,以下为恢复步骤:对数据字典不熟悉的朋友测试前做好备份工作
SQL> conn scott/oracle 
Connected.
SQL> create table xs (id number, name char(10),age number);
Table created.
SQL> insert into xs values(1,'JACK',20); 
1 row created.
SQL> insert into xs values(2,'BILL',21);
1 row created.
SQL> insert into xs values(3,'TOM',22);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from xs;
>select * from xs;
 ID      NAME              AGE
---------- ----------         ----------
         1 JACK               20
         2 BILL               21
         3 TOM                22
SQL> alter table xs set unused column AGE;
Table altered.
SQL> select * from xs;
 ID      NAME
---------- ----------
         1 JACK
         2 BILL
         3 TOM
SQL> SET LINESIZE 200 设置显示列宽
SQL> SELECT OBJECT_ID,OBJECT_NAME FROM USER_OBJECTS;
OBJECT_ID OBJECT_NAME
--------------------------------------------------------------------------------------------------     51147 PK_DEPT
     51146 DEPT
     51148 EMP
     51149 PK_EMP
     51150 BONUS
     51151 SALGRADE
     52613 D
     52614 D1
     52615 D3
     52696 BIG
     52717 XS------------------------ OBJECT_ID=52717
11 rows selected.
SQL> conn / as sysdba
Connected.
SQL> select col#,intcol#,name from col$ where obj#=52717;
      COL#    INTCOL# NAME
---------- ---------- ------------------------------
         1          1 ID
         2          2 NAME
         0          3 SYS_C00003_12092313:06:51$----------原来的列名为C,被系统修了.
SQL> select cols from tab$ where obj#=71930;
COLS
----------
      2    -----------------------系统的字段数目也发生了变化
SQL> update col$ set col#=intcol# where obj#=52717;
3 rows updated.
SQL> update tab$ set cols=cols+1 where obj#=52717;
1 row updated.
SQL> update col$ set name='AGE' where obj#=52717 and col#=3;
1 row updated.
SQL> update col$ set property=0 where obj#=52717;
3 rows updated.
SQL> commit;
Commit complete.
SQL> startup force;   -----------这一步是必不可少的
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              92276304 bytes
Database Buffers          188743680 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.
SQL> select * from scott.xs; 
ID     NAME      AGE
---------- ---------- ----------
         1 JACK       20
         2 BILL        21
         3 TOM        22
我们可以看到,对于设置了unused的列,恢复的话我们需要知道设置之前列的名称。
 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41556620/article/details/119695478

智能推荐

条件语句_牧牛人Alec的博客-程序员宅基地

条件语句 条件语句 1. if基本语句 if 条件: 内部代码块 内部代码块 else: ... ...

【心善渊&Selenium3.0基础】— 19、Selenium操作浏览器中的弹窗_Liuyuelinjiayou的博客-程序员宅基地

文章目录1、浏览器自带弹窗的操作说明:常用操作:示例:2、页面自定义弹窗操作需求:实现方式:示例:1、浏览器自带弹窗的操作说明:webdriver中处理JavaScript所生成的alert、confirm以及prompt弹窗是很简单的。具体思路是使用switch_to.alert()方法定位到alert/confirm/prompt弹窗。然后使用text/accept/dismiss/send_keys方法按需进行操做。常用操作:操作说明text返回alert/confir

C语言实现顺序线性表(Sequentail linear list)_laying_1230的博客-程序员宅基地

一、理解顺序线性表的本质1、顺序线性表的本质是数组,对常见的数组比如像int[10],char[64]诸如此类的基本数据类型的数组;但是顺序线性表是能够存放结构体,指针等一系列的数据。二、顺序线性表api的申明如下:typedef void SeqNode; //顺序线性表的逻辑节点typedef void SeqList;//根据需求(数据容量)创建顺序线性表Se...

Spark-Shuffle管理机制、内存管理、文件寻址、调优、源码_人生路且修且行的博客-程序员宅基地

Spark-Shuffle-机制、内存、寻址、调优、源码一、SparkShuffle概念​ reduceByKey会将上一个RDD中的每一个key对应的所有value聚合成一个value,然后生成一个新的RDD,元素类型是<key,value>对的形式,这样每一个key对应一个聚合起来的value注意:​ 数据在聚合之前RDD的partition可能存放在不同节点上(RDD是弹...

Coolite 关于gridpanel 之RowDblClick 向后台传递id实现_q107770540的博客-程序员宅基地

后台代码: protected void Dbl_Click(object sender, AjaxEventArgs e) {

随便推点

带滤镜拍照的app_iPhone摄影师必备的几款滤镜APP_崔庆才丨静觅的博客-程序员宅基地

用iPhone作为拍摄工具的你,必定相当需要一款可以瞬间美化你的作品,变得与众不同的滤镜APP。在不用PS处理的情况下,廉价的iOS图片滤镜APP是你的首选,只需通过简单的操作,这些充满创造力的APP可以瞬间把你的图片转换成一幅幅华丽的艺术作品。以下推荐几款实用又高大上的滤镜APP供你参考。Trimaginator(售价人民币25元左右)可以将任何一幅图片美化成现代抽象派风格作品。处理后的图片风格...

关于IDEA显示无法找到bean报错但可以运行的情况_qq_33359219的博客-程序员宅基地

有时我们在使用bean的时候会出现显示无法autowire的情况,但实际调用的时候可以正常运行,遇到这种情况zhi'只需要填加@SuppressWarnings("SpringJavaAutowiringInspection")注解,会取消这个无用报错。...

java tomcat 监控_使用Java JConsole监控Tomcat_尽心则无余的博客-程序员宅基地

在做性能测试的时候,我们常常需要对Tomcat进行监控,一般tomcat使用的配置就是默认配置。这里我们说下Tomcat的默认配置情况在tomcat配置文件server.xml中的配置中,和连接数相关的参数有:minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75acceptCount:允...

JSP向Servlet传递数据以及与STM32、ESP8266通信过程_逸凌Time的博客-程序员宅基地

首先运行第一个登录页面:login.jsp<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html><html><head><meta charset="utf-8">&lt...

Oozie介绍_贾诩是也的博客-程序员宅基地

1. Hadoop常见调度框架:(1)Linux Crontab:Linux自带的任务调度计划,在任务比较少的情况下,可以使用这种方式,直接执行脚本,例如添加一个执行计划: 0 12 * hive -f xxx.sql(2)Azkaban:(3)Oozie:Cloudera公司开源(4)Zeus:阿里开源。Oozie是管理Hadoop作业的工作流调度系统。Oozie

AudioToolbox_如何录制PCM格式的数据_深渊云海的博客-程序员宅基地

让学习成为一种习惯先来认识一下头文件AudioConverter.h: 音频转换接口。定义用于创建和使用音频转换器的接口AudioFile.h: 定义一个用于读取和写入文件中的音频数据的接口。AudioFileStream.h: 定义了一个用于解析音频文件流的接口。AudioFormat.h: 定义用于分配和读取音频文件中的音频格式元数...

推荐文章

热门文章

相关标签