建表:

create table sm_histable
(
sm_id number(10),
sm_subid number(3),
service_type varchar2(6),
orgton number(3),
orgnpi number(3),
destton number(3),
destnpi number(3),
destaddr varchar2(21),
pri number(3),
pid number(3),
srr number(3),
dcs number(3),
schedule varchar2(21),
expire varchar2(21),
final varchar2(21),
sm_status number(3),
error_code number(3),
udl number(3),
sm_type number(10),
id_hint number(10)
);

普通INSERT操作:

create or replace procedure redo1 is
TYPE T_SM_ID IS TABLE OF NUMBER(10) INDEX BY BINARY_INTEGER;
TYPE T_SM_SUBID IS TABLE OF NUMBER(3) INDEX BY BINARY_INTEGER;
TYPE T_ORGADDR IS TABLE OF VARCHAR2(21) INDEX BY BINARY_INTEGER;
TYPE T_DESCADDR IS TABLE OF VARCHAR2(21) INDEX BY BINARY_INTEGER;
TYPE T_ID_HINT IS TABLE OF NUMBER(10) INDEX BY BINARY_INTEGER;
V_SM_ID T_SM_ID;
V_SM_SUBID T_SM_SUBID;
V_ORGADDR T_ORGADDR;
V_DESTADDR T_DESCADDR;
V_ID_HINT T_ID_HINT;
I INTEGER;
VREDO1 INTEGER;
VREDO2 INTEGER;
BEGIN
FOR I IN 1..2000
LOOP
V_SM_ID(I):=I;
V_SM_SUBID(I):=12;
V_ORGADDR(I):='';
V_DESTADDR(I):='';
V_ID_HINT(I):=I;
END LOOP;
select value into VREDO1 FROM v$sysstat where name='redo size';
for I in 1..2000 loop
INSERT INTO IIMAX.SM_HISTABLE (SM_ID,SM_SUBID,expire,DESTADDR,ID_HINT)
VALUES (V_SM_ID(I),V_SM_SUBID(I),V_ORGADDR(I),V_DESTADDR(I),V_ID_HINT(I));
END LOOP;
COMMIT;
COMMIT;
select value into VREDO2 from v$sysstat where name = 'redo size';
select value into VREDO2 from v$sysstat where name = 'redo size';
dbms_output.put_line('redo size:' || to_char(VREDO2-VREDO1));
end;
/

BULK操作

create or replace procedure redo2 is
TYPE T_SM_ID IS TABLE OF NUMBER(10) INDEX BY BINARY_INTEGER;
TYPE T_SM_SUBID IS TABLE OF NUMBER(3) INDEX BY BINARY_INTEGER;
TYPE T_ORGADDR IS TABLE OF VARCHAR2(21) INDEX BY BINARY_INTEGER;
TYPE T_DESCADDR IS TABLE OF VARCHAR2(21) INDEX BY BINARY_INTEGER;
TYPE T_ID_HINT IS TABLE OF NUMBER(10) INDEX BY BINARY_INTEGER;
V_SM_ID T_SM_ID;
V_SM_SUBID T_SM_SUBID;
V_ORGADDR T_ORGADDR;
V_DESTADDR T_DESCADDR;
V_ID_HINT T_ID_HINT;
I INTEGER;
VREDO1 INTEGER;
VREDO2 INTEGER;
N integer;
BEGIN
N:=2000;
FOR I IN 1..N
LOOP
V_SM_ID(I):=I;
V_SM_SUBID(I):=12;
V_ORGADDR(I):='';
V_DESTADDR(I):='';
V_ID_HINT(I):=I;
END LOOP;
select value into VREDO1 FROM v$sysstat where name='redo size';
FORALL I in 1..N
INSERT INTO IIMAX.SM_HISTABLE (SM_ID,SM_SUBID,expire,DESTADDR,ID_HINT)
VALUES (V_SM_ID(I),V_SM_SUBID(I),V_ORGADDR(I),V_DESTADDR(I),V_ID_HINT(I));
COMMIT;
COMMIT;
select value into VREDO2 from v$sysstat where name = 'redo size';
select value into VREDO2 from v$sysstat where name = 'redo size';
dbms_output.put_line('redo size:' || to_char(VREDO2-VREDO1));
end;
/
SQL> set serveroutput on
SQL> select current_scn from v$database; CURRENT_SCN
-----------
1291237 SQL> exec redo1;
redo size:673688 PL/SQL procedure successfully completed.
SQL> select current_scn from v$database;

CURRENT_SCN
-----------
1291424 SQL> exec redo2;
redo size:119592 PL/SQL procedure successfully completed. SQL> select current_scn from v$database; CURRENT_SCN
-----------
1291439

SQL> exec redo1;
redo size:673688

SQL> exec redo2;
redo size:119592
可以对比看到BULK操作产生的redo量要小很多。更多BULK操作介绍可参考 http://blog.csdn.net/tianlesoftware/article/details/6599003

BULK操作减少redo实验的更多相关文章

  1. Oracle 了解 DDL 操作与 REDO 的关系

    目录 了解 DDL 操作与 REDO 的关系 DDL是否会产生REDO 通过 10046 trace 来分析create 和drop 如果drop失败,redo的变化 了解 DDL 操作与 REDO ...

  2. ELK 学习笔记之 elasticsearch Bulk操作

    Bulk操作: Bulk操作用于批量插入数据: 请求体格式: 编辑一个文件:(插入2个新的文档) curl -XPOST 'http://192.168.1.151:9200/library/book ...

  3. 初识Elasticsearch,bulk 操作的遇到的那些事

    bulk api可以在单个请求中一次执行多个文档的 create . index . update 或 delete 操作 批量操作的行为(action)必须是以下几种: 行为 解释 create 当 ...

  4. 12.redis的AOF持久化深入讲解各种操作和相关实验

    1.AOF持久化的配置 2.AOF持久化的数据恢复实验3.AOF rewrite4.AOF破损文件的修复5.AOF和RDB同时工作 ---------------------------------- ...

  5. 对于使用secureFX上传文件到centos7 的时候,以及不同的用户解压文件,对于文件操作权限的实验

    本以为以一个用户胡如root登录了SecureFx,之后选择了root的家目录下的一个software目录,之后上传 以root用户远程登录LINUX系统 查看文件 之后再验证普通用户zhaijh登录 ...

  6. veridata实验举例(6)验证agent启动先后顺序是否对捕获update操作有影响

    veridata实验举例(6)验证agent启动先后顺序是否对捕获update操作有影响 续接veridata实验系列  上篇:"veridata实验举例(5)改动主键上的列值.update ...

  7. 云计算与大数据实验:Hbase shell操作用户表

    [实验目的] 1)了解hbase服务 2)学会hbase shell命令操作用户表 [实验原理] HBase是一个分布式的.面向列的开源数据库,它利用Hadoop HDFS作为其文件存储系统,利用Ha ...

  8. Oracle Redo Log 机制 小结(转载)

    Oracle 的Redo 机制DB的一个重要机制,理解这个机制对DBA来说也是非常重要,之前的Blog里也林林散散的写了一些,前些日子看老白日记里也有说明,所以结合老白日记里的内容,对oracle 的 ...

  9. redo文件三

    switch logfile是一种昂贵的操作,在进行日志切换的时候,是不允许生成新的redo信息 在前台进程生成redo日志信息的时候,此时redo buffer已经分配了空间,并且在当前的redo日 ...

随机推荐

  1. es-redis

    列出一些redis命令: 免得我不是dba,每次用都得翻看文档,很蛋疼.于是写了个连接脚本 [root@elk-redis-test105 ts]# ls conn-redis.sh [root@el ...

  2. [LeetCode] Longest Increasing Path in a Matrix 矩阵中的最长递增路径

    Given an integer matrix, find the length of the longest increasing path. From each cell, you can eit ...

  3. .NET跨平台之旅:升级至ASP.NET 5 RC1,Linux上访问SQL Server数据库

    今天微软正式发布了ASP.NET 5 RC1(详见Announcing ASP.NET 5 Release Candidate 1),.NET跨平台迈出了关键一步. 紧跟这次RC1的发布,我们成功地将 ...

  4. matlab 假设检验

    转自:http://blog.csdn.net/colddie/article/details/7773278 函数名称 函数说明 调用格式 正态总体的参数检验 ztest 单样本均值的z检验 (总体 ...

  5. 【WPF】WPF 布局

    1.window 类继承自 ContentControl 所以内部只能有一个元素2.遵循原则:            不应显示的设置元素(控件)尺寸,可以通过设置最大最小尺寸来限制大小         ...

  6. 庆祝下,提交了第一个ceph pull request。实现了从0到1的突破

    庆祝一下!经过社区老司机的带路,昨天提交了第一个ceph pull request.实现了从0到1的突破,希望再接再厉提交更多代码到社区,为社区发展贡献一点自己力量. 提交的第一个被社区fix的bug ...

  7. EntityFramework之监听者判断SQL性能指标

    前言 当我们利用EF这个ORM框架时,我们可能会利用LINQ或者原生的SQL语句来进行数据操作,此时我们无法确定我们的代码是否会给数据库带来一定的负载,当给数据库带来一定的压力时,由于项目中对数据进行 ...

  8. 命令行工具aspnet_regiis.exe实现加密和解密web.config

    命令行工具aspnet_regiis.exe,是一个类似于DOS的命令工具,称之为命令解释器.使用命令行工具加密和解密web.config文件中的数据库连接字符串时,只需要简单的语法命令即可. 加密语 ...

  9. js 正则表达式 ( 1 )

    https://regexper.com/ 量词: ?: 最多一次(0次或者1次) +:至少一次(大于等于1次) *:大于等于0次 {n}:n次 {n,m}:n次到m次之间,包括n,m {n,}:n次 ...

  10. spring架构源码:

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p. ...