因为客户环境的堡垒机经常会莫名的断开连接,也不是简单的超时,因为有时候即使你一直在操作,也可能会断。

这样对于操作一些耗时长且中途中断可能会导致异常的操作就很危险,而最简单的避免方法就是将其写到脚本中,nohup挂到后台去执行。

本文以在线创建索引为例,比如给jingyu用户下T1表创建table_name,table_type两个字段的联合索引。

1.编辑创建索引的脚本并后台执行

注意sysdba执行,需要明确指定业务用户jingyu,一般要求业务低峰期online创建,parallel并行度根据当时系统资源实际使用情况来调整,最终建完索引成功后一定要记得去掉索引的并行度设置。
创建索引之前要大概预估下索引的大小,并结合索引指定存放的表空间剩余是否充足,同时也需要注意数据库的临时表空间要充足。
在一些特定场景下,还可以使用nologging选项进一步提升速度(前提就是数据库没有开启force logging才可以)。

vi createidx.sh

sqlplus / as sysdba <<EOF
set timing on
CREATE INDEX jingyu.IDX_T1 ON jingyu.T1(table_name,table_type) tablespace DBS_D_JINGYU parallel 8 online;
alter INDEX jingyu.IDX_T1 noparallel;
EOF nohup sh createidx.sh > createidx.log &

关于索引的大小、临时表空间使用等预估可以通过预查看创建索引的语句来获得比较准确的参考:

--这里没加online是因为测试online不会显示具体的索引预估大小
explain plan for CREATE INDEX jingyu.IDX_T1 ON jingyu.T1(table_name,table_type) tablespace DBS_D_JINGYU;
--查看执行计划
set lines 1000 pages 1000
select * from table(dbms_xplan.display()); PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 2186317495 ---------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------
| 0 | CREATE INDEX STATEMENT | | 8 | 152 | 3 (0)| 00:00:01 |
| 1 | INDEX BUILD NON UNIQUE| IDX_T1 | | | | |
| 2 | SORT CREATE INDEX | | 8 | 152 | | |
| 3 | TABLE ACCESS FULL | T1 | 8 | 152 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------------- Note
-----
- estimated index size: 65536 bytes 14 rows selected.

2.查看输出日志确认创建成功

[oracle@jystdrac1 ~]$ tail -20f createidx.log 

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options sys@CRMDB> sys@CRMDB>
Index created. Elapsed: 00:01:31.41
sys@CRMDB>
Index altered. Elapsed: 00:00:05.64
sys@CRMDB> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

小知识:后台执行Oracle创建索引免受会话中断影响的更多相关文章

  1. oracle 创建索引

    一.索引简介 1.索引相当于目录 2.索引是通过一组排序后的索引键来取代默认的全表扫描检索方式,从而提高检索效率. 3.索引的创建要适度,多了会影响增删改的效率,少了会影响查询的效率,索引最好创建在取 ...

  2. Oracle创建索引的原则(转)

    Oracle 建立索引及SQL优化 数据库索引: 索引有单列索引复合索引之说 如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引.数据库索引主要进行提高访问 ...

  3. oracle创建索引

    数据库索引是为了提高查询速度的一种数据结构. 索引的创建语句 索引的创建语句非常简单. CREATE INDEX 索引名 ON 表名(列名); 除了单列索引,还可以创建包含多个列的复合索引. CREA ...

  4. oracle 创建索引思考(转)

    在Oracle数据库中,创建索引虽然比较简单.但是要合理的创建索引则比较困难了. 笔者认为,在创建索引时要做到三个适当,即在适当的表上.适当的列上创建适当数量的索引.虽然这可以通过一句话来概括优化的索 ...

  5. oracle创建索引表空间

    Oracle 的索引可分为5种,它们包括唯一索引.组合索引.反向键索引.位图索引和基于函数的索引.1.创建索引的标准语法CREATE INDEX 索引名 ON 表名 (列名)TABLESPACE 表空 ...

  6. 小知识:使用oracle用户查看RAC集群资源状态

    正常情况按照标准配置的环境变量,只能grid用户查看RAC集群资源状态. crsctl stat res -t 但是绝大部分操作其实都是oracle用户来操作,比如启停数据库,操作完成以后就需要检查下 ...

  7. Oracle创建索引;查询索引

    1.创建索引 create index 索引名 on 表名(列名); 2.删除索引 drop index 索引名; 3.创建组合索引 create index 索引名 on 表名(列名1,,列名2); ...

  8. Linux后台执行的方法 - 关闭、退出不影响

    =============================================================================================nohup c ...

  9. Oracle 创建索引的基本规则总结

    1.  选择索引字段的原则: 在WHERE子句中最频繁使用的字段 联接语句中的联接字段 选择高选择性的字段(如果很少的字段拥有相同值,即有很多独特值,则选择性很好) Oracle在UNIQUE和主键字 ...

  10. oracle创建索引后sqlldr导入错误

    SQL*Loader-: Error calling once/load initialization ORA-: Table TABLE_LOG has index defined upon it. ...

随机推荐

  1. java读取解析endnote文件

    有些项目中会要求代码解析endnote文献资料获取一些标准的信息,例如XX在某著名期刊上发表了某篇文章,关于发表文章的这个事情的描述就会给坐着一个endnote文件来记录文章名称.作者.期刊名称.出版 ...

  2. Verilog Review

    Agenda 目的 Verilog概述 Verilog建模 模块 模块组成 书写建议 时延 Verilog基本语法 标识符 可读性 注释 空格 数据类型 操作数 运算符 条件语句 循环语句 函数 Ve ...

  3. pycharm设置保存时自动格式化代码(Auto Reformat Code)

    原文:https://blog.csdn.net/qq_41906934/article/details/124631826 1.手动格式化代码 Code -> Reformat Code 格式 ...

  4. JMS微服务开发示例(四)把配置文件appsettings.json 部署在网关,共享给其他相同的微服务

    通常,多个相同的微服务器,它们的appsettings.json配置文件的内容都是一样的,如果,每次修改配置文件,都要逐个替换,那就太繁琐了,我们可以利用网关的文件共享功能,实现配置文件的统一更新. ...

  5. NodeJS安装指南(Mac)

    nvm,node,npm之间的区别 nvm:nodejs 版本管理工具. 也就是说:一个 nvm 可以管理很多 node 版本和 npm 版本. nodejs:在项目开发时的所需要的代码库 npm:n ...

  6. 数据-CRUD

    CRUD Create 创建 Read 读取 Update 更新 Delete 删除 场景 只要存在数据结构概念,就必存在CRUD

  7. [转帖]MySQL运维实战(2)MySQL用户和权限管理

    https://segmentfault.com/a/1190000044514403 作者:俊达 引言 MySQL数据库系统,拥有强大的控制系统功能,可以为不同用户分配特定的权限,这对于运维来说至关 ...

  8. 【转帖】Linux性能优化(四)——BCC性能监控工具

    一.BCC简介 1.BCC简介 BCC是一个Python库,简化了eBPF应用的开发过程,并收集了大量性能分析相关的eBPF应用.BCC为BPF开发提供了不同的前端支持,包括Python和Lua,实现 ...

  9. [转帖]精通awk系列(19):awk流程控制之break、continue、next、nextfile、exit语句

    https://www.cnblogs.com/f-ck-need-u/   回到: Linux系列文章 Shell系列文章 Awk系列文章 break和continue break可退出for.wh ...

  10. github-keydb 知识

    https://github.com/Snapchat/KeyDB KeyDB is now a part of Snap Inc! Check out the announcement here R ...