Oracle培训的建议收集
近期要组织一次新员工培训,交代了两节课的任务,主要介绍Oracle数据库,一个是针对纯小白,一个是经过一段时间的学习,针对有一定基础的,内容不限,时间不限。介绍数据库,介绍Oracle,其实有非常广泛的选题,从体系结构到SQL语法,从备份恢复到性能优化,从数据库管理到高可用架构,虽然我离精通还差很远,但...
数据迁移中碰见的一些问题
单位有一套Oracle 9i的古老测试数据库,因为机房搬迁,所以需要迁移数据,新库是Oracle 11g了,一个比较简单的需求,但过程中碰见了一些问题,看似比较琐碎,值得总结一下。由于源库是9i,因此只能用imp/exp,不能用数据泵。问题1:导入目标库用户的默认表空间源库由于不规范的使用,对象默认存储的...
无线路由器的些许知识
前段时间,家里原来的路由器,总是时不时掉线,因为网络环境并未有变化,所以打算直接换一个新的,于是乎开始广撒网,找应该买什么样的路由器,隔行如隔山,不看不知道,一看吓一跳,虽然以前学过CCNA,但现在看来,还是皮毛,更何况忘的干净,原来网络设备的世界,如此宏伟,不是想象的那么简单。我主要参考了...
修改表字段长度的操作,对业务是否有影响?
前两天测试同学问了一个问题,表中某一个字段,需要改一下长度,对业务是否会有影响?可能隐约之中,我们觉得没影响,但又好像有影响,究竟有何影响,我们从实验来看最科学。首先建测试表,NAME字段是VARCHAR2(10),10个字节的字符串类型,表有256万数据。我们将其长度改为20,从执行时间看,只有20毫秒...
有索引却不用的两个场景
一直有朋友问,是不是表建了索引,一定会使用索引,在RBO时代,访问效率会参考一些规则,优先级高的,认为效率就高,例如索引就比全表扫描效率高,但CBO时代,则会以成本为依据,谁的成本低,谁的效率就高,这样更科学。建了索引,SQL却未使用索引,有很多情况,何况我不精通,所以不能一一枚举出来,但结合昨天广分...
解决导入过程中出现的ORA-02289错误
用expdp导出生产库数据到测试库,执行impdp的时候报了ORA-02298错误,提示生效TBL_B表的外键约束FK_B_ID的时候出错,看看ORA-02298的错误描述,因为存在独立的字节点记录,导致生效约束操作报错,通俗一些,就是子表外键对应的主表主键/唯一约束键值不存在,所以此时无法生效外键约束。...
如何验证dump文件的有效性
为了测试用途,从生产库导出了一份dump文件,打算导入测试环境中,如果这份dump文件有损坏,可能我执行的impdp,会造成数据库有一部分数据导入成功了,但另一部分失败了,要么挑出失败的部分,断点执行,这难度比较大,要么只能清空,重新执行。我们是不是只能通过执行impdp,真正执行导入操作才可以知道这份expdp导出...
生产数据导入测试环境碰见的一些问题
我们某一个系统的夜维出现了性能的问题,删除N张表,数据量从几万到几百万不等,现在需要3.5-4个小时,看了一下SQL AWR,有些采用了TABLE ACCESS FULL,而且是数据量百万级的表,并且一次删除5000条,批量要删除几百次,相当于执行几百次TABLE ACCESS FULL,效率可想而知。大家讨论后,决定除了索引、SQL语句...
一个诡异的SQL事务现象
今天测试过程中,同事提出了一个,看似诡异,实则很基础的问题,乍一看会被迷惑。用实验来复现下这个问题,(1) 创建测试表,A表的id字段是主键,B表的id_a字段是外键,参考A表的id主键,(2) 应用有这么一个逻辑,一个事务中,先更新表A,再INSERT表B,其中表B的id_a字段值是来自于表A刚才操作...
解决Logical Reads高的方法和实验
之前介绍了CBC,就是cache buffer chains这个等待事件的影响,《缓解latch: cache buffers chains的案例》,解决逻辑读过高的SQL语句,是优化方向。为了更直观地说明这个问题,通过模拟实验,来了解下。创建测试表,test表三个字段,分别是id1,id2和name,insert入100万行记录,其中id1每个distinct值100次,id...
缓解latch: cache buffers chains的案例
这两天我们的一个核心系统U*S,正在做压力测试,虽然压测的服务器配置不如生产,但可以反映出一些问题,初始测试的TPS可以说非常低,据测试同事反映,压测一会,数据库服务器CPU就上来了,业务上有积报现象,找不着原因。既然数据库服务器CPU飙升上来了,说明数据库服务器上有压力,这就需要看压测期间,数据库...
学习show_space存储过程
今天学习和介绍一个有用的工具,来自TOM大神的show_space,其实这就是一个存储过程,用他可以统计一些段的用度,非常方便,网上流传着不同的版本。首先我们看下原版的脚本,https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:5350053031470create or replace procedure show_sp...
Linux实际内存占用率算法,以及使用Python实现内存监控
这两天我们的一个核心系统,一套集群,逐台开始报警,内容是内存占用超阈值。按说这应该是一个非常紧急且需要立即处理的报警,但实际是不是这样,待我们拨云见日。以下为模拟实验,了解了下监控系统这条内存占用超阈值报警的计算方法,是用used/total*100%=1949/1988*100%=98%,即内存占用量超过了...
DBMS_STATS.AUTO_SAMPLE_SIZE的值是什么?
这是2014年写的一篇文章(http://blog.csdn.net/bisal/article/details/18910785#reply),看了一下,当时的实验和说明是,PL/SQL procedure successfully completed.这里必须纠正,我的说法有误,不能因为从dba_tables中看见了NUM_ROWS值和表实际记录数相同,就认为默认采样比例就是100%。崔老师书中说了,...
dbms_space.create_table_cost的unwrap解密和原理解析
Oracle提供了一系列PL/SQL package,包含了函数、存储过程,方便用户的使用,可以参考《Oracle? Database PL/SQL Packages and Types Reference》手册,但其中一些存储过程的实现细节,Oracle并未透露,且对其进行了加密wrap。俗话说的话,“高手在民间”,从Oracle 9i开始,就有牛人前辈,找出了解密unwrap的一些方...
如何解决/home/oracle: is a directory报警
看一下profile文件,没看出有什么不同,和另外一台正常的机器比较,看着是一样的,奇怪了?尝试删除黑色的~符号这行,执行source,或者su,均不会报错了,既然因为bash_profile多了一行~,有这个错误,我们尝试使用~,显示的错误和之前一样,cd上一级路径,其实~表示的就是...
百度AI大会的一些想法,了解DuerOS、Amazon Alexa和Echo
今天看了一会百度的AI开发者大会视频,说实话被一些场景震撼了,尤其是一位嵌入式工程师,利用百度AI,将小外甥的乐高机器人,打造为可对话的机器人,让我体会到AI就是身边,不再听起来像天方夜谭,我也有一些朋友做AI,简单聊了聊,这是个趋势,而且无论已经有一些成型的产品,但一些细节其实值得玩味。美亚上售价49.9...
预估表和索引空间容量的方法
最近有一个业务功能要上线,生产数据库环境之前已经到位,目前要做的是估算下,业务数据量对数据库空间,有何影响。开发同学根据表字段定义,分别统计出了最大占用空间,以及预计占用空间量,计算得很细致。今儿碰巧看见了一篇MOS文章,《How to Estimate the Size of Tables and Indexes Before Being Created...
Numeric Overflow,SQL问题?Java Code问题?
这两天出差,出发前开发同学提了一个问题,开会间隙,有了一些想法,java代码中和Oracle中均有可能出现此错误,记录于此。一段mybatis的代码,查询一张表的数据,SQL类似如下,接受起始时间和截止时间,作为检索条件。现象:1. 开发库运行这段代码,正常返回,测试库运行这...
时间戳相减的几种方法
这两天正在写一个日报的code,其中有一处是涉及系统用时,简单来看,就是俩时间戳字段相减,方法可能有很多,这里列出一些,朋友们要是有更简单、更好玩的方法,可以回复,一起玩耍。创建测试表,t1和t2是TIMESTAMP类型,t1比t2快1分钟,直接使用t1-t2得到正值,t2-t1得到负值,使用substr截取...