Oracle中列的维护

由于商业环境中,数据是不断变化的,客户的需求也是不断变化的,所以当一个表用了一段时间后,其结构就有可能需要变化。


而在Oracle中,提供了alter table这种方式来改变列。

从Oracle9.2版本之后:

如果需要变更列名,可以通过以下命令:

alter table 用户名.列名
rename column 旧列名
to 新列名

but修改表中一列名字的操作是会受到一些限制的。

如果所要改名的列上有索引,这列的名就不能修改。如果要修改,必须先将上面的索引删除掉。

另外,修改表中的某一列后,基于该表的视图,触发器,函数,过程和软件包等状态都将成为无效,因此需要重新编译。

  • 对于一个大型的数据库这样做的成本太高。

当某一个列没用时,可以从表中删除这一列。删除列命令从每一行中删除列的长度和数据,并释放数据块中的空间。删除大型表中的一列需要相当长的时间。

在一个表中删除一列的命令如下:


alter table 用户名.表名
drop column 列名
cascade constraints checkpoint 行数;

使用上述的语句注意事项:

  1. 一次只能删除一列
  2. 删除一列之后,该表必须至少还有一列
  3. 因为alter table是DDL语句,所以删除的列是无法恢复的
  4. 删除的列可以包含数据也可以不包含数据
  5. 该语句只能在Oracle 8i以上的版本中使用

上面说了,在一个大表中执行这个删除列的命令是十分耗时的,并且需要大量的还原磁盘空间,因此对系统的效率冲击很大。

因此应该尽可能避免在数据库繁忙期间使用上述DDL语句。

当在一个大表中删除一列时,可以通过使用checkpoint 行数;选项来减少还原磁盘空间的使用量。

例如:
在删除命令中使用了check point 1250;Oracle没做1250行的操作就会自己产生一个检查点。如果在执行这个命令期间,系统崩溃了,当重新启动系统后该命令可以从检查点开始继续它的工作,而不必重新开始。

alter table 用户名.表名 drop column continue;

但如果现在表执行十分繁忙,而你的大老板让你立即删除某一个大表中的一列。这个时候又该如何处理呢?

又不可能说键盘给你,你来弄。O(∩_∩)O嗯!


这个Oracle中也有一个折中的方案:
在alter table中使用set unused子句。在一个表中把某一列设置成无用

alter table 用户名.表名
set unused 列名 cascade constraints;

然后,当数据库空闲时,再利用以下的DDL语句来删除已设置为无用的列:

alter table 用户名.表名
drop unused columns checkpoints;

注意事项:

  1. 只能在Oracle 8i版本以上使用
  2. 只是做一个记号,并不是真正的删除这个列。
  3. 无法使用SQL*PLUS或者SQL语句看到
  4. Oracle把设置成无用的列当做删除的列处理
  5. 可以把一列或者多列设置成无用
  6. 可以使用DROP列名选项来删除被设置成无用的列
  7. 因为语句是DDL,因此没有恢复无用的列命令。

跟上上面同理,如果在该命令执行期间,系统崩溃了,当重启系统后该命令可以从检查点开始继续它的工作,不必从头开始。
格式如下:

alter table 用户名.表名 DROP COLUMNS CONTINUE 行数;


ok,上述就是Oracle列的维护。
我已讲完。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/56845.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP-FI-会计凭字段替代OBBH

会计凭证替代OBBH 业务:文本必须等于某个字段的值,例如凭证日期 关闭确认功能,输入OBBH 双击“替代”进入功能配置,或者用GGB1,用GGB1的功能更多。 点击行项目,点击“新建替换”保存 点击新建YXL7331,点击…

生态经济学领域里的R语言机器学(数据的收集与清洗、综合建模评价、数据的分析与可视化、数据的空间效应、因果推断等)

近年来,人工智能领域已经取得突破性进展,对经济社会各个领域都产生了重大影响,结合了统计学、数据科学和计算机科学的机器学习是人工智能的主流方向之一,目前也在飞快的融入计量经济学研究。表面上机器学习通常使用大数据&#xf…

py 项目上线 日志输出 logging

1 指定文件 example.log import logging logging.basicConfig(levellogging.INFO, format%(asctime)s %(levelname)s %(message)s, datefmt%Y-%m-%d %H:%M:%S,handlers[logging.FileHandler("example.log"),logging.StreamHandler()]) 2 把print(sql)换成 logging…

Android开发Demo:TextView同时显示图片和文本、同时显示多种颜色

一、预期效果 1、在一个Android TextView控件之中,同时显示文本和图片,如下图所示,文本之间掺夹着一张或多张图片。 2、在一个Android TextView控件之中,同时显示多种颜色,如下图所示,一条文本显示了两种不…

常见API架构介绍

常见API架构介绍 两个服务间进行接口调用,通过调用API的形式进行交互,这是常见CS架构实现的模式,客户端通过调用API即可使用服务端提供的服务。相较于SPI这种模式,就是服务端只规定服务接口,但具体实现交由第三方或者自…

AcWing 898. 数字三角形 (每日一题)

大家好 我是寸铁 希望这篇题解对你有用,麻烦动动手指点个赞或关注,感谢您的关注 注意 像数组下标出现i-1的,在循环的时候从i1开始。 关于0x3f3f3f3f和Integer.MAX_VALUE 0x3f3f3f3f:1061109567 Integer.MAX_VALUE:2147483647 在选用Integ…

(四)k8s实战-服务发现

一、Service 1、配置文件 apiVersion: v1 kind: Service metadata:name: nginx-svclabels:app: nginx-svc spec:ports:- name: http # service 端口配置的名称protocol: TCP # 端口绑定的协议,支持 TCP、UDP、SCTP,默认为 TCPport: 80 # service 自己的…

win10电脑记事本在哪里?电脑记事本如何查看字数?

在日常工作中,我们会遇到许多需要记录的信息和事项,而使用电脑记事本工具可以帮助我们方便地保存、管理这些内容。无论是记录工作会议的要点、制定工作计划,还是记录灵感和创意,电脑记事本都是非常实用的工具。 那么win10电脑记事…

springboot服务注册到Eureka,端口总是默认8080,自己配置端口不生效

这段时间接手了一个公司的老项目,用的是SpringCloud,在我用的时候突然发现有一个服务,注册到Eureka后,界面显示的端口和实际Ribbon调用的实例端口是不一致的,后来我自己写了个端口获取了一下所有的实例信息&#xff0c…

卷积神经网络——中篇【深度学习】【PyTorch】【d2l】

文章目录 5、卷积神经网络5.5、经典卷积神经网络(LeNet)5.5.1、理论部分5.5.2、代码实现 5.6、深度卷积神经网络(AlexNet)5.6.1、理论部分5.6.2、代码实现 5.7、使用块的网络(VGG)5.7.1、理论部分5.7.2、代…

第59步 深度学习图像识别:误判病例分析(TensorFlow)

基于WIN10的64位系统演示 一、写在前面 本期内容对等于机器学习二分类系列的误判病例分析(传送门)。既然前面的数据可以这么分析,那么图形识别自然也可以。 本期以mobilenet_v2模型为例,因为它建模速度快。 同样,基…

基于LOF算法的异常值检测

目录 LOF算法简介Sklearn官网LOF算法应用实例1Sklearn官网LOF算法应用实例2基于LOF算法鸢尾花数据集异常值检测读取数据构造数据可视化,画出可疑异常点LOF算法 LOF算法简介 LOF异常检测算法是一种基于密度的异常检测算法,基于密度的异常检测算法主要思想…

ubuntu安装pyenv

Pyenv是一种轻量级的Python版本管理工具,它可以让你在同一台机器上同时管理多个Python版本。这个工具对于开发者来说非常有用,因为在不同的项目中可能需要使用不同版本的Python。下面是在Ubuntu系统上安装pyenv,并配置环境变量的步骤&#xf…

Java之初始化顺序实践

功能概述 在创建Java对象时,需要将对象中的成员变量进行初始化后,才能调用对象的构造方法创建对象。本文中将会讲解初始化时父类与子类对应的顺序。 功能实践 场景1:父类、子类的初始化顺序 用例代码 Test public void test_init_order(…

在 CentOS 7 / RHEL 7 上安装 OpenSSL 1.1.x

OpenSSL 是一个开源软件库,由用于实现传输层安全 (TLS) 和安全套接字层 (SSL) 协议以及其他加密功能(例如签名、加密、解密和验证)的工具和库组成。操作系统和许多应用程序使用 OpenSSL 通过互联网提供安全通信。 CentOS 7 / RHEL 7 操作系统…

windows下Mysql安装配置教程

Mysql下载 在官网下载mysql community Server https://dev.mysql.com/downloads/mysql/ 可以选择下载压缩包或者MSI安装程序 使用压缩包安装 MySQL 压缩包安装通常需要以下步骤: 1. 下载 MySQL 安装包 你可以从 MySQL 官网上下载适合你系统的 MySQL 安装包&am…

nvm安装electron开发与编译环境

electron总是安装失败,下面说一下配置办法 下载软件 nvm npmmirror 镜像站 安装nvm 首先最好卸载node,不卸载的话,安装nvm会提示是否由其接管,保险起见还是卸载 下载win中的安装包 配置加速节点nvm node_mirror https://npmmi…

Linux学习之DNS服务的原理

DNS服务一些理论 域名系统(Domain Name System,DNS)是互联网的核心应用服务,可以通过IP地址查询到域名,也可以通过域名查询到IP地址。 FQDN(Full Qualified Domain Name)是完全限定域名&#xf…

c#写的端口监听,程序退出后,再次运行提示端口占用,且进程不存在

我用c#写了一个监听29999端口,进程结束后再次启动发现端口被占用,但是运行netstat -ano | findstr 29999找到进程ID后,却没有这个进程 经查询这个监听29999进程虽然没了,但是要找到他的父进程,把父进程关闭了才可以,参…

使用Tampermonkey(篡改猴)向页面注入js脚本

一、Tampermonkey 简单介绍 Tampermonkey是一款浏览器插件,适用于Chrome、Microsoft Edge、Safari、Opera Next 和 Firefox。他允许我们自定义javascript给指定网页添加功能,或修改现有功能。也可以用来辅助调试,或去除网页广告等。 官网地…