首页 > 数据库 >Oracle 使用append对insert大批量数据进行优化

Oracle 使用append对insert大批量数据进行优化

时间:2024-07-10 18:55:39浏览次数:16  
标签:insert table1 模式 使用 Oracle 日志 append

append介绍

/+append/

1、概念:append 属于direct insert,归档模式下append table nologging会大量减少日志,非归档模式append会大量减少日志,append方式插入只会产生很少的undo。

2、优势:使用append,一是减少对空间的搜索;二是有可能减少redolog的产生。所以append方式会快很多,一般用于大数据量的处理。

3、用法

insert /*+append*/ into table1 select * from table2

/*+append*/的作用是在表的高水位上分配空间,不再使用表的extent中的空余空间。

在使用了append选项以后,insert数据会直接加到表的最后面,而不会在表的空闲块中插入数据。使用append会增加数据插入的速度。

建议不要经常使用append,这样表空间会一直在高水位上,除非你这个表只插不删

oracle日志模式

默认情况是logging,就是会记录到redo日志中,force logging是强制记录日志,nologging是尽量减少日志。

二、使用情况

1、logging模式

这是日志记录的缺省模式,无论数据库是否处于归档模式,这并不改变表空间与对象级别上的缺省的日志记录模式。对于临时表空间将不记录日志到联机重做日志文件。

2、nologing模式

此模式不是不记录日志,而是最小化日志产生的数量,通常在下列情况下使用NOLOGGING

nologing模式通常和append联合使用。

优化方向

EXECUTE IMMEDIATE 'ALTER TABLE table1 NOLOGGING';

insert /*+ append */ into table1 select * from table2; 

commit; 

EXECUTE IMMEDIATE 'ALTER TABLE table1 LOGGING';

标签:insert,table1,模式,使用,Oracle,日志,append
From: https://blog.csdn.net/weixin_44203221/article/details/140298647

相关文章

  • insert into....select从一个数据库的表中导入到另一个数据库的表中
    说明已知条件:有两台oracle数据库,ora1和ora2,ora1的表中有数据(ip:192.0.0.1,表名table1,用户名和密码:yth(有管理员的权限),数据库服务名:orcl),需要导入ora2中(ip:192.0.0.2,表名table2,用户名和密码:ythcj(有管理员的权限),数据库服务名:orcl)。1.在ora2中建立数据库的链接指向ora1(需要有管理员......
  • oracle数据库状态监控
    1、功能介绍  1、检查oracle数据库的运行状态  2、第一次失败后,等待5秒钟再次检查一次2、脚本#!/bin/bashsource/etc/profileexportNLS_LANG=AMERICAN_AMERICA.AL32UTF8w=$(cd$(dirname$0);pwd)#检查数据库的方法fun(){result=$(sqlplus-s${user}/${p......
  • Mybatis Plus 3.X版本的insert填充自增id的IdType.ID_WORKER策略源码分析
    总结/朱季谦某天同事突然问我,你知道MybatisPlus的insert方法,插入数据后自增id是如何自增的吗?我愣了一下,脑海里只想到,当在POJO类的id设置一个自增策略后,例如@TableId(value="id",type=IdType.ID_WORKER)的注解策略时,就能实现在每次数据插入数据库时,实现id的自增,例如以下形式......
  • navicat连接oracle
    NavicatPremium(我的版本是12)连接oracle下载instantclient_12下载后解压(我下载的版本是instantclient_12_2)配置navicatpremium的客户端填写连接信息 因为我们用的是sys账号,所以这里的角色需要设置为dba点击连接测试,成功 声明:此博客为个人学习之用,如与其他作品雷......
  • oracle登录常见问题
    常见问题问题一:bash:sqlplus:commandnotfound...sqlplus/assysdba 解决方法:出现这个情况就是环境变量没有设置好, 重新设置环境变量就可以了, 使用 su-l oracle 就没问题(每次重启服务器都要导入一遍) 问题一:用户名密码不对解决方法:切换为oracle用户......
  • oracle12 安装文档
    前提条件Centos安装了桌面程序  配置安装环境关闭防火墙和SELinuxl SELinux设置临时设置: setenforcepermissiveroot用户执行如下步骤:vi/etc/selinux/config查看状态getenforce l 关闭防火墙systemctldisablefirewalld:永久关闭防火墙命令。重启后,防火......
  • Oracle数据库使用expdp/impdp导出导入数据
    背景:正式环境数据同步到测试环境,数据库名:MYDB,正式、用户:MYUSER(必须拥有SYS权限)。1、正式环境备份数据库(1)正式服务器上,cmd输入sqlplus,使用MYUSER账户登录(2)创建一个自定义的目录,用于存放导出的数据createdirectoryDATA_OUT_FILEas'E:\app\Administrator\admin\MYDB\my_dir\'......
  • oracle数据库导出数据时密码中存在特殊符号的情况处理
    oracle数据库导出指定的表数据,直接在windows的cmd命令行执行如下命令:expwz9199/""“wzz@123"”"@172.17.34.40:1521/orclfile=E:\temp\exp.dmptables=(T_User)命令详细说明:exp代表我们要进行导出操作;wz9199是用户名;wzz@123是密码;在密码两边拼接的三个双引号是为了适配密码中有......
  • Oracle系列---【如何修改oracle密码?优雅切换密码】
    1.问题描述接审计要求,已上线的数据库的密码属于弱口令,需要更改成严格的,但是服务又不能停机,这种情况下,只能在原有用户名上新增代理用户,这里不能用新建用户的方案,因为用户间不能共用schema,所以只能用新增代理用户的方案。切换到代理用户的过程中发现,"ORA-28000:Theaccountisl......
  • Oracle系列---【表空间常用命令】
    1.创建表空间#创建大小为30G且开启自增的表空间CREATETABLESPACETEST_COM_SMM_FRONTDATAFILE'/oradata/ORA19/datafile/TEST_COM_SMM_FRONT_01.dbf'SIZE30024MAUTOEXTENDON;2.查看表空间使用情况#表空间数据文件维度使用率查询SELECTb.TABLESPACE_NAME,b......