Oracle中可以nologging执行的操作】的更多相关文章

redo重做日志是Oracle数据库恢复(recovery)的基础:但在很多情况下可以通过禁用重做日志的产生来加速SQL语句的完成,也就是我们所说的可nologging化的操作,这些操作大多是或串行的或并行的数据载入. 那么哪些操作是允许被nologging化的呢?首先需要注意的是普通的DML操作,即:常规insert,update,和delete(以及merge)总是不能被nologging执行的.但以下SQL语句则可以以nologging选项执行: direct load (SQL*Load…
Oracle中SQL语句执行过程中,Oracle内部解析原理如下: 1.当一用户第一次提交一个SQL表达式时,Oracle会将这SQL进行Hard parse,这过程有点像程序编译,检查语法.表名.字段名等相关信息(如下图),这过程会花比较长的时间,因为它要分析语句的语法与语义.然后获得最优化后的执行计划(sql plan),并在内存中分配一定的空间保存该语句与对应的执行计划等信息. 2.当用户第二次请求或多次请求时,Oracle会自动找到先前的语句与执行计划,而不会进行Hard parse,而…
Oracle中对XMLType的简单操作(extract.extractvalue...)    1.下面先创建一个名未test.xml的配置文件. <?xml version="1.0" encoding="UTF-8" ?><collection xmlns="">  <record>    <leader>-----nam0-22-----^^^450-</leader>    &…
关键是不能换行,要加上begin ...sql... end;     每个SQL用:隔开,end后面必须加: 以下是拷贝于:http://www.cnblogs.com/teamleader/archive/2007/05/31/765943.html 有时我们需要一次性执行多条sql语句,而用来更新的sql是根据实际情况用代码拼出来的 解决方案是把sql拼成下面这种形式: begin , vessel_id '; , vessel_id '; end; 总结如下: 以begin开始,以end…
今天一个东西需要用到java nio的东西.在网上查了一下资料,发现有Apache的Mina,Netty等,感觉JDK中带的NIO有点鸡肋啊.之前看过这部分的内容,但好长一段时间没有用,也就忘得七七八八了.如今是温故而知新,但其中遇到了些疑问: 先贴上代码吧: public static void main(String[] args) throws Exception{ Thread sh=new Thread(new Runnable() { public void run(){ try{…
前几天一直在做Oracle对XMLType字段的操作,我还不是Oracle大拿,到网上找了很多资料,但是很多就是单一功能的介绍,不能很好的解决问题,现在在这里总结下. 1.下面先创建一个名未test.xml的配置文件. <?xml version="1.0" encoding="UTF-8" ?> <collection xmlns=""> <record> <leader>-----nam0-22…
在oracle中utl_file包提供了一些操作文本文件的函数和过程,学习了一下他的基本操作 1.创建directory,并给用户授权 复制代码 代码如下: --创建directory create or replace directory TESTFILE as '/home/oracle/zxx/test'; --给用户授权 grant read, write on directory TESTFILE to zxx; 详细介绍 http://download.oracle.com/docs…
一.访问表执行计划 1.table access full:全表扫描.它会访问表中的每一条记录(读取高水位线以内的每一个数据块). 2.table access by user rowid:输入源rowid来自于用户指定. 3.table access by index rowid:输入源rowid来自于索引. 4.table access by global index rowid:全局索引获取rowid,然后再回表. 5.table access by local index rowid:分…
队长同学原来的地址:https://www.cnblogs.com/teamleader/archive/2007/05/31/765943.html队长同学原来的描述: 有时我们需要一次性执行多条sql语句,而用来更新的sql是根据实际情况用代码拼出来的解决方案是把sql拼成下面这种形式: begin update TB_VG set seq = 1, vessel_id = 'Jin14', vessel_type = 'TRACK' where batch_number = '20837'…
执行顺序: from where group by having select order by ******当having/select 中出现组函数,那么其他没有被组函数修饰的列就必须出现下group by后面.因为一旦有group by 关键字 则代表 后序执行的数据都是要分组的 若在having select 中出现没有被组函数修饰的列,就必须将它放到group by后 先执行分组. select dept_id,avg(salary) from s_emp where avg(sala…
Oracle: create table zjhis.mz_zdxx_zl as select a.sfsb, wm_concat(a.zdmc) as 诊断 from zjhis.mz_zdxx a group by a.sfsb 直接可以使用 wm_concat 函数   SQl SERVER : select t.patient_id,       t.times,       [ values ] = stuff((select ',' + icd_name               …
设置oracle中date的会话格式为 'yyyy-mm-dd hh24:mi:ss' alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; 设置oracle中timestamp的会话格式为 ‘yyyy-mm-dd hh24.mi.ss.ff’ alter session set nls_timestamp_format='yyyy-mm-dd hh24.mi.ss.ff'; c#中向oracle中插入date 可以直接操作日期数据…
[知识点整理]Oracle中NOLOGGING.APPEND.ARCHIVE和PARALLEL下,REDO.UNDO和执行速度的比较 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 系统和会话级别的REDO和UNDO量的查询 ② NOLOGGING.APPEND.ARCHIVE和PARALLEL下,REDO.UNDO和执行速度的比较(重点)   Tips: ① 本文…
在编写一个数据库函数时,方法实现需要查询后进行修改,出现ora-14551的错误 create or replace function fun_DxcBillSn(tabType integer,tabName varchar2,fieldStr varchar2)return integer is serialSn integer; maxVal integer; nowMonth ); begin --获取当前时间的月份-- select to_char(Sysdate,'MM') into…
Oracle的Nvl函数 nvl( ) 函数 从两个表达式返回一个非null 值. 语法 NVL(eExpression1, eExpression2) 参数 eExpression1, eExpression2 如 果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2.如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1.eExpression1 和 eExpression2 可以是任意一种数据类型…
转载:http://www.cnblogs.com/nizuimeiabc1/p/9441937.html 1,首先查找表的操作记录 select * from v$sqlarea a where a.SQL_TEXT like '%TB_ACCT_SYSDATE%'; 2,从上面的记录中找到update语句对应的sql_id select * from v$sqltext a,v$sqlarea b where a.SQL_ID=b.SQL_ID and b.SQL_ID in('cq5382…
Oracle中PL/SQL的执行部分和异常部分 一.PL/SQL的执行部分. 赋值语句. 赋值语句分两种,一种是定义一个变量,然后接收用户的IO赋值:另一种是通过SQL查询结果赋值. 用户赋值举例: set serveroutput on; accept abc prompt '请输入abc的值'; DECLARE a int:= &abc; BEGIN dbms_output.put_line(a); END; 查询赋值举例: set serveroutput on; DECLARE str…
来源于:http://blog.sina.com.cn/s/blog_61cd89f60102e7gi.html 当需要对一个非常大的表INSERT的时候,会消耗非常多的资源,因为update表的时候,oracle需要生成 redo log和undo log;此时最好的解决办法是用insert, 并且将表设置为nologging;当把表设为nologging后,并且使用的insert时,速度是最快的,这个时候oracle只会生成最低限度的必须的redo log,而没有一点undo信息.如果有可能…
环境 Oracle 11.2.0 + SQL Plus 问题 根据以下要求编写函数:将scott.emp表中工资低于平均工资的职工工资加上200,并返回修改了工资的总人数.PL/SQL中有更新的操作,执行此函数报如下错误:ORA-16551: 无法在查询中执行 DML 操作. 解决 在声明函数时加上: PRAGMA AUTONOMOUS_TRANSACTION; 并在执行完DML后COMMIT. 操作日志 --登录到Oracle C:\Users\Wentasy>sqlplus wgb SQL*…
该文档为根据相关资料整理.总结而成,主要讲解Oracle数据库中,获取SQL语句执行计划的最权威.最正确的方法.步骤,此外,还详细说明了每种方法中可选项的意义及使用方法,以方便大家和自己日常工作中查阅使用,因本人未发现本博客支持附件上传功能,需要PDF文件格式的朋友可向我要,也可到群里下载,转载请注明出处. 1.查询v$sql_plan: SQL> col "Query Plan_Table" format a100 SQL> select id,lpad(' ', 2*(…
一.什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述 二.怎样查看Oracle执行计划? 2.1 explain plan for命令查看执行计划 在sql*plus中,执行如下命令: 1)explain plan for select * from XXXX; 2)select * from table(dbms_xplan.display); 2.2 SET AUTOTRACE ON查看执行计划 语法:SET AUTOT[RACE] {OFF |…
oracle 中对查询出来的数据进行切割.截取等操作 最近遇到一个问题,需要把一个带有,的字符串拆分成多行.通过查询资料,这个操作需要使用以下2个关键知识: 1. REGEXP_SUBSTR函数 这个函数的作用是正则分隔字符串,用法为 function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier) __srcstr     :需要进行正则处理的字符串 __pattern    :进行匹配的正则表达式 __positi…
编写了一个oracle函数,函数体内实现一系列数据库的逻辑处理,涉及到数据的增删等操作,返回NCLOB类型. 然后通过查询方式调用函数: SELECT PKG.MY_FUN('A') FROM DUAL; 执行该sql报错:ORA-14551: 无法在查询中执行 DML 操作 处理方式:将函数修改为自治事务.加上 PRAGMA AUTONOMOUS_TRANSACTION 语句 示例如下: FUNCTION CALCULATE_MONTH_BONUS_DETAIL (CUR_MONTH IN N…
第一种方法 cat test.sh #!/bin/bashsu - test <<EOFpwd;exit;EOF 执行结果图: 第二种方法 当然也可以用下面的命令来执行 复制代码代码如下: su - test -c "pwd" ps: 切换用户只执行一条命令的可以用: su - oracle -c command切换用户执行一个shell文件可以用:su - oracle -s /bin/bash shell.sh 转自 Shell脚本中实现切换用户并执行命令操作_linu…
快速向表中插入大量数据Oracle中append与Nologging 2017-05-05 / VIEWS: 304 来源于:http://blog.sina.com.cn/s/blog_61cd89f60102e7gi.html 当需要对一个非常大的表INSERT的时候,会消耗非常多的资源,因为update表的时候,oracle需要生成 redo log和undo log;此时最好的解决办法是用insert, 并且将表设置为nologging;当把表设为nologging后,并且使用的inse…
Oracle中的一些查询语句及其执行顺序 原文地址:https://www.cnblogs.com/likeju/p/5039115.html 查询条件: 1)LIKE:模糊查询,需要借助两个通配符,%:表示0到多个字符:_:标识单个字符. 2)IN(list):用来取出符合列表范围中的数据. 3)NOT IN(list): 取出不符合此列表中的数据记录. 4)BETWEEN…AND…:用来查询符合某个值域范围条件的数据,最常见的是使用在数字类型的数据范围上,但对字符类型和日期类型数据也同样适用…
在做实验的时候,编写关于"在存储过程中使用动态sql,建立一个统计表,并把统计结果,插入这个表中"的PL/sql语句在执行时出现权限不足的问题. 上网查询很多,看到了下面这篇博文(解决了我的问题) 两种解决办法 在编写存储过程时加上authid current_user 通过sys用户显式进行系统权限grant create table to hr(相应的用户名); 转载来的博文: create or replace procedure p_create_table Authid Cu…
对于“化身”Incarnation概念了解之后,本篇通过手工恢复实验来具体操作演示,加深对Incarnation的理解,来自于博客园AskScuti. 你可以点击此处查看<概念理解篇>. 目录 1. 官方图示例 2. 场景模拟 3. 实验步骤 3.1 备份数据库(略) 3.2 查询当前数据库化身版本 3.3 按场景模拟操作 3.4 恢复出B表并打开数据库 3.5 查询当前数据库化身版本 3.6 恢复出A-6(修改当前化身)并打开数据库 3.7 查询当前数据库化身版本 1. 官方图示例 在官方文…
在看<MySQL 5.1参考手册>的时候,发现MySQL提供了一种两表关联update操作.原文如下: UPDATE items,month SET items.price=month.price WHERE items.id=month.id; 在MySQL中构造表验证了一下 mysql> select * from test; +------+--------+ | id | salary | +------+--------+ | | | +------+--------+ row…
Oracle中执行存储过程call和exec区别 在sqlplus中这两种方法都可以使用: exec pro_name(参数1..); call pro_name(参数1..); 区别: 1. 但是exec是sqlplus命令,只能在sqlplus中使用:call为SQL命令,没有限制. 2. 存储过程没有参数时,exec可以直接跟过程名(可以省略()),但call则必须带上().…