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日 ...
随机推荐
- 对应sslocal的简易luci web界面
直接通过官方ss代码库安装的ss, 只有一个可执行的sslocal, 也没找到对应的luci-app, 所以就自己写了一个. 因为/etc/init.d/sslocal 和 /etc/config/s ...
- [LeetCode] Palindrome Partitioning II 拆分回文串之二
Given a string s, partition s such that every substring of the partition is a palindrome. Return the ...
- .NET WebAPI 实现图片上传(包括附带参数上传图片)
博主的项目,客户端是APP,考虑到以后也可能会应用到微信端.网站等,图片上传方法就需要兼容多端,并且以目前的设计,不允许非登录用户上传图片,就得在上传时解决附带参数上传图片的问题. 先来看看后台方法( ...
- 基于C/S架构的3D对战网络游戏C++框架_03服务器端详细设计
本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...
- Gulp:自动化构建工具
一.介绍: gulp是一个基于流的构建工具,可以自动执行指定的任务,简洁且高效 二.优点: 开发环境下,想要能够按模块组织代码,监听实时变化 css/js预编译,postcss等方案,浏览器前缀自动补 ...
- SpringMVC注解汇总(一)-定义
本文根据开涛哥学习SpringMVC汇总而成,方便更好查阅! 网址:http://jinnianshilongnian.iteye.com/blog/1752171 注解式控制器简介 @Control ...
- SQL基础语法(二)
SQL SELECT 语句 本章讲解 SELECT 和 SELECT * 语句. SQL SELECT 语句 SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). SQL ...
- Android测试基础题(三)
今天接着给大家带来的是Android测试基础题(三). 需求:定义一个排序的方法,根据用户传入的double类型数组进行排序,并返回排序后的数组 俗话说的好:温故而知新,可以为师矣 packag ...
- jQuery文件上传插件Uploadify(转)
一款基于flash的文件上传,有进度条和支持大文件上传,且可以多文件上传队列. 这款在flash的基础上增加了html5的支持,所以在移动端也可以使用. 由于官方提供的版本是flash免费,html5 ...
- centOS7虚拟机上搭建kvm虚拟平台
平台:win10+vmware, vmware中安装centOS7 1). 检测硬件是否支持虚拟化 # egrep '(vmx|svm)' --color=always /proc/cpuinfo ...