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

这样对于操作一些耗时长且中途中断可能会导致异常的操作就很危险,而最简单的避免方法就是将其写到脚本中,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. 一、docker入门(概念)

    系列导航 一.docker入门(概念) 二.docker的安装和镜像管理 三.docker容器的常用命令 四.容器的网络访问 五.容器端口转发 六.docker数据卷 七.手动制作docker镜像 八 ...

  2. 从头到尾创建一个vue项目

  3. canvas验证码 uni-app/小程序

    1 <template> 2 <view class="logo-wrapper"> 3 <view class="logo-img&quo ...

  4. 云网络智慧课堂-Qt程序代码开发规范

    序言: 编程规范可以提升代码可读性,提高可维护性. 目录: 一.命名规范 二.内存管理规范 三.函数方法规范 四.控制语句规范 五.注释规范 六.排版规范 七.版本管理规范 八.界面编程 词义解释:强 ...

  5. C#爬虫知识介绍

    爬虫 爬虫(Web Crawler)是指使用程序自动获取互联网上的信息和数据的一种技术手段.它通常从一个起始网址出发,按照一定的规则递归地遍历网页,并将有用的信息提取出来,然后存储到本地或者数据库中, ...

  6. plsqll连接Oracle的两种方式

    第一种方式:配置tnsnames.ora 找到plsql软件根目录 下的配置文件

  7. offline RL | ABM:从 offline dataset 的好 transition 提取 prior policy

    ICLR 2020,6 6 6. 材料: 论文题目:Keep Doing What Worked: Behavior Modelling Priors for Offline Reinforcemen ...

  8. 使用XStream,XMLSerializer 解析及格式转换

    博主原创,转载请注明出处 1.引入对应的maven依赖: <!--xstream--> <dependency> <groupId>com.thoughtworks ...

  9. [转帖]Oracle中为什么需要NCHAR

    https://zhuanlan.zhihu.com/p/668402759 Oracle中已经有了char.varchar2等字符类型,为什么又弄出一个nchar.nvarchar2? Oracle ...

  10. [转帖]Module ngx_http_v2_module

    https://nginx.org/en/docs/http/ngx_http_v2_module.html#:~:text=Sets%20the%20maximum%20number%20of%20 ...