2012-05-24 22:28 by 潇湘隐者, 766 visits, 网摘, 收藏, 编辑
摘要:基于ORACLE的应用系统很多性能问题,是由应用系统SQL性能低劣引起的,所以,SQL的性能优化很重要,分析与优化SQL的性能我们一般通过查看该SQL的执行计划,本文就如何看懂执行计划,以及如何通过分析执行计划对SQL进行优化做相应说明。一、什么是执行计划(explain plan)执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述。二、如何查看执行计划1: 在PL/SQL下按F5查看执行计划。第三方工具toad等。很多人以为PL/SQL的执行计划只能看到基数、优化器、耗费等基本信息,其实这个可以在PL/SQL工具里面设置的。可以看到很多其它信息,如下所示2: 在SQL*PLUS
阅读全文
2012-05-19 22:57 by 潇湘隐者, 26 visits, 网摘, 收藏, 编辑
摘要:下载安装文件先去ORACLE官方网站下载所需版本的Instant Client Package 和 Instant Client Package - SQL*Plus安装包,(千万注意版本)http://www.oracle.com/us/solutions/linuxx86-64soft-092277.htmlhttp://www.oracle.com/technetwork/topics/linuxsoft-082809.html这两个地址分别是linux 32和64位操作系统的下载地址。我下载了如下几个安装文件basic-10.2.0.4.0-linux-x86_64.zipsqlplu
阅读全文
2012-05-17 22:43 by 潇湘隐者, 158 visits, 网摘, 收藏, 编辑
摘要:在ORACLE里面,远程数据访问,像查询、更新等可以通过Database Link来实现。数据库连接需要在建立Database Link的两台机子上都运行Oracle Net(以前叫SQL*NET 和NET 8)。 语法如下1 Database Link 的创建:有两个数据库服务器A/B, 其中A的IP地址为172.20.36.245, 服务器B为本机。服务器B上的数据库实例名为ORCL,在本机上的服务监听配置上有服务器A上实例配置:BIWG_TEST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.36.245)(PORT =
阅读全文
2012-05-16 23:48 by 潇湘隐者, 83 visits, 网摘, 收藏, 编辑
摘要:在安装ORACLE安装的时候,报如下错误:ORA-12154: TNS:could not resolve the connect identifier specified。如下图所示: 折腾了很久才找到罪魁祸首:原来在安装数据库时,设置用户密码的时候里面包含了@符号,引起了这个错误,这个错误倒是有点诡异,应该是ORACLE连接DB时就把口令@后面的串当连接字用了。所以切记注意这个,否则很难发现问题。
阅读全文
2012-05-15 23:44 by 潇湘隐者, 574 visits, 网摘, 收藏, 编辑
摘要:VMWARE + REDHAT + ORA10先说一下环境,操作系统为Microsoft Windows Server 2003,安装的是虚拟机VMware Workstation Version 7.1.2 build-301548,虚拟机上选择安装的是Redhat Enterprise Linux 5。1:安装虚拟机工具:虚拟机工具是VMware虚拟机中自带的一种增强工具,相当于VirtualBox中的增强功能(Sun VirtualBox Guest Additions),可以大幅度的增强虚拟机和主机的交互能力,和显著提供虚拟机的性能。比如,安装虚拟机工具后,虚拟机的显示效果会增强。另一
阅读全文
2012-05-13 08:36 by 潇湘隐者, 796 visits, 网摘, 收藏, 编辑
摘要:你对ORACLE约束的了解如何?比较模糊还是相当透彻?如果你对下面几个问题了如指掌的话,恭喜你,你已经对约束掌握得比较好了,不用看这篇文章了。ORACLE的约束有啥功能作用? 有哪些类型约束(不同版本ORACLE是否不同)?视图有约束吗?约束是否会影响SQL性能? 约束信息存储在哪些系统视图、数据字典中?约束能否修改名称?能否禁用约束?延迟约束有啥好处.......约束定义约束是强加在表上的规则或条件。确保数据库满足业务规则。保证数据的完整性。当对表进行DML或DDL操作时,如果此操作会造成表中的数据违反约束条件或规则的话,系统就会拒绝执行这个操作。约束可以是列一级别的 也可以是表级别的。定义
阅读全文
2012-05-08 23:50 by 潇湘隐者, 8 visits, 网摘, 收藏, 编辑
摘要:【转自http://www.chinaunix.net/jh/19/272188.html】裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备。本文收集裸设备和Oracle问答20例。 1.什么叫做裸设备? 裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备。它由应用程序负责对它进行读写操作。不经过文件系统的缓冲。 2.如何辨别裸设备? 在Unix的/dev目录下,有许多文件,其中有两个大类:字符设备文件和块设备文件。 字符设备特殊文件进行I/O操作不经过操作系统的缓冲区,而块设备特殊文件...
阅读全文
2012-04-17 22:18 by 潇湘隐者, 136 visits, 网摘, 收藏, 编辑
摘要:"历史总是上演惊人的相似", 在技术开发过程中,你也会总会碰到惊人相似的问题,这段时间我就碰到了”ORA-01031:insufficient privileges 权限不足”这个错误多次,一次是自己,一次是同事碰到的,顺便整理了下这个知识点。情况一:如果数据库实例安装在服务器A上,你用管理员权限Administrator登录后,使用SQL> conn system/manage as sysdba登录 没有问题。但是如果你在服务器A上建立一个etl账号,使它率属于Remote Desktop Users 和Users 组,如下所示:此时你用sys账号登录数据库时,就
阅读全文
2012-04-12 00:22 by 潇湘隐者, 222 visits, 网摘, 收藏, 编辑
摘要:今天有个同事问我一个问题,描述如下: 有一个日志信息表,对应同一个ID,可能有一条、两条、三条不同状态的记录。例如ID= 10001的日志记录可能有三条,一条记录状态为正确, 一条记录状态为错误, 一条记录状态是未知。也有可能只有其中一条记录或两条,现在的问题是,对应同一日志ID,我们只需要取一条记录,取数规则是:1:如果有状态为正确、错误、未知三条记录,我们只取状态为正确的记录。2:如果只有状态为正确、错误状态两条记录的,我们只取状态为正确的记录3:如果只有状态为错误、未知记录两条记录的,我们只取状态为错误的记录4:如果只有状态为正确、未知记录两条记录的,我们只取状态为正确的记录5:如果只有
阅读全文
2012-04-03 13:24 by 潇湘隐者, 170 visits, 网摘, 收藏, 编辑
摘要:在安装ORACLE 11G 过程中由于配置的原因,安装过程中报了如下错误:按照安装提示执行后面的操作后,打开PL/SQL DEVELOPER 连接数据库时总报ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务!ORACLE NET MANAGER里面测试,测试服务是否能够成功。结果还是报如上错误在网上百度了一下这个错误ORA-12514,原来很多人都碰到过这个问题,于是按照别人的处理步骤依依配置了,这个问题解决了,不过还是觉得有必要把这个问题解决的步骤记录下来,一来让自己能跟深刻的体会一下,锻炼一下总结能力,二来可以帮助到以后碰到这个问题的人。先找到找到listener
阅读全文
2011-07-24 13:07 by 潇湘隐者, 780 visits, 网摘, 收藏, 编辑
摘要:大家都知道ORACLE 10G新增了FLASHBACK特性,其中FLASHBACK TABLE用来对误删的表进行修复。但是今天却发现了FLASHBACK TABLE的一个有趣问题,请看下面慢慢道来:下面我用一个例子来说明我的遇到的有趣的问题,欢迎大家探讨。SQL>CONNECTSYSDBA/*****ASSYSDBA已连接。SQL>CREATETABLETEST(TVARCHAR2(10));表已创建。SQL>DROPTABLETEST;表已删除。SQL>FLASHBACKTABLETESTTOBEFOREDROP;FLASHBACKTABLETESTTOBEFORED
阅读全文
2011-07-10 18:01 by 潇湘隐者, 205 visits, 网摘, 收藏, 编辑
摘要:本篇介绍一下一些不太常用的脚本,它们往往有“奇能异效”,但是由于不太常用、不常见、或效率方面的原因,往往被大多数人给遗忘在某些角落里。呵呵,不知道你看见下面这些脚本,是否觉得眼熟呢?1: 如果我需要从SCOTT模式下EMP表中查询职位为CLERK(秘书)、SALESMAN(销售人员)这两种员工,你会怎么写?是下面哪种写法呢?SELECT*FROMSCOTT.EMPWHEREJOB=ANY('CLERK','SALESMAN')/SELECT*FROMSCOTT.EMPWHEREJOBIN('CLERK','SALESMAN')/A
阅读全文
2011-07-03 12:23 by 潇湘隐者, 194 visits, 网摘, 收藏, 编辑
摘要:Oracle数据库里面,如果已经创建了一个表,创建时没有给表进行分区,现在由于性能等方面原因需要对该表创建分区。能否直接把一个未分区的表修改成分区表呢(即能否通过ALTER语句把该表修改成分区表呢)?答案是不能,至少目前版本不能。但是可以对已分区表增加新分区、合并分区、删除分区等一系列操作。如果要对对未分区表A创建分区,可以用下面的方法:把原表改名为B,然后创建分区表A,再把表B的数据导入A。
阅读全文
2011-07-03 12:16 by 潇湘隐者, 1171 visits, 网摘, 收藏, 编辑
摘要:ORACLE数据库如何查看分区表的相关信息呢?不知道你有没有总结过这方面的知识。下面我们先创建两个表TEST、GPRS_CELLTOPVOL_WK来做实验,脚本如下:CREATETABLEGPRS_CELLTOPVOL_WK(DATE_CDNUMBER(8)NOTNULL ,WK_CDNUMBER(2)NOTNULL ,CITY_IDNUMBER(10) ,CELL_EN_NAM VARCHAR2(64)NOTNULL,CELL_CN_NAM VARCHAR2(64)NOTNULL,CELL_VOL NUMBER ,CELL_VOL_PCT NUMBER ,AVG_RATNUMBER ,CON
阅读全文
2011-06-23 23:45 by 潇湘隐者, 212 visits, 网摘, 收藏, 编辑
摘要:MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。 通过MERGE语句,根据一张表或多表联合查询的连接条件对另外一张表进行查询,连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。通过这个MERGE你能够在一个SQL语句中对一个表同时执行INSERT和UPDATE操作. 在 Oracle 10g中MERGE有一些新特性,后面我会介绍这些新特征。先看看MERGE语法如下:MERGEINTODM.TM_WGG_SYSVLRUSER_HRDMUSING(SELECTDAT
阅读全文
2011-06-09 23:00 by 潇湘隐者, 1422 visits, 网摘, 收藏, 编辑
摘要:其实网上已经有SQL*PLUS命令大全这方面的资料了,不过大都不完整,只覆盖了一些常用的命令,本着学习、实践的原则,也为了梳理、总结SQL*PLUS方面的知识,自己也整理了一份这方面的文档资料,不足之处还请大家多多指教。---1:HELPINDEXHELP命令查询相关命令的信息。你可以从下面看到大概有54个SQL*PLUS命令。每个命令都有大量的参数选项,你不可能清楚的记得每个命令以及它相关的参数细节,所以当你遗忘时,就可以用HELP命令来查看相关命令的命令信息SQL>HELPINDEXEnterHelp[topic]forhelp.@COPYPAUSESHUTDOWN@@DEFINEP
阅读全文
2011-06-03 23:28 by 潇湘隐者, 862 visits, 网摘, 收藏, 编辑
摘要:今天一个同事碰到一个问题:用SQL求一个指标的计算公式:其中Xi即指标,X—指标均值,N是指标个数,看到这样的计算公式确实比较发愁。在处理问题前,先去恶补了下数理统计方面的知识(数理统计的知识基本上都还给老师了):方差、标准差、平均值.....随机变量是指变量的值无法预先确定仅以一定的可能性(概率)取值的量。它是由于随机而获得的非确定值,是概率中的一个基本概念。样本方差 :样本中各数据与样本平均数的差的平方和的平均数叫样本方差。样本标准差:样本方差的算术平方根叫做样本标准差。样本方差和样本标准差都是衡量一个样本波动大小的量,样本方差或样本标准差越大,样本数据的波动就越大。 数学上一般用E{[X
阅读全文
2011-05-25 23:47 by 潇湘隐者, 539 visits, 网摘, 收藏, 编辑
摘要:这阵子折腾ORACLE数据库,今天还真给我“折腾”出问题来了,清理磁盘里面文件时,把D:\KERRY.MDF这个数据库文件删除了(呵呵,事后才想起来的,当时以为是SQL SERVER 05 数据库实验时创建的),结果今天启动ORACLE服务后,PL/SQL连接过去时报错:ORA-01033: ORACLE initialization or shutdown in progress。查看D:\oracle\product\10.2.0\admin\orcl\bdump下告警日志,发现了下面一些错误,仅仅贴出部分日志信息(太多了,不好贴)OSD-04002: 无法打开文件O/S-Error: (
阅读全文
2011-05-23 20:48 by 潇湘隐者, 718 visits, 网摘, 收藏, 编辑
摘要:今天碰到一个存储过程编译错误,提示PLS-00103错误,关于这个错误网上能搜到一大把,原因很多,我碰到的错误提示如下:Compilation errors for PROCEDURE ETL.PRO_TM_WG_NETSEV_PVError: PLS-00103: 出现符号 "EXCEPTION"在需要下列之一时: begin case declare end exit for goto if loop mod null pragma raise return select update while with <an identifier> <a dou
阅读全文
2011-05-21 20:27 by 潇湘隐者, 358 visits, 网摘, 收藏, 编辑
摘要:近期上班时,由于开机时老是提示“ 局域网出现计算机重名冲突”,于是把计算机名字给改了,从PC2010081312zeo改为了CXBIKKKKKKK,结果第二天来的时候,用PL/SQL连接我本地机子的ORACLE实例时,弹出ORA-12541:TNS无监听程序错误的提示,当时也没想到是计算机改名引起的问题,以为是相关服务没有启动缘故,于是我打开服务面板,如图所示,发现OracleOraDb10g_home1TNSListener服务没有启动,于是启动这个服务,结果等我启动后,出现下面的错误提示我又启动一次,结果还是上面错误错误提示,于是去ORACLE实例所在的安装目录%\10.2.0\db_1\
阅读全文
2011-05-18 20:47 by 潇湘隐者, 129 visits, 网摘, 收藏, 编辑
摘要:在看到标题时,你先想想:在ORACLE中能否修改一个表的某个字段名呢?如果能的话,你是否还记得SQL脚本如何写的呢,呵呵,写这个的目的是因为在论坛上看见许多信誓旦旦的说ORACLE中不能修改字段名称,只能先删除、后添加字段或是其它方法来处理。当然我不知道他们是在ORACLE那个版本下测试。我在ORACLE 9.0 ,10上是都可以执行的。http://topic.csdn.net/t/20020605/16/780826.htmlhttp://topic.csdn.net/u/20090306/14/c3fe94e2-ce50-4c0f-a205-f8f19a3f17a2.htmlhttp:/
阅读全文
2011-05-05 22:26 by 潇湘隐者, 1374 visits, 网摘, 收藏, 编辑
摘要:在数据库新建一个测试表(数据库版本为ORACLE10.2.0.1.0),表名为小写的test。脚本如下所示:CREATETABLEtest(idNUMBER(10),NameVARCHAR2(20),SexVARCHAR(2))--查找不到对应数据SELECT*FROMUSER_TABLESWHERETABLE_NAME='test'--改用大写才可以查到对应的数据SELECT*FROMUSER_TABLESWHERETABLE_NAME='TEST'--查找不到对应数据SELECT*FROMALL_TAB_COLUMNSWHERETABLE_NAME='
阅读全文
2011-05-04 21:37 by 潇湘隐者, 197 visits, 网摘, 收藏, 编辑
摘要:ORACLE用户管理包括: 创建用户、修改用户、删除用户 创建用户的脚本命令是CREATE USER语句,创建用户一般要由DBA或拥有该系统权限的用户来执行。那么我们首先来创建一个名为:kerry的用户(账号)CREATEUSERkerryIDENTIFIEDBYK123456DEFAULTTABLESPACEUSERSQUOTA10MONUSERSTEMPORARYTABLESPACETEMP 创建用户以后,我们可以通过下面的脚本来查看用户信息SELECTUSERNAME,PASSWORD,ACCOUNT_STATUS,DEFAULT_TABLESPACE, TEMPORARY_TABLES
阅读全文
2011-04-28 00:34 by 潇湘隐者, 242 visits, 网摘, 收藏, 编辑
摘要:------------------------------------------类型转换函数------------------------------------------------自动类型转换,ORACLE可以自动根据具体情况进行如下转换:*字符串到数值*字符串到日期*数值到字符串*日期到字符串EX:--*字符串到数值SELECT'3.14159'+20FROMDUAL;SELECT'3.1T'+20FROMDUAL;--报错:无效数字,即字符串必须能转换为数值类型才能进行操作--*数值到字符串SELECT'100'||124FROM
阅读全文
2011-04-27 00:51 by 潇湘隐者, 132 visits, 网摘, 收藏, 编辑
摘要:-----------------------------------------------字符函数-----------------------------------------------1:ASCII返回字符串的ASCII值 SELECTASCII('A')FROMDUAL;SELECTASCII('a')FROMDUAL;--2:CHR返回整数所对应的ASCII字符SELECTCHR('65')FROMDUAL;SELECTCHR(400)FROMDUAL;--如果超出ACII值,则返回空--3:CONCAT函数连接字符串A和字符串B
阅读全文
2011-04-27 00:06 by 潇湘隐者, 194 visits, 网摘, 收藏, 编辑
摘要:---------------------------------------------日期/时间函数-------------------------------------------------1:SYSDATE用来得到系统的当前日期SELECTSYSDATEFROMDUAL;--2:ADD_MONTHS增加或减去月份SELECTTO_CHAR(ADD_MONTHS(TO_DATE('20080818','YYYYMMDD'),2),'YYYY-MM-DD')FROMDUAL;SELECTTO_CHAR(ADD_MONTHS(SYSDAT
阅读全文
2011-04-26 23:06 by 潇湘隐者, 269 visits, 网摘, 收藏, 编辑
摘要:/************************************************************************************************************************** ORACLE 常用函数 这个系列我将整理一些日常我们经常使用到的ORACLE函数,鉴于篇幅太长,我大体会按下面分类来整理、汇总这些常用的ORACLE函数,如果有些常用函数没有被整理进来,也希望大家指点一二。1: 聚合函数2: 日期函数3: 字符串函数4: 格式化函数5: 类型转换函数6: 加密函数7: 控制流函数8: 数学函数9: 系统信息函数***
阅读全文
2010-02-06 08:41 by 潇湘隐者, 689 visits, 网摘, 收藏, 编辑
摘要:Oracle ORA-06550:错误网上说该异常产生的原因是临时表空间不足导致的检查数据库后发现 真正的原因是用户权限不够 导致没有临时表空间的操作权限 导致该异常
阅读全文
2009-11-18 22:45 by 潇湘隐者, 145 visits, 网摘, 收藏, 编辑
摘要:(转载)1:先在开始—>控制面板—>管理工具—>服务 把里面orale相关的服务全部停掉。这样做是避免删除出错。2:打开Oracle程序下的Universal Installer卸载程序(如下图所示),但是Universal Installer本身不能被卸载。 3: 运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE...
阅读全文
2009-11-18 22:31 by 潇湘隐者, 940 visits, 网摘, 收藏, 编辑
摘要:首先你应该下载Oralce 10g的安装文件(版本比较多,大家可以选择自己需要的),你可以去Oracle官方网站也可以去任何其它网站下载,官方网站http://www.oracle.com/technology/global/cn/software/products/database/index.html,不过你下载前应该仔细看清楚你下载的版本,因为Oracle的版本比较多,免得你下载了Linux...
阅读全文
2009-10-15 19:59 by 潇湘隐者, 948 visits, 网摘, 收藏, 编辑
摘要:在PLSQL里是可以调试触发器的,相信有一部分人可能不清楚这个。以前我一直使用SQl Server,哈哈,养成了一个根深蒂固的观念,以为Oracle里触发器也是不能调试的,其实SQLServer里面也是可以调试的(写这个的时候特意在网上查找了下资料)。好了,为了形象说明,下面列举个例子,如下图所示,表NVOICE_CLASS里有个触发器INVOICE_CLASS_AFTER其中触发器INVOICE...
阅读全文
2009-09-11 01:05 by 潇湘隐者, 227 visits, 网摘, 收藏, 编辑
摘要:今天在做计费报表的时候,由于粗心,拿数据的的脚本给写错了,却让我发现了一个很奇怪的问题,下面来让我介绍我发现的这个问题:数据库有表CHARGE_REF ,CLIENT_INVOICE ,CLIENT_INVHDR。其中CHARGE_REF表是保存的收费类型的数据;CLIENT_INVHDR表保存的是发票头部信息,CLIENT_INVOICE表保存的是发票的详细信息,大体如下图所示我当时拿数据的时候...
阅读全文