oracle
文章平均质量分 52
oracle
hello_alldatabase
这个作者很懒,什么都没留下…
展开
-
少了索引,向表中插入数据突然慢了几百倍
背景最近一个千万级的普通表,经常需要通过delete方式删除7天以前的数据,删除效率特别低,后面将该改表转化成按天创建的分区表,方面高效的删除数据,结果还是出现了一意外,少建了一个索引导致入库时慢了几百倍。问题描述研发反应的入库非常慢,去count这个分区表时确实慢,基本上是一秒一条记录。排查思路1、查看表上是否有触发器、序列2、检查该SQL语句以及其执行计划获取sql idselect * from v$sql where sql_text like '%表名%'根据SQL ID查看执原创 2021-06-05 22:37:41 · 449 阅读 · 1 评论 -
Centos7.4安装oracle11.2.0.4出现的问题
1、通过vnc方式,执行./runInstaller时无法调出图化窗口原因:通过vnc远程连接的,设置display的窗口号时,需要与vnc一致。export DISPLAY=:1.02、通过vnc方式,执行./runInstaller时,弹出的对话框显示不全/u01/database/database/runInstaller -jreloc /etc/alternatives/jre_1.8.0...原创 2021-06-04 15:42:42 · 220 阅读 · 0 评论 -
oracle expdp导出之query转义问题
背景需要从一个分区表中拉取一部分数据到另外一个库,实现的方式有很多,这里采用expdp的query功能来实现,基于日期时间过滤时,发过过虑策略不生效。遇到的问题[oracle@testoracle ~]$ expdp test/sgtest2016 directory=impdp_dir dumpfile=qxfx_ssqx.dmp tables=(‘tt’) QUERY='tt:“WHERE sjsj<to_date(‘2021-01-01 00:00:00’,‘yyyy-mm-dd HH24原创 2021-04-07 18:06:46 · 989 阅读 · 0 评论 -
磁盘rejecting I/O to offline device故障导致4TB生产数据库无法访问
1、项目背景2、故障描述Jan 31 03:47:03 test-db-2 kernel: sd 1:2:0:0: rejecting I/O to offline deviceJan 31 03:49:47 test-db-2 kernel: sd 1:2:0:0: rejecting I/O to offline deviceJan 31 03:49:47 test-db-2 kernel: sd 1:2:0:0: rejecting I/O to offline deviceJan 31 0原创 2021-02-02 13:49:37 · 7292 阅读 · 0 评论 -
如何从数据库层面统计每天业务数据的增长量?
背景最近接入了很多业务数据,想统计一下每天的业务数据增长量以便明年数据库服务器的事情。以oracle数据库为例,有只需要统计大概的数据量即可,当然越准确越好,有哪些方式可以实现呢? 如果是其他数据库如何统计呢?比如postgresql,mysql...原创 2021-01-21 19:42:09 · 729 阅读 · 0 评论 -
log file switch(checkpoint incomplete)导致OGG同步延迟38个小时
项目背景基于TB级生产库搭建一套OGG备库,每天的日志量在200G左右,最近发现经常出现同步延迟几十个小时,搞得有点烦,特此记录一下处理过程。系统环境oracle 11.2.0.4+ogg12.2.0.1.0延迟现象GGSCI (cluster-10-176-50-29 as ogg@yjgk2) 169> info allProgram Status Group Lag at Chkpt Time Since ChkptMANAGER RUN原创 2021-01-14 22:52:36 · 1568 阅读 · 0 评论 -
OGG源与目标表结果不一致,报OGG-01161错误
系统环境oracle11.2.0.4+OGG12.2.0.1.0错误信息ERROR OGG-01161 Bad column index (73) specified for table SC.T_SB_CZZ, max columns = 73.详细错误信息2021-01-09 02:26:28 INFO OGG-02759 The definition for table SC.T_SB_CZZ is obtained from the target database.20原创 2021-01-13 14:07:40 · 1932 阅读 · 0 评论 -
因大表无索引致ogg同步延迟几十小时
系统环境oracle 11.2.0.4+ogg12.2.0.1.0延迟现象GGSCI (cluster-10-176-50-29 as ogg@yjgk2) 169> info allProgram Status Group Lag at Chkpt Time Since ChkptMANAGER RUNNINGREPLICAT RUNNING REP_PS1 14:27:09 00:00:57REPLICAT原创 2021-01-13 13:57:52 · 1160 阅读 · 0 评论 -
oracle表空间的使用率,你统计对了吗?
select tablespace_name,round(total_space_mb)||‘M’ total,round(free_space_mb)||‘M’ free,round(total_space_mb-free_space_mb)||‘M’ used,round(100*(total_space_mb-free_space_mb)/total_space_mb) used_percent from (selectdecode(t.tablespace_name,null,y.tablesp原创 2020-12-28 21:34:01 · 766 阅读 · 0 评论 -
oracle执行expdp过程中,ctl+c遇到的坑
背景基于oracle11.2.0.4生产库搭建OGG镜像库,使用expdp来做数据初始化操作,想提前测试一下expdp导出所用时间场景描述1、基于expdp导一张10GB的业务表,结果没有写tables参数,导致将整个schema下的数据都导出。后发生不对,立即执行了ctl+c ,接着输入exit退出expdp。2、第2执行带tables参数的导出,数据正常被导出。遇到的问题第一步导出操作还在执行,整个库1.3TB,整个挂载的磁盘空间只有1TB总结与思考1、为了什么ctl+c,输入exit后原创 2020-12-23 23:25:03 · 415 阅读 · 0 评论 -
oracle merge单条记录遇到的诡异速度
系统环境oracle 11.2.0.4+时间范围分区表问题描述按时间范围创建的分区表,最小时间分区里的存储一个月的数据,对该分区表内的记录进行一条语句的merge操作,执行时间相差千倍之多。原创 2020-12-22 22:41:59 · 125 阅读 · 0 评论 -
oracle,postgresql实现行转列显示
项目背景今天开发人员要生成业务报表,应有的数据格式如下测试数据希望等到如下结果生成结果说明:总合格率这一列不用考虑实现,使用oracle花了两个多小时才实现。大家需要花多少时间呢,对postgresql感兴趣的朋友,可从花时间试试?...原创 2020-12-03 21:57:44 · 209 阅读 · 0 评论 -
在oracle中如何使用正确的姿势删除近亿级大表中的业务数据
项目背景今天业务方要求对某张近亿级的大表只保留今年的业务数据,今年以前的业务数据全部删除,不再使用。系统环境oracle11.2.0.4 两台单节点ADG,主库对我司自己的微应用提供读写,备库对其他业务单位的应用提供读访问,备库上坏了一块磁盘,备库同步经常出现延迟。目前该业务表今年的数据只有1200万条记录,总记录8000多万。实现方式1、批量多次少量删除业务数据2、重新创建一张业务表A,将B表今年的业务数据插入到该新表中,将B表rename B_bak,将A表rename B.两个方式对比原创 2020-12-01 23:14:04 · 669 阅读 · 0 评论 -
大事务导致OGG复制进程延迟几个小时
系统环境源和目标数据库都是oracle11.2.0.4OGG:12.0.1遇到的问题问题分析与处理参考资料OGG/LOGDUMP:https://www.ateam-oracle.com/loren-pentonlogdump:http://blog.itpub.net/25174901/viewspace-2121452/原创 2020-11-19 14:13:08 · 1718 阅读 · 0 评论 -
oracle迁移到阿里ADB---SQL语句书写规范
项目背景最近遇到一个几年前开发的项目,SQL语句是基于oracle数据库开发的。因去O、上云的大背景,准备将oracle数据库迁移到其他数据库中,调研有两种方案:一是在专有云上自建数据库,二是在专有云上直接申请云数据库,最后结合项目整体情况(包括运维成本、开发成本、项目进度等 )考虑,决定直接使用阿里云的ADB3.0 ,接下来就将SQL适配过程中遇到的SQL语句书写规范整理如下SQL规范1、SQL语句统一使用小写2、多表关联时,所有列名的引用必须使用表别名前缀select a.col1,b.col原创 2020-11-02 15:32:20 · 468 阅读 · 0 评论 -
批量生成数据迁移神器datax的json配置文件
项目背景项目每天需要从oracle,gbase8a两种数据库中抽取增量数据和全量数据,之前是基于kettle+crontab来实现数据的抽取与调度实现思路实现方式总结参考资料https://www.yuque.com/docs/share/454e9a42-b6c7-44b2-9d29-1d5795199456?#a92bb2f4...原创 2020-10-14 16:17:30 · 4202 阅读 · 6 评论 -
substr函数在oracle、mysql、postgresql数据库中使用区别
项目背景去O路上,遇到的函数使用问题substr使用区别oracle substrselect substr(‘aaaa’,0,4)mysql substrselect substr(‘aaaa’,0,4)请问在两个数据库中,上述两个函数的执行结果是一样的吗?总结1、oracle中substr函数的语法兼容性更好2、mysql中substr函数截取是从1开始的...原创 2020-07-07 22:42:40 · 1418 阅读 · 2 评论 -
通过sqluldr2从oracle向greenplum迁移数据时遇到 clob字符截断问题
系统环境源库:oracle目标库:greenplum迁移工具:sqluldr2遇到的问题1、表中有clob类型的大字段,存储长度为几十万,通过sqluldr2迁移数据时发生截断错误解决思路1、对该分两次进行迁移,第一次跳过该列,第二次单独用应用程序来处理CLOB2、尝试通过datax来实现,目前datax支持的数据库列表中虽然没有greenplum,可以尝试用postgresql的驱动试试。...原创 2020-06-29 23:25:41 · 969 阅读 · 0 评论 -
通过datax批量从oracle迁移数据到oracle
项目背景https://blog.csdn.net/weixin_41561946/article/details/106957890说明1、datax软件已经在/home/oracle目录下安装好2、将oracle_to_oracle_sigle.sh放在/home/oracle/datax/script下3、将oracle_to_oracle.json放在/home/oracle/datax/job4、将table_name.txt放在/home/oracle/datax/jobshell原创 2020-06-28 16:16:26 · 1964 阅读 · 1 评论 -
生产环境中每5分中增量同步一次数据时遇到的性能问题
前言https://blog.csdn.net/weixin_41561946/article/details/106957890实现方式遇到的问题解决思路和方法总结原创 2020-06-25 16:38:49 · 305 阅读 · 0 评论 -
生产环境中实现每5分钟增量同步一次数据
项目背景业务提出这样一个需求,需要将oracle数据库(简称A库)中的70多张业务表迁移并同步到另一个oracle库(简称B库)下,这70多张业务表都是按月创建的分区表,目前每个张有20万张记录,以每5分钟的频率新增一条记录,需要将新增的记录同步是B库下,同时从这70多张业务表上取出最新一条记录的部分字段作展示注意:同一张表有可能多次查询,每次只取两个字段。需求分析实现思路与方法1、业务表结构和数据迁移实现方面的很多,比如kettle,datax,navicat,这里不是再详述2、业务表有明确的原创 2020-06-25 14:50:32 · 1314 阅读 · 0 评论 -
oracle迁移到mysql的一些语法问题
项目背景GW辽宁去O,将所有业务数据迁移到mysql 数据库中,迁移完成后,后端SQL代码存在许多兼容性问题,下面将遇到的问题整理如下SQL语法支持问题1、对于connect by start 语法需要改写2、不支持with as 的写法,mysql8.0以后支持3、不支持decode语法,使用case when then end替换4、使用ifnull替换nvl函数5、mysql的行长为655366、不支持rownumber() over(partition by order by ),需原创 2020-06-18 23:26:40 · 194 阅读 · 0 评论 -
数据库备份方案
1.引言1.1.备份的意义单独说备份有没有意义,意义在哪里,作为dba的你是不是有时觉得这还是需要说吗,肯定是有意义的,那意义在哪里呢?一时之间又回答不上来,我们在描述一件事情的时候,是有相应的业务场景的,如果说数据库因一些意外情况(如误删除)发生,导致数据不能正常使用,这时没有备份,怎么办呢?这就是备份的意义所在。1.2.备份的目的备份的目的是为了防止当意外情况发生时,可以使用备份数据去做还原操作。那么是不是所有的意外情况发生后,都能通过备份数据去还原,这就与采用什么样的数据库备份方式有关系了。原创 2020-06-13 23:11:46 · 2071 阅读 · 0 评论 -
mysql、oracle、postgresql库内迁移的几种方法
项目背景从多种数据库向mysql数据迁移,mysql作为离线数据仓库,迁移之前并没有对mysql库名进行提前规划,导致mysql数据库里的数据库名称特别乱,现在重新定义一套建库标准规范,准备重新建库并将原来库里的数据导入到新库,老库的数据保留7天后删除,一共5个mysql数据库实例,分部在5台服务器上,最大的一个实例里15个库,整个实例的大小为400GB,其他4个实例上分别都有5-8个数据库,每个实例的总大小在80GB左右,5台 服务器的上的硬盘空间是足够的。mysql库内迁移的几种方法1、利用数据库原创 2020-05-26 23:07:51 · 221 阅读 · 0 评论 -
如何快速获取多列表中的大部分字段
场景:项目上经常需要查询一个表中的大部分列,如何快速生成相应的SQL语句呢?测试环境:mysql5.7.29pg11.6oracle11.2.0.4功能验证:mysql5.7.29查询业务表中除’ID’,‘title’以外所有的列SELECT CONCAT(’ select ‘,GROUP_CONCAT(COLUMN_NAME),’ from ‘, TABLE_NAME,’ ;’) FROM information_schema.COLUMNS WHERE table_name = ‘se原创 2020-05-24 13:32:47 · 343 阅读 · 0 评论 -
oracle11.2.0.4迁移到mysql5.6.46遇到的问题
系统环境oracle 11.2.0.4mysql5.6.46问题1、mysql的varchar,txt类型的列值,默认是不是区分大小写的。通过kettle将oracle一张表向mysql迁移,在mysql中该表在ID字段上有唯一索引,迁移过程中报存在重复值 ,但查询oracle中的表,确认没有重复值,只有将mysql中的唯一索引查询,再迁移,迁移成功。在mysql中根据之前的报错信息,查询该表,确是两条重复记录,才知识mysql的列值不区别大小写案例mysql> create table原创 2020-05-22 22:47:04 · 126 阅读 · 0 评论 -
oracle、postgresql、mysql相关的merge操作实现
项目背景:现在项目上所有数据库较多,最近研发需要对postgresql,mysql数据库进行类似oracle merge操作的运算,这里对oracle,mysql,postgresql merge 操作的用法进行测试。oracle mergemerge into的形式:MERGE INTO [target-table] A USING [source-table sql] B ON([conditional expression] and […]…)WHEN MATCHED THEN[UPDAT原创 2020-05-12 12:35:01 · 522 阅读 · 0 评论 -
创建一个多列大表的几种方式
背景:测试时,经常需要创建一些多列大表和加载大量数据,之前也临时写过很多脚本,但往往要马上用时,又一时半会儿写不出来(心里知道,但动手就是不行了),这里专门记录一下。系统环境mysql5.7.29oracle11.2.0.4postgresql11.2创建多列大表的几种方式1、通过shell脚本生成建表语句及数据2、通过存储过程生成建表语句及数据生成多列建表语句第一种方式,通过shell脚本生成建表语句#!/bin/bashv_num=1echo"droptableifexistsa原创 2020-05-10 22:15:32 · 690 阅读 · 0 评论 -
oracle、mysql、postgresql获取表与索引信息
数据库版本oracle 11.2.0.4postgresql11.6mysql5.7.29获取表名、表备注、表大小oracleselect b.table_name,a.comments,b.BLOCKS from user_tab_comments a,user_tables bwhere a.table_name=b.table_namemysqlpostgresql根据表...原创 2020-03-16 21:47:10 · 216 阅读 · 1 评论 -
pg、mysql、oracle同一列是否能创建两个索引
背景:今天晚上完全带偏了,本意是想研究一些mysql方式数据的几种方式,测试时总会点小问题,一再被打断。数据库版本:pg11.6、mysql5.7.29、oracle11.2.0.4测试内容同一列是否支持创建两个不同步索引测试语句:create table tt(id int primary key,val int ,desci varchar(100));create index...原创 2020-03-02 23:39:38 · 736 阅读 · 0 评论 -
pg、mysql、oracle子查询兼容性对比
背景:今天在查看mysql数据库一条语句的执行计划时,提示子查询需要加别名,于是对pg、oracle都做了一个测试,对比一下三种数据库的区别。数据库版本:pg11.6、mysql5.7.29、oracle11.2.0.4测试内容select * from (子查询) 写方问题测试表:create table tt(id int ,name varchar(100))场景一selec...原创 2020-03-02 23:05:37 · 739 阅读 · 0 评论