
ORACLE技术笔记
文章平均质量分 58
luck2001
这个作者很懒,什么都没留下…
展开
-
多列转行命令
将stats$sqltext 里的SQL语句连成一行出力★sys_connect_by_pathselect hv,'"'|| replace(st,'^','') || '"'from(select old_hash_value hv,rn r, sys_connect_by_path(sql_text,'^') stfrom ( select old_hash_val原创 2015-06-18 17:23:36 · 405 阅读 · 0 评论 -
ORACLE里SQL语句的执行计划(二)
1. autotrace 命令set autotrace on 表示输出SQL的结果,以及执行计划和统计信息set autotrace traceonly 表示不输出SQL的结果;但是输出执行计划和统计信息set autotrace traceonly explain 表示进输出执行计划原创 2015-07-16 14:27:24 · 291 阅读 · 0 评论 -
Parallel多线程使用
对于一个大的任务,一般的做法是利用一个进程,串行的执行,如果系统资源足够,可以采用parallel技术,把一个大的任务分成若干个小的任务,同时启用n个进程/线程,并行的处理这些小的任务,这些并发的进程称为并行执行服务器(parallel executeion server),这些并发进程由一个称为并发协调进程的进程来管理。启用Parallel前的忠告:只有在需要处理一个很大的任务,如需要几原创 2015-06-25 14:28:29 · 1145 阅读 · 0 评论 -
最大record对应数据的取得
① row_number() over(PARTITION的用法SELECT code, BIR_YMDFROM(SELECT t.code, t.bir_ymd, t.name, row_number() over(PARTITION BY t.code ORDER BY t.bir_ymd D原创 2015-08-19 09:19:14 · 262 阅读 · 0 评论 -
如何用cmd对SVN进行更新,并且将文件压缩解压
1.update.bat@echo offcd /D %~dp0call bin\svnupdate.batcall bin\zip.batexit 2.svnupdate.batsvn update "D:\AA\trunk\release1"svn update "D:\AA\trunk\release2" 3.zip.bat@echo off原创 2015-07-31 09:39:33 · 2170 阅读 · 2 评论 -
ORACLE的任务DBMS_JOB.SUBMIT的使用------JOB
在一个PROCEDURE里面有多个对表操作的处理,由于速度比较慢可以用多个任务(JOB)同时操作,这样就可以缩短时间。如果是必须最后提交事务的话,多线程里面可以用中间表进行过渡。1,创建JOBDBMS_JOB.SUBMIT(n_JOBNO, v_proc, next_date, 'interval' );COMMIT;注意:job执行完必须COMMIT,也就是说事务是独立的原创 2015-10-23 10:45:53 · 3915 阅读 · 0 评论 -
快速向表中插入大量数据Oracle中append与Nologging
当需要对一个非常大的表INSERT的时候,会消耗非常多的资源,因为update表的时候,oracle需要生成 redo log和undo log;此时最好的解决办法是用insert, 并且将表设置为nologging;当把表设为nologging后,并且使用的insert时,速度是最快的,这个时候oracle只会生成最低限度的必须的redo log,而没有一点undo信息。如果有可能将index也转载 2015-07-08 13:13:20 · 1550 阅读 · 0 评论 -
单纯BLOCK的执行
SET SERVEROUTPUT ON;DECLARE /* 宣言セクション */BEGIN /* 実行可能セクション */EXCEPTION /* 例外セクション */ DBMS_OUTPUT.PUT_LINE(TO_CHAR(CURRENT_TIMESTAMP,'YYYY/MM/DD HH24:MI:SS') ||' 例外発生:'||SQLCODE||'原创 2015-11-09 12:48:25 · 174 阅读 · 0 评论 -
动态SQL执行的几种方法
①最简单常用的方法v_sql := ' INSERT INTO TB1 ( COL1, COL2, COL3, COL4 ) SELECT COL1 , COL2 , COL3 , ' || '''' || V_NAME |原创 2015-11-09 13:31:34 · 488 阅读 · 0 评论 -
将执行结果输出到CSV文件里
set linesize 1000set pagesize 1000set time on timing onset null '#'set colsep ','set trimspool onset heading onset echo offcol batchname format a40col batchstart format a26col batc原创 2015-11-09 12:54:40 · 2189 阅读 · 0 评论 -
一个bat文件执行多个SQL文本
①exec_proc.batsqlplus /nolog @exec_proc.sql "20150701" "20150725" 0 1 >exec_proc.log ②exec_proc.sqlSET echo off;connect userid/pwd@数据库连接SET SERVEROUTPUT ON;exec SPB_PROC1(&3); -- 过程1原创 2015-11-09 13:06:29 · 693 阅读 · 0 评论 -
为了一条条的对数据库操作,怎样生成update之类的DML语句
SELECT'UPDATE TB1 SET '||'COL_DCNT = '|| COL_DCNT ||' WHERE KAISYACD = 1001001 AND '||' KYUYONGT = '''|| COL1 ||''' AND '||' COL2 = '''|| COL2 ||''';'FROM (SELECT TO_CHAR(ADD_MONTHS(TO_原创 2015-11-09 14:32:58 · 407 阅读 · 0 评论 -
Oracle的REDO和UNDO
什么是REDO REDO记录transaction logs,分为online和archived。以恢复为目的。 比如,机器停电,那么在重起之后需要online redo logs去恢复系统到失败点。 比如,磁盘坏了,需要用archived redo logs和online redo logs区恢复数据。 比如,truncate一个表或其他的操作,想恢复到之前的状态,同样也需要。 什么转载 2016-07-29 16:47:25 · 254 阅读 · 0 评论 -
用管理员身份登录oracle数据库
sqlplus /nologconnect system/MANAGER@instance1connect sys/CHANGE_ON_INSTALL@instance1 AS SYSDBA原创 2016-09-27 09:42:59 · 11982 阅读 · 0 评论 -
Oracle里的执行计划(一)
2.1 什么是执行计划 Oracle用来执行目标SQL语句的这些步骤的组合就被称为执行计划。 执行计划可以分为如下三个部分: 1、目标SQL的正文、SQL ID和其执行计划所对应的的PLAN HASH VALUE。 2、执行计划的主体部分。 可以看到Oracle在执行目标SQL时所用的内部执行步骤,这些步骤的执行顺序,所对应的的谓词信息、列信息,优化器评估出原创 2015-06-17 09:36:20 · 417 阅读 · 0 评论 -
PLSQL内用TRUNCATE删除表
BEGIN SELECT NVL(MAX(TABLE_OWNER || '.' || TABLE_NAME), 'TBLNAME`) INTO v_table FROM USER_SYNONYMS WHERE SYNONYM_NAME = UPPER('TBLNAME') ;EXCEPTION WHEN OTHERS TH原创 2015-07-16 14:07:38 · 3178 阅读 · 0 评论 -
UPDATE 用法总结
①update 表a set (a.字段1,a. = (select b.字段1 from 表b where a.字段2=b.字段2) where exists(select 1 from 表b where a.字段2=b.字段2)。 ② MERGE INTO TABLE1 A USING (SELECT CODE,NAME原创 2015-07-06 13:27:44 · 6988 阅读 · 0 评论 -
SQL*LOADER的使用总结
1.sql loader 的特点oracle自己带了很多的工具可以用来进行数据的迁移、备份和恢复等工作。但是每个工具都有自己的特点。比如说exp和imp可以对数据库中的数据进行导出和导出的工作,是一种很好的数据库备份和恢复的工具,因此主要用在数据库的热备份和恢复方面。有着速度快,使用简单,快捷的优点;同时也有一些缺点,比如在不同版本数据库之间的导出、导入的过程之中,总会出现这样或者那样的问原创 2015-06-18 17:26:38 · 672 阅读 · 0 评论 -
SYNONYM和权限用法
1,SYNONYMOracle中同义词是任何表、视图、物化视图、序列、存储过程、函数、包、类型、JAVA类对象、用户定义类型,或是其他的同义词的别名。由于其只是一个别名,所以除了在数据字典中的定义不占任何空间。①table,vieworg表空间里访问sch的表,并且赋予操作权限CREATE OR REPLACE SYNONYM ORG.table_test FOR SCH.ta原创 2015-06-18 17:45:49 · 1987 阅读 · 0 评论 -
(转)SQL 优化原则
一、问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统不转载 2015-06-23 17:29:42 · 194 阅读 · 0 评论 -
查看正在执行中的SQL
1.查询Oracle正在执行的sql语句及执行该语句的用户SELECT TO_CHAR(SES.LOGON_TIME, 'HH24:MI:SS') AS LOGON_TIME, SES.USERNAME AS LOGON_USER, SES.SID原创 2015-06-25 13:39:41 · 655 阅读 · 0 评论 -
statspack使用方法小结
oracle statspack的原理,安装,使用,生成报告等过程和方法等等可以参照下面的链接,非常详细的讲解。http://www.itpub.net/thread-1283478-1-1.htmlsprepins.sql里的SQL加工了一下,然后便于拷贝到EXCEL里prompt ※※※※※実行SQL取得※※※※※prompt ---- SQL statemen原创 2015-06-25 13:50:35 · 436 阅读 · 0 评论 -
实体化视图( materialized view )
相对于普通的视图来说,实体化视图的不同之处在于实体化视图管理存储数据,占据数据库的物理空间。实体化视图的结果会保存在一个普通的数据表中,在对实体化视图进行查询的时候不再会对创建实体化视图的基表进行查询,而是直接查询实体化视图对应的结果表,然后通过定期的刷新机制来更新MView表中的数据。[refresh [fast | complete | force] [on dem原创 2015-06-25 15:21:12 · 1705 阅读 · 0 评论 -
数据导入与导出-----exp imp
数据导出: 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中 exp system/manager@TEST file=d:\daochu.dmp full=y 2 将数据库中system用户与sys用户的表导出 exp system/manager@TEST file=d:\daochu.dmp owner=(sys转载 2015-06-25 14:17:54 · 238 阅读 · 0 评论 -
日期时间操作总结
①两个日期时间相差多少秒SELECT SUBSTRB(TO_CHAR(batchstart,'YYYY-MM-DD HH24:MI:SS.FF'),1,23) batchstart , SUBSTRB(TO_CHAR(batchend,'YYYY-MM-DD HH24:MI:SS.FF'),1,23) batchend , EXTRACT(DAY FROM原创 2015-07-10 14:51:03 · 318 阅读 · 0 评论 -
Flashback的用法
一,对于数据操作1,基于时间的查询 as of timestamp查询五分钟前的数据,如果五分钟前删除过一条数据,下列语句就可以查出包含删除的数据select * from TB_WAG_KIHON_TRR as of timestamp sysdate-5/1440 2,基于SCN的查询 AS OF SCN①查看当前SCNSELECT CURRENT_SCN FROM原创 2015-07-03 15:20:22 · 608 阅读 · 0 评论 -
触发器总结
触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。并且,触发器不能接收参数。所以运行触发器就叫触发或点火(firing)。ORACLE事件指的是对数据库的表进行的INSERT、UPDATE及DELETE操作或对视图进行类似的操作。ORACLE将触发器的功能扩展到了触发ORAC原创 2015-06-24 14:17:14 · 480 阅读 · 0 评论 -
NOT EXIST和NOT IN 和MINUS的用法
①NOT EXISTS一般都会比较慢UPDATE ASET DATE=sysdateWHERE LINK_TAISHOGAI_FG = '0' AND NOT EXISTS (SELECT 1 FROM FROM B WHERE A.ID1= B.ID1 AND A.ID2 = B.ID2 AND A.ID3 = B.ID3 A原创 2015-07-15 15:28:19 · 1325 阅读 · 0 评论 -
oracle快速向表中插入记录方法
1:用merge into 进行匹配更新和插入,2: 开启并行,提高速度3: 如果可以的话加NOLOGING 不写入日志4:如果数据有规律的话,分批次执行1.使用marge快速插入;MERGE /*+ append */ INTO A dUSING (select * B where ...) f ON (d.account_no = f.account_转载 2015-07-16 15:01:32 · 2002 阅读 · 0 评论 -
Non Schema Object 的取得
Non Schema Object就是数据库在移行的时候,下面的对象是不包含在dmp文件里面的。需要用sql取出然后登录到新的库里。******************************************************connect system/manager@pxs11show userselect instance_name from v$instanc原创 2016-09-27 09:53:26 · 277 阅读 · 0 评论