摘要:
数据库版本 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit 测试代码 declare p_cur sys_refcursor; v_ename varchar2(50); procedure pro_1(p_cur out sys_refcurso... 阅读全文
摘要:
关于DML Error Logging效率的问题,摘自网上一篇文章,作为单独一篇说明,原文如下: DML Error Logging in Oracle 10g Database Release 2 In some situations the most obvious solution to a problem is a DML statement (INSERT ... SELECT,UPD... 阅读全文
摘要:
Oracle dml操作过程中可能出现键重复或者数据类型不一致等问题,一般进行数据处理时候需要对这些可能出现的错误提前考虑,避免更新失败。Oralce给出了一些其他解决方案,以在不同场景下使用。 1、ignore_row_on_dupkey_index HINT Oracle 11.2.0.1 版本 阅读全文
摘要:
网上流传众多列数据聚合方法,现将各方法整理汇总,以做备忘。 wm_concat 该方法来自wmsys下的wm_concat函数,属于Oracle内部函数,返回值类型varchar2,最大字符数4000。随着版本的变更返回值类型可能会有改动,项目中使用时候最好在新的用户下创建一个函数。 使用方法: s 阅读全文
摘要:
Oracle ORA-07445 evaopn2()+128错误问题 问题描述 Plsql developer执行一段sql报错: 经查alert log详细报错信息为: ORA-07445: exception encountered: core dump [evaopn2()+128] [SIGSEGV] [Address not mapped to object] [0x... 阅读全文
摘要:
需求 Oracle调用第三方外部程序。Oracle使用sqluldr2快速导出大批量数据,然后用winrar压缩后发送邮件。 本文档主要实现前两步需求,发送邮件程序这里不再说明。 原码 授权 begin dbms_java.grant_permission('SCOTT','SYS:java.io.FilePermission','>','read,write,execute,delete'... 阅读全文
摘要:
ORACLE RETURNING 用法总结 场景 在存储过程、PL/SQL块里需要返回INSERT、DELETE、UPDATE、MERGE等DML语句执行后的信息时使用,合理使用returning能够简化程序逻辑、提高程序性能。 概述 创建测试表 create table hh_emp_test as select * from scott.emp; 使用returning语句 dec... 阅读全文
摘要:
利用函数返回结果集方法总结 返回结果集函数可以将变量值传递给函数得到指定的结果集,优点在于灵活控制结果集变量及输出,不用将sql嵌入到页面代码里,业务逻辑如有更改可以直接在数据库中维护。 现总结三种方法:OBJECT TYPE、OBJECT TYPE+PIPE ROW、RECORD+PIPE ROW OBJECT TYPE TYPE定义 create type tp_obj_emp as ... 阅读全文
摘要:
很早以前写的,今天无意中看到,感悟颇深,贴出来有空看看吧,以下正文: 分隔线 那些不能消灭我的,必使我强大!--尼采 当幸福来敲门,这部电影在大学时候看了第一次,之后又看了2、3次的样子,威尔史密斯是我喜欢的演员,他的《七磅》也同样精彩,这篇文字不算是影评,因为影评,涉及范围太广,包括演员演技,灯光 阅读全文
摘要:
oracle导出excel(非csv)的方法有两种,1、使用sqlplus spool,2、使用包体 现将网上相关代码整理后贴出以备不时之需: 使用sqlplus: 使用sqlplus需要两个文件:sql脚本文件和格式设置文件。 sql脚本,get_tables.sql 然后在sqlplus下运行 阅读全文
摘要:
包体内容,包头: 包体: 阅读全文
摘要:
Oracle连接odbc数据源 oracle连接ODBC数据源有两种方式,hsodbc和dg4odbc,简单说dg4odbc是hsodbc的升级。两种连接方法大致一样,现将连接步骤说明如下: 方法如下: 在Oracle服务器上,cmd窗口中执行命令(dg4odbc或hsodbc) ODBC数据源必须 阅读全文
摘要:
1、use_concat 网上说法: CONCATENATION和UNION/UNION ALL操作比较类似,根据OR查询条件,将一个查询分解为两个或更多的部分,然后在去掉两个部分重复的记录。由于CONCATENATION执行计划需要去掉重复的记录,因此和UNION ALL不同。和UNION也不同的 阅读全文
摘要:
工作和学习中常常会遇到一行要分割成多行数据的情况,在此整理一下做下对比。 单行拆分 如果表数据只有一行,则可以直接在原表上直接使用connect by+正则的方法,比如: select regexp_substr('444.555.666', '[^.]+', 1, level) col from dual ... 阅读全文
摘要:
一、前言 Oracle建议对于索引深度超过4级以及已删除的索引条目至少占有现有索引条目总数的20% 这2种情形下需要重建索引。有人持不同观点,就是强烈建议不要定期重建索引。索引重建是一个争论不休被不断热烈讨论的议题。 1、重建索引的理由 a、Oracle的B树索引随着时间的推移变得不平衡(误解) b、索引碎片在不断增加 c、索引不断增加,删除的空间没有重复使用 d、索引 c... 阅读全文
摘要:
Oracle策略可以限制查询、修改、删除、新增等操作,刚接触,对查询做一个测试:参照http://blog.csdn.net/diyyong/article/details/19552637用法如下:begin -- Call the procedure sys.dbms_rls.add_pol... 阅读全文
摘要:
partition outer join实现将稀疏数据转为稠密数据,举例:with t as (select deptno, job, sum(sal) sum_sal from emp group by deptno, job),tt as (select distinct job from t)... 阅读全文
摘要:
《基于Oracle的sql优化》里关于哈希连接的原理介绍如下: 哈希连接(HASH JOIN)是一种两个表在做表连接时主要依靠哈希运算来得到连接结果集的表连接方法。 在Oracle 7.3之前,Oracle数据库中的常用表连接方法就只有排序合并连接和嵌套循环连接这两种,但这两种表连接方法都有其明显缺陷。对于排序合并连接,如果两个表在施加了目标SQL中指定的谓词条件(如果有的话)后得到的结果集... 阅读全文
摘要:
当两个或多个用户相互等待锁定的数据时就会发生死锁,这时这些用户被卡在不能继续处理业务,oracle可以自动检测死锁并解决他们,通过回滚一个死锁中的语句,释放锁定的数据,回滚的话会遇到ora-00060 deadlock detected while waiting for resourceoracl... 阅读全文
摘要:
对于数据量较大的插入操作可采用此种方法操作,注意: limit减少内存占用,如果数据量较大一次性全部加载到内存中,对PGA来说压力太大,可采用limit的方法一次加载一定数量的数据,建议值通常为1000。使用limit时注意,循环的时候如果用while cursor_name%found loop,对于最后一次fetch的数据量不足设定值1000,%found条件就会不成立。示例使用v_o... 阅读全文
摘要:
回表 简单来说就是数据库根据索引找到了指定的记录所在行后,还需要根据rowid再次到数据块里取数据的操作。 "回表"一般就是指执行计划里显示的"TABLE ACCESS BY INDEX ROWID"。 例如select的字段里有索引不包含的列 根据tom的oracle编程艺术,建表big_table,300W数据。 建索引: create index idx_big_table_cre... 阅读全文
摘要:
1、PL/SQL解释计划窗口 优点:方面 缺点:看到信息有限 2、explain_plan for 针对某个句子优化较方便 3、sqlplus Sqlplus里输入命令: set autotrace on select * from emp; 数据显示出来后,跟着执行计划: 这个语句的优点就是它的缺点,这样在用该方法查看执行时间较长的sql语句时,需要等待该语句执行成功后,才返回执行... 阅读全文
摘要:
1三者的字典表 1.1用户 select*fromdba_users; select*fromall_users; select*fromuser_users; 1.2角色 select*fromdba_roles; 1.3权限 分为系统权限与对象权限: select*fromsystem_privileg... 阅读全文
摘要:
with t as (select to_timestamp('2015-01-01 11:13:15.023456', 'yyyy-mm-dd hh24:mi:ss.ff9') t1, to_timestamp('2015-01-01 12:13:15.123556', 'yyyy-mm-dd hh2... 阅读全文
摘要:
索引范围扫描(index range scan) select empno,ename from emp where empno > 1 order by empno 这种情况下不会使用索引范围扫描? 可能的答案:Oracle优化器会自动选择较优... 阅读全文
摘要:
今天遇到一个关于SQL转换成Oracle语句的问题,描述如下:select * from emp order by deptno; select * from dept; Sql Server:update dept a set dname=(select top 1 ename from emp ... 阅读全文
摘要:
层次查询 select * from emp; select empno, ename, job, mgr, sal, deptno,level lv, sys_connect_by_path(ename, ... 阅读全文
摘要:
表连接注意left join on与where的区别: select * from dept; select * from emp; select * from emp a right outer join dept b on a.deptno=b.deptno ... 阅读全文
摘要:
数据字典-简介 Oracle数据字典的名称由前缀和后缀组成,使用下划线"_"连接,其代表的含义如下: ● DBA_:包含数据库实例的所有对象信息。 ● V$_:当前实例的动态视图,包含系统管理和系统优化等所使用的视图。 ● USER_:记录用户的对象信息。 ● GV_:分布式环境下所有实例的动态视图,包含系统管理和系统优化使用的视图。 ● ALL_:记录用户的对象信息机被授权访问的对象信息。 ... 阅读全文
摘要:
从Oracle 10g开始,甲骨文公司新增了XQuery和XMLTable两个功能作为处理XML的武器。 XMLQuery一样,您可以使用XQuery语言构造XML数据和查询XML和关系数据。你可以使用XMLTable从XQuery查询结果创建关系表和列。 本文我们将了解OracleXMLTable函数,并且通过例子介绍XMLTable函数的用法。 考虑到员工会有一些... 阅读全文
摘要:
oracle的SGA:数据库的系统全局区,SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。 共享池又由两部分构成:共享SQL区和数据字典缓冲区。 共享SQL区专门存放用户SQL命令,oracle使用最近最少使用等优先级算法来更新覆盖;数据字典缓冲区(library cache)存放数据库运行 阅读全文
摘要:
--varchar,varchar2 联系: 1.varchar/varchar2用于存储可变长度的字符串 比如varchar(20),存入字符串'abc',则数据库中该字段只占3个字节,而不是20个字节 2.size 的最大值是 4000,而最小值是 1,其值表示字节数,比如 varchar(20)表示最大可以存放20个字节的内容 区别: 1.varchar2把所有字符都占两字节处理(一般情况下... 阅读全文
摘要:
Listaggselect * from empselect LISTAGG(ename,'-') within group (order by deptno desc) from emp;可以看到功能类似wm_concat,可以自定义连接符,区别: LISTAGG : 11g2才提供的函数,不支持... 阅读全文
摘要:
多行转字符串 这个比较简单,用||或concat函数可以实现 SQL Code 12selectconcat(id,username)strfromapp_userselectid||usernamestrfromapp_user字符串转多列 实际上就是拆分字符串的问题,可以使用 substr、instr、regexp_substr函数方式 字符串转多... 阅读全文
摘要:
Oracle发邮件,权限问题 - 创建 ACL BEGIN DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(acl => 'email_server_permissions.xml', description => 'Enables network permissions for 阅读全文
摘要:
启动oracle服务有三种方式:1 从控制面板2 使用MS-DOS命令3 通过Oracle Administration Assistant for WindowsNT -通过控制面板启动oracle服务1)选择开始 > 控制面板 〉管理工具 --〉服务2)找到你所要启动的oracle服务,单击启动 -通过MS-DOS命令启动oracle服务1)打开DOS窗口2)在窗口中输入:NET... 阅读全文
摘要:
1、启动oracle数据库: 从root切换到oracle用户进入:su - oracle 进入sqlplus环境,nolog参数表示不登录:sqlplus /nolog 以管理员模式登录:sqlplus / as sysdba 启动数据库startup;停止数据库shutdown immediate远程连接数据库sqlplus /nologconn sys/sys@ip:1... 阅读全文
摘要:
Oracle 11g有多个版本可供选择:标准版1、标准版和企 业版。所有这些版本都使用相同的通用代码库构建,这意味着企业的数据库管理软件可以轻松地从规模较小的单一处理器服务器扩展到多处理器服务器集 群,而无需更改一行代码。Oracle数据库11g企业版还有许多其他增强了性能、可伸缩性、可用性、安全性和可管理性的功能选项。 主要功能汇总简化版10g标准版1标准版企业... 阅读全文
摘要:
数据库名:概念:数据库名是用于区分一个数据库的内部标识,是以二进制方式存储于数据库控制文件中的参数,在数据库安装或创建之后将不得修改,数据库安装完成之后,该参数呗写入pfile中。pfile中有的参数能修改,有的不能修改。如果db_name被修改,用pfile启动时候会报以下错误:SQL> star... 阅读全文
摘要:
导入jar包 在oracle中导入需要的jar包,我们把编辑好的java类打成jar包,直接在oarcle里面写简单的调用就可以了, 1、操作系统需要拥有支持loadjava命令的jdk。 2、加载jlha.jar包,到oracle数据库中。 操作过程:在dos环境下,输入命令: loadjava 阅读全文