代码改变世界

MERGE INTO 性能问题疑问

2013-03-17 22:35 by 潇湘隐者, 9611 阅读, 2 推荐, 收藏, 编辑
摘要:今天同事碰到一个SQL的性能问题,主要是MERGE INTO的性能问题,执行脚本的时候,居然耗时50多分钟,汗!简直让人抓狂,脚本如下:MERGEINTO EDS.TW_DP_B_TDTERM_IMEI_DAY DM USING T_IMEI_DAY_1111 TEMP ON( DM.DATE_CD =TEMP.DATE_CD AND DM.CITY_ID = TEMP.CITY_ID AND DM.IMEI =TEM... 阅读全文

横表与竖表性能浅析

2013-03-13 10:18 by 潇湘隐者, 8204 阅读, 2 推荐, 收藏, 编辑
摘要:概念介绍横表概念横表就是普通的建表方式,每一个字段代表一个KPI指标。举个列子,一个学生的成绩表:学号、数学成绩、语文成绩、英语成绩、物理成绩、化学成绩......如下所示:SQL> DESC STUDENT_SCOREName Type Nullable Default Comments ---------------- ---------- -------- ------- -------- STUDENT_NO NUMBER(10) 学号 CHINESE_SCORE NUMBER Y ... 阅读全文

浅谈数据库的分割技术[转载]

2013-01-25 11:55 by 潇湘隐者, 1491 阅读, 1 推荐, 收藏, 编辑
摘要:浅谈数据库的分割技术 电信信息化部/周陈雄 关健词 读写分离分布,垂直分割,水平分割,虚拟化存储,wEB 缓存分割, 存储 CACHE 缓存分割 随着社会的日益进步, 各行业的运营支撑系统都面临着越来越大的压力, 承受着业务数 据量、访问并发数的飞速增长的双重巨大压力,在我们电信行业,同样面临着这样的难题, 是否有一套适合可行的方案来应对呢?本文重点描述数据库的分割技术, 如果能适当的应用在生产中, 必然能极大减缓来自与 日俱增的业务量带来的巨大压力。 如何分割?我们可以从如下六个方面来考虑: 一、读写分离分布技术 由于数据库存在这样的特性, 索引可以提升查询的性能, 但却极大... 阅读全文

数据库表分割技术浅析

2013-01-25 10:55 by 潇湘隐者, 6606 阅读, 5 推荐, 收藏, 编辑
摘要:一.水平分割 什么是水平分割?打个比较形象的比喻,在食堂吃饭的时候,只有一个窗口,排队打饭的队伍太长了,都排成S型了,这时容易让排队的人产生焦虑情绪,容易产生混乱,这时一个管理者站出来,增加多个打饭窗口,把那条长长的队伍拦腰截断成几队。更形象一点的理解,你拿一把“手术刀”,把一个大表猛的切了几刀,结果这个大表,变成了几个小表. 水平分割根据某些条件将数据放到两个或多个独立的表中。即按记录进分分割,不同的记录可以分开保存,每个子表的列数相同。水平切割将表分为多个表。每个表包含的列数相同,但是数据行更少。例如,可以将一个包含十亿行的表水平分区成 12 个表,每个小表表示特定年份内一个月的数据。.. 阅读全文

监听服务管理

2012-12-19 19:02 by 潇湘隐者, 9224 阅读, 2 推荐, 收藏, 编辑
摘要:如果你想管理(启动、关闭等)ORACLE数据库的监听服务,在Windows/Linux平台,你都可以通过lsnrctl命令来实现,下面我们主要讲一下如何用lsnrctl命令来管理监听服务(我在两台数据库(不同平台、不同版本)分别操作,暂且叫为服务器A、服务器B):1:查看服务监听命令的详细帮助信息服务器A:Red Hat Enterprise Linux Server release 6.0 (Santiago) ORACLE 10[oracle@DB-Server ~]$ lsnrctlLSNRCTL for Linux: Version 10.2.0.1.0 - Production on 阅读全文

ORACLE同义词总结

2012-12-19 14:59 by 潇湘隐者, 94527 阅读, 48 推荐, 收藏, 编辑
摘要:同义词概念Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系。它可以节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;Oracle数据库中提供了同义词管理的功能。同义词是数据库对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracle数据库将它翻译成对应方案对象的名字。与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义。在Oracle数据库中的大部分数据库对象,如表、视图、物化视图、序列、函数、存储过程、包、同义词 阅读全文

Linux网络配置

2012-12-17 15:57 by 潇湘隐者, 14735 阅读, 2 推荐, 收藏, 编辑
摘要:前言:下面测试只在Redhat Linux系统测试过,不见得适用于其它Linux系统。配置动态IP在终端命令窗口中输入setup,就会弹出如下窗口[root@wgods ~]# setup选择Network Configuration,点击enter进入下面界面,选择Edit Devices选项进入下面界面点击enter,选项进入下面界面,按Tab键在选项间切换,选择Use DHCP后,按下空格键,就会出现[*],然后点击OK键。注意:有时候在Name或Device选项你不小心,让eth0多了空格,就会造成配置出问题,此时你要检查一下/etc/sysconfig/network-scripts 阅读全文

ORA-12170:TNS:连接超时

2012-12-14 17:32 by 潇湘隐者, 150131 阅读, 1 推荐, 收藏, 编辑
摘要:在Red Hat Enterprise Linux Server Releae 5.5 成功安装ORACLE 10g 后,在客户端配置TNS后,测试是否可以连接到数据块服务器,结果报错: ORA-12170:TNS:连接超时1:首先检查网络是否能ping通,如下所示,网络是畅通的。2:检查TNS配置(TNS配置也没有问题)GSP =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = 172.20.36.79)(PORT = 1521))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME = gsp)))3: 阅读全文

ORA-12504:TNS:监听程序在CONNECT_DATA中未获得SERVICE_NAME

2012-12-14 15:27 by 潇湘隐者, 118694 阅读, 6 推荐, 收藏, 编辑
摘要:客户端配置好服务名后,用PL/SQL Developer连接数据库时,报错:ORA-12504:TNS:监听程序在CONNECT_DATA中未获得SERVICE_NAME。一般这种情况请检查tnsnames.ora文件中TNS是否配置正确,如下所示,SERVICE_NAME 名字弄错了,结果报如上错误:GSP = (DESCRIPTION = (ADDRESS =(PROTOCOL = TCP)(HOST = 172.20.36.79)(PORT = 1521)) (CONNECT_DATA= (SERVER = DEDICATED) ... 阅读全文

iSQL*PLUS配置设置

2012-12-11 20:08 by 潇湘隐者, 7695 阅读, 1 推荐, 收藏, 编辑
摘要:iSQL*PLUS介绍iSQL*PLUS是从ORACLE 9i开始提供的新功能,是SQL*PLUS的Web形式(ORACLE 11g已经不支持)。是基于三层结构设计的。其client、middle、server可以位于同一台机器上也可以位于不同的机器。iSqlPlus不需要单独安装,通过isqlplus,用户可以不需要安装任何ORACLE客户端,就能够通过浏览器方式的使用SQL*PLUS进行数据操作与数据库管理。普通的数据库用户可以直接通过isqlplus的网址http://ip:port/isqlplus登陆,进入该网址后会直接进入数据库用户登陆界面,使用数据库中的普通用户即可登陆;但如果是 阅读全文

ORACLE——重做日志文件管理

2012-08-09 22:53 by 潇湘隐者, 15814 阅读, 6 推荐, 收藏, 编辑
摘要:联机重做日志文件概念联机日志文件又叫重做日志文件,记录了对数据库修改的信息,包括用户对数据修改和数据库管理员对数据库结构的修改。它主要用于在发生故障的时候和数据库备份文件配合恢复数据库,一般发生故障有2个情况:一个是介质损坏另外一个是用户误操作。每个数据库至少有两个日志文件组,每组至少包含1个或者多个日志成员,这里要多个日志成员的原因是防止日志文件组内某个日志文件损坏后及时提供备份,所以同一组的日志成员一般内容信息相同,但是存放位置不同。在Oracle数据库中,执行数据修改操作后,并不是马上写入数据文件,而是首先生成重做信息,并写入SGA中的一块叫LOG_BUFFER的固定区域,LOG_BUF 阅读全文

Linux——查看系统硬件信息

2012-07-06 00:40 by 潇湘隐者, 6434 阅读, 3 推荐, 收藏, 编辑
摘要:前言:下面实验的信息是我在几台配置不同服务器的测试结果,操作系统分别为Red Hat Enterprise Linux Server release 6.0 (Santiago)、Ubuntu 7.10。所以你看到我实验信息的不同时,请不要大惊小怪。而且有些命令也不是所有Linux操作系统都支持(例如在Ubuntu 7.10就不支持dmesg),下面的内容是收集整理的,如有错误或新的方法,也会不停整理、更新。一:查看CPU信息1、CPU详细信息方法1:CPU信息一般保存在proc目录下的cpuinfo文件中。如下所示。代码[root@DB-Server ~]# more /proc/cpuin 阅读全文

ORACLE——Instant Client配置SQL*LDR、EXP等命令工具

2012-07-06 00:18 by 潇湘隐者, 15168 阅读, 1 推荐, 收藏, 编辑
摘要:在Linux系统中安装了ORACLE客户端Instant Client,但是它缺少SQL*LOADER、IMP等工具,那么怎么安装这些工具呢?直接从同版本的数据库服务器的安装文件中拷贝sqlldr文件过来,执行sqlldr会报如下错误:Message 2100 not found; No message file for product=RDBMS, facility=ULMessage 2100 not found; No message file for product=RDBMS, facility=UL[etl@m1 instantclient_10_2]$^C 事实上也只能通过拷贝文 阅读全文

ORACLE查看数据库安装补丁情况

2012-06-30 15:32 by 潇湘隐者, 23822 阅读, 1 推荐, 收藏, 编辑
摘要:查看ORACLE数据库的版本以及补丁情况,可以通过opatch lsinventory命令来查看,Linux版本和Windows版本几乎差不多(测试的两台机器都没有打补丁。呵呵!):先看一下Windows平台的设置:首先转到ORACLE_HOME目录,然后切换到OPatch目录:(如下所示)E:\>cd E:\app\kerry\product\11.2.0\dbhome_1E:\app\kerry\product\11.2.0\dbhome_1>cd OPatch如果首先没有设置ORACLE_HOME目录,则会报如下错误:E:\app\kerry\product\11.2.0\d 阅读全文

断开网线后监听服务器配置

2012-06-30 15:14 by 潇湘隐者, 1057 阅读, 0 推荐, 收藏, 编辑
摘要:笔记本拔掉网线后,从服务启动ORACLE监听服务器时报错(如下图所示)通过命令启动查看具体错误信息如下所示:查看具体的报错日志信息log.xml,如下所示:代码<msg time='2012-06-30T13:58:04.381+08:00' org_id='oracle' comp_id='tnslsnr'type='UNKNOWN' level='16' host_id='KERRY-PC'host_addr='fe80::bdcd:f603:9ae2:a99%16'> 阅读全文

ORA-00060错误

2012-06-27 21:21 by 潇湘隐者, 5509 阅读, 0 推荐, 收藏, 编辑
摘要:今天有个同事说生产机有个PERL脚本老是报死锁的错误,脚本里面开启了并行度:错误如下:Failure: ORA-12801: error signaled in parallel query server P126, instance NMS_ODS_NDB1:wgods1 (1)ORA-00060: deadlock detected while waiting for resource (DBD ERROR: OCIStmtExecute)检查了所有的脚本后,发现没有其他会话、进程造成脚本里面ODS表的死锁,后来搜索发现http://jidongzheng.itpub.net/post/3 阅读全文

ORACLE数据库查看执行计划

2012-05-24 22:28 by 潇湘隐者, 36719 阅读, 29 推荐, 收藏, 编辑
摘要:基于ORACLE的应用系统很多性能问题,是由应用系统SQL性能低劣引起的,所以,SQL的性能优化很重要,分析与优化SQL的性能我们一般通过查看该SQL的执行计划,本文就如何看懂执行计划,以及如何通过分析执行计划对SQL进行优化做相应说明。一、什么是执行计划(explain plan)执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述。二、如何查看执行计划1: 在PL/SQL下按F5查看执行计划。第三方工具toad等。很多人以为PL/SQL的执行计划只能看到基数、优化器、耗费等基本信息,其实这个可以在PL/SQL工具里面设置的。可以看到很多其它信息,如下所示2: 在SQL*PLUS 阅读全文

ORACLE数据库链接

2012-05-17 22:43 by 潇湘隐者, 13080 阅读, 2 推荐, 收藏, 编辑
摘要:在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 = 阅读全文

ORA-12154: TNS:could not resolve the connect identifier specified

2012-05-16 23:48 by 潇湘隐者, 9969 阅读, 0 推荐, 收藏, 编辑
摘要:在安装ORACLE安装的时候,报如下错误:ORA-12154: TNS:could not resolve the connect identifier specified。如下图所示: 折腾了很久才找到罪魁祸首:原来在安装数据库时,设置用户密码的时候里面包含了@符号,引起了这个错误,这个错误倒是有点诡异,应该是ORACLE连接DB时就把口令@后面的串当连接字用了。所以切记注意这个,否则很难发现问题。 阅读全文

Win2003 设置远程连接限制数

2012-05-16 23:21 by 潇湘隐者, 1571 阅读, 0 推荐, 收藏, 编辑
摘要:在开发过程中,很多同事需要连接到一台Win2003服务器,但是连接人数超过了10个,就连接不上了。想设置一下连接限制数,可以如下操作:1:在运行里面输入gpedit.msc后,弹出"本地计算机"策略2:如上所示,选择设置限制连接数量后,在TS允许的最大连接数里设置一个连接数即可。 阅读全文

Rhel-Server 5.5 安装ORACLE10

2012-05-15 23:44 by 潇湘隐者, 2677 阅读, 1 推荐, 收藏, 编辑
摘要: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),可以大幅度的增强虚拟机和主机的交互能力,和显著提供虚拟机的性能。比如,安装虚拟机工具后,虚拟机的显示效果会增强。另一 阅读全文

ORACLE约束总结

2012-05-13 08:36 by 潇湘隐者, 39303 阅读, 23 推荐, 收藏, 编辑
摘要:你对ORACLE约束的了解如何?比较模糊还是相当透彻?如果你对下面几个问题了如指掌的话,恭喜你,你已经对约束掌握得比较好了,不用看这篇文章了。ORACLE的约束有啥功能作用? 有哪些类型约束(不同版本ORACLE是否不同)?视图有约束吗?约束是否会影响SQL性能? 约束信息存储在哪些系统视图、数据字典中?约束能否修改名称?能否禁用约束?延迟约束有啥好处.......约束定义约束是强加在表上的规则或条件。确保数据库满足业务规则。保证数据的完整性。当对表进行DML或DDL操作时,如果此操作会造成表中的数据违反约束条件或规则的话,系统就会拒绝执行这个操作。约束可以是列一级别的 也可以是表级别的。定义 阅读全文

ORA-27125: unable to create shared memory segment

2012-04-23 19:38 by 潇湘隐者, 4130 阅读, 0 推荐, 收藏, 编辑
摘要:平台环境:Linux Red Hat Enterprise Linux Server release 6.0 (Santiago)数据库版本:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi安装好ORALCE数据库后,启动数据库就会报如下错误参考http://www.eygle.com/archives/2011/12/hugepageshugetl.html 文章,说跟hugetbl有关,只需按如下操作[root@DB-Server ~]#id oracle uid=501(oracle) gid=502(oin 阅读全文

用SYS本地登录或远程登录引起ORA-01031错误

2012-04-17 22:18 by 潇湘隐者, 7096 阅读, 0 推荐, 收藏, 编辑
摘要:"历史总是上演惊人的相似", 在技术开发过程中,你也会总会碰到惊人相似的问题,这段时间我就碰到了”ORA-01031:insufficient privileges 权限不足”这个错误多次,一次是自己,一次是同事碰到的,顺便整理了下这个知识点。情况一:如果数据库实例安装在服务器A上,你用管理员权限Administrator登录后,使用SQL> conn system/manage as sysdba登录 没有问题。但是如果你在服务器A上建立一个etl账号,使它率属于Remote Desktop Users 和Users 组,如下所示:此时你用sys账号登录数据库时,就 阅读全文

SQL语言艺术实践篇——局外思考

2012-04-12 00:22 by 潇湘隐者, 1446 阅读, 1 推荐, 收藏, 编辑
摘要:今天有个同事问我一个问题,描述如下: 有一个日志信息表,对应同一个ID,可能有一条、两条、三条不同状态的记录。例如ID= 10001的日志记录可能有三条,一条记录状态为正确, 一条记录状态为错误, 一条记录状态是未知。也有可能只有其中一条记录或两条,现在的问题是,对应同一日志ID,我们只需要取一条记录,取数规则是:1:如果有状态为正确、错误、未知三条记录,我们只取状态为正确的记录。2:如果只有状态为正确、错误状态两条记录的,我们只取状态为正确的记录3:如果只有状态为错误、未知记录两条记录的,我们只取状态为错误的记录4:如果只有状态为正确、未知记录两条记录的,我们只取状态为正确的记录5:如果只有 阅读全文

Task Scheduler 介绍

2012-04-09 22:20 by 潇湘隐者, 22934 阅读, 0 推荐, 收藏, 编辑
摘要:Task Scheduler 的描叙:使用户可以在此计算机上配置和计划自动任务,此服务还托管多个Windows系统关键任务。如果此服务被停止或禁用,这些任务将无法再按计划的时间运行。如果此服务被禁用,则明确依赖它的所有服务将无法启动。这个命令有点类似于Linux下的crontab 等后台命令。可以通过它在Window 平台自动备份数据库等任务。这个命令依赖于Remote Procedure Call(RPC)系统组件(Windows XP/2000/2003下), 在VISTA、WIN7下必须依赖Remote Procedure Call(RPC)、Windows Event Log两个系统组 阅读全文

ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

2012-04-03 13:24 by 潇湘隐者, 32438 阅读, 1 推荐, 收藏, 编辑
摘要:在安装ORACLE 11G 过程中由于配置的原因,安装过程中报了如下错误:按照安装提示执行后面的操作后,打开PL/SQL DEVELOPER 连接数据库时总报ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务!ORACLE NET MANAGER里面测试,测试服务是否能够成功。结果还是报如上错误在网上百度了一下这个错误ORA-12514,原来很多人都碰到过这个问题,于是按照别人的处理步骤依依配置了,这个问题解决了,不过还是觉得有必要把这个问题解决的步骤记录下来,一来让自己能跟深刻的体会一下,锻炼一下总结能力,二来可以帮助到以后碰到这个问题的人。先找到找到listener 阅读全文

ORACLE FLASHBACK TABLE 的一个有趣问题

2011-07-24 13:07 by 潇湘隐者, 4243 阅读, 3 推荐, 收藏, 编辑
摘要:大家都知道ORACLE 10G新增了FLASHBACK特性,其中FLASHBACK TABLE用来对误删的表进行修复。但是今天却发现了FLASHBACK TABLE的一个有趣问题,请看下面慢慢道来:下面我用一个例子来说明我的遇到的有趣的问题,欢迎大家探讨。SQL>CONNECTSYSDBA/*****ASSYSDBA已连接。SQL>CREATETABLETEST(TVARCHAR2(10));表已创建。SQL>DROPTABLETEST;表已删除。SQL>FLASHBACKTABLETESTTOBEFOREDROP;FLASHBACKTABLETESTTOBEFORED 阅读全文

ORACLE一些不常用的脚本

2011-07-10 18:01 by 潇湘隐者, 1375 阅读, 0 推荐, 收藏, 编辑
摘要:本篇介绍一下一些不太常用的脚本,它们往往有“奇能异效”,但是由于不太常用、不常见、或效率方面的原因,往往被大多数人给遗忘在某些角落里。呵呵,不知道你看见下面这些脚本,是否觉得眼熟呢?1: 如果我需要从SCOTT模式下EMP表中查询职位为CLERK(秘书)、SALESMAN(销售人员)这两种员工,你会怎么写?是下面哪种写法呢?SELECT*FROMSCOTT.EMPWHEREJOB=ANY('CLERK','SALESMAN')/SELECT*FROMSCOTT.EMPWHEREJOBIN('CLERK','SALESMAN')/A 阅读全文

ORACLE已建表能否创建分区

2011-07-03 12:23 by 潇湘隐者, 7849 阅读, 1 推荐, 收藏, 编辑
摘要:Oracle数据库里面,如果已经创建了一个表,创建时没有给表进行分区,现在由于性能等方面原因需要对该表创建分区。能否直接把一个未分区的表修改成分区表呢(即能否通过ALTER语句把该表修改成分区表呢)?答案是不能,至少目前版本不能。但是可以对已分区表增加新分区、合并分区、删除分区等一系列操作。如果要对对未分区表A创建分区,可以用下面的方法:把原表改名为B,然后创建分区表A,再把表B的数据导入A。 阅读全文