BULK操作减少redo实验
建表:
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实验的更多相关文章
- Oracle 了解 DDL 操作与 REDO 的关系
目录 了解 DDL 操作与 REDO 的关系 DDL是否会产生REDO 通过 10046 trace 来分析create 和drop 如果drop失败,redo的变化 了解 DDL 操作与 REDO ...
- ELK 学习笔记之 elasticsearch Bulk操作
Bulk操作: Bulk操作用于批量插入数据: 请求体格式: 编辑一个文件:(插入2个新的文档) curl -XPOST 'http://192.168.1.151:9200/library/book ...
- 初识Elasticsearch,bulk 操作的遇到的那些事
bulk api可以在单个请求中一次执行多个文档的 create . index . update 或 delete 操作 批量操作的行为(action)必须是以下几种: 行为 解释 create 当 ...
- 12.redis的AOF持久化深入讲解各种操作和相关实验
1.AOF持久化的配置 2.AOF持久化的数据恢复实验3.AOF rewrite4.AOF破损文件的修复5.AOF和RDB同时工作 ---------------------------------- ...
- 对于使用secureFX上传文件到centos7 的时候,以及不同的用户解压文件,对于文件操作权限的实验
本以为以一个用户胡如root登录了SecureFx,之后选择了root的家目录下的一个software目录,之后上传 以root用户远程登录LINUX系统 查看文件 之后再验证普通用户zhaijh登录 ...
- veridata实验举例(6)验证agent启动先后顺序是否对捕获update操作有影响
veridata实验举例(6)验证agent启动先后顺序是否对捕获update操作有影响 续接veridata实验系列 上篇:"veridata实验举例(5)改动主键上的列值.update ...
- 云计算与大数据实验:Hbase shell操作用户表
[实验目的] 1)了解hbase服务 2)学会hbase shell命令操作用户表 [实验原理] HBase是一个分布式的.面向列的开源数据库,它利用Hadoop HDFS作为其文件存储系统,利用Ha ...
- Oracle Redo Log 机制 小结(转载)
Oracle 的Redo 机制DB的一个重要机制,理解这个机制对DBA来说也是非常重要,之前的Blog里也林林散散的写了一些,前些日子看老白日记里也有说明,所以结合老白日记里的内容,对oracle 的 ...
- redo文件三
switch logfile是一种昂贵的操作,在进行日志切换的时候,是不允许生成新的redo信息 在前台进程生成redo日志信息的时候,此时redo buffer已经分配了空间,并且在当前的redo日 ...
随机推荐
- phoneGap+cordova+ionic混合app开发环境搭建
参考链接:http://www.w2 bc.com/article/177257 待补充
- lydsy 2600(二分+中位数前缀和)米仓
2600: [Ioi2011]ricehub Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 691 Solved: 359[Submit][Stat ...
- 新手学跨域之iframe
https://segmentfault.com/a/1190000000702539 页面嵌套iframe是比较常见的,比如QQ相关业务页面的登录框一般都是iframe的.使用ifrmae跨域要满足 ...
- 进击的Python【第二十一章】
s14day21 上节内容回顾: 1.请求周期 url> 路由 > 函数或类 > 返回字符串或者模板语言? Form表单提交: 提交 -> url > 函数或类中的方法 ...
- css动画
阅读目录 css3中与动画相关的标签 animation transition 与动画无关的transform 浏览器兼容 css3中与动画相关的标签 1.animation标签 不同浏览器的动画属性 ...
- [LeetCode] Count Primes 质数的个数
Description: Count the number of prime numbers less than a non-negative number, n click to show more ...
- QR code 扩展生成二维码
include './phpqrcode/phpqrcode.php'; //引入QR库 QRcode::png("leo", 'qrcode.png', 'L', 10); ...
- Mysql操作语句
MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL支持所有标准SQL数值数据类型. 这 ...
- JavaScript中---作用域
作用域: 变量还有函数作用的范围. 浏览器的内核主要有两大功能,一个是渲染页面,另一个就是我们的JavaScript的解释器了. 我们主要来说说JavaScript解释器,在解析时是怎么样的工作原理. ...
- AnjularJS系列2 —— 表单控件功能相关指令
第二篇,表单控件功能相关指令. ng-checked控制radio和checkbox的选中状态 ng-selected控制下拉框的选中状态 ng-disabled控制失效状态 ng-multiple控 ...