
实战技巧
Richard-Han
库是死的,sql是活的。。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Oracle 一次ddl锁表等待记录
ddl执行卡住了,event显示为行锁 看到当前锁会话也没有发现问题 查询表对象的session,发现大量不活动的连接,plsql客户端连接多达400多 怀疑是中断会话导致ddl阻塞,杀完会话ddl执行成功了 ...原创 2020-02-12 11:57:03 · 468 阅读 · 0 评论 -
经典 定位等待事件问题方法
今天遇到个问题,客户说某天的11:45开始,系统遇到了大量的cursor pin s wait on X,经历一个小时后自动消失,需要查找原因。 这报错一般是某个会话需要申请S模式的mutex,而mutex被其他会话以X模式占有了。查holder也很容易,11g版本前看p2raw的前8位,将16进制转换成10进制即为holder的sid,在11g之后只需直接看blocking_session即可转载 2016-04-12 18:03:20 · 716 阅读 · 0 评论 -
使用exp+pipe的方式直接将数据库导出到目标数据库(数据不落地成dmp,及传及导)
最早在oracle 8,Oracle 8i,Oracle 9i的时候,没有datapump,因此逻辑数据库迁移的工作多依赖于exp/imp, 然而,当磁盘空间有限制,且停机时间短的时候,通常我们需要一种方式是数据不落地。 那时候,我们常用方式就是借助于管道,也就是exp将数据库导出到pipe,目标段通过管道直接将数据imp到目标数据库,这样数据时不落地的,省去了生成dmp文件的时间和空间,转载 2016-10-27 10:51:28 · 1336 阅读 · 0 评论 -
通过oracle wallet配置listener tcps加密
一 配置客户端和服务端的wallet 2端配置方法一致,相互添加证书 orapki wallet create -wallet "/u01/oracle/wallet" -pwd Wdkf984jkkgekj434FKFD -auto_login_local orapki wallet add -wallet "/u01/oracle/wallet" -pwd Wdkf984jkkgek原创 2016-10-31 16:39:56 · 1681 阅读 · 0 评论 -
redis
性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息。通过这些信息来分析文章后面提到的一些性能指标。 info命令输出的数据可分为10个类别,分别是: server clients memory persistence stats rep转载 2016-12-29 18:06:18 · 543 阅读 · 0 评论 -
tcpdump分析端口3306
# tcpdump -i ens160 -s 0 -l -w - dst port 3307 | stringstcpdump: listening on ens160, link-type EN10MB (Ethernet), capture size 262144 bytescommitSET autocommit=1SELECT pk_psndoc,--------------...原创 2018-06-26 16:59:34 · 1479 阅读 · 1 评论 -
mysql切割slow日志文件
#!/bin/bash time=`date -d yesterday +"%Y-%m-%d"` /usr/bin/find /data/mysql/apm-3306/log/ -name 'apm-slow-*' -mtime +7|xargs rm -rf ; mv /data/mysql/apm-3306/logslowquery_20181001.log /data/mysql/ap...原创 2018-10-01 15:53:47 · 1036 阅读 · 0 评论 -
mysql8新特性 hint variables
mysql 8 开始支持对sql临时生效variables 语法格式: SELECT /*+ SET_VAR(optimizer_switch = 'mrr_cost_based=off') SET_VAR(max_heap_table_size = 1G) */ * FROM t1; 支持的参数列表: auto_increment_increment auto...原创 2019-01-18 14:49:53 · 589 阅读 · 0 评论 -
mysql Specified key was too long; max key length is 767 bytes
MySQL默认的索引最大长度是767字节,在5.5版本开始后可以通过设置innodb_large_prefix=on来增大索引长度,可达到3072字节,但是只有row_format=DYNAMIC/COMPRESSED的情况下索引的长度才能超过767字节,MySQL默认的行格式为compact,所以需要将row_format改成DYNAMIC/COMPRESSED才能支持 ...原创 2019-06-12 16:09:39 · 404 阅读 · 0 评论 -
解决DG备库延迟一例
症状:io读写没有达到最高负载,但是iowait异常高,备库cpu mem无任何压力 分析:测试io性能没有问题,iowait可能和索引,序列,数据库频繁commit或logfile频繁切换等这些数据库设置有关 解决:巡检发现有2个大表,分别12亿和7亿数据,3个全局索引,最后删了12亿的日志大表大部分分区 备注:可以确定是全局索引太大导致的iowait,只有删数据或进一步提升IO性能解原创 2015-11-26 14:48:31 · 2961 阅读 · 0 评论 -
relink处理ORA-12547:TNS:lost contact
当操作系统升级后、操作系统打完补丁后、安装完Oracle补丁之后和relink过程中出现问题时,都会用到relink方法来保证Oracle软件的正常使用。 如果遇到个别或大量可执行程序无法正常使用时也可以考虑使用relink重新初始化Oracle软件。 [oracle@localhost admin]$ sqlplus / as sysdba SQL*Plus: Rele原创 2015-11-10 10:08:19 · 1488 阅读 · 0 评论 -
Linux环境利用恢复被rm意外删除数据文件
Linux环境下不小心在操作系统误rm删除数据文件后,在没有重启数据库或者操作系统的情况下可以利用操作系统句柄恢复。[@more@]1、数据库版本信息: SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle Database转载 2014-09-14 00:47:44 · 636 阅读 · 0 评论 -
经验之谈-有一次
1.有一个sql是好几个视图做join,走的hash,所以会有write temp,我这边执行成功之后,再次执行发现自己很快出结果,同事那边一直run,最后查看等待事件发现,我这边再次查询不需要write temp,而同事需要write temp,可以看出执行产生的temp会保留,oracle还是比较聪明的,但是还不够聪明原创 2015-05-11 12:31:20 · 253 阅读 · 0 评论 -
Oracle shutdown immediate无法关闭数据库解决方法
在测试服务器上使用shutdown immediate命令关闭数据库时,长时间无法关闭数据库,如下所示 1: [oracle@DB-Server admin]$ sqlplus / as sysdba 2: 3: SQL*Plus: Release 10.2.0.4.0 - Production on Thu Nov 21 13:55:13 2013转载 2015-06-05 12:57:04 · 667 阅读 · 0 评论 -
解决kill大事务导致的undo争用
wait for a undo record是cpu并行恢复的资源争用undo记录的等待事件 调整相关参数 fast_start_parallel_rollback 为false,进行串行恢复。 调整参数 fast_start_parallel_rollback 为false,这样回滚的进程就只会有一个,速度有时候反而比并行回滚还快。 SQL>show parameter原创 2015-08-25 18:53:38 · 1143 阅读 · 0 评论 -
请commit!commit!
这就好比是无休止的插入,对数据库造成的影响是原创 2014-09-17 18:56:54 · 524 阅读 · 0 评论 -
redolog坏块处理
1报错如下 ORA-00354: corrupt redolog block header ORA-00353: log corruptionnear block 162280 change 465824441547 time 08/28/2015 10:44:22 ORA-00312: online log 5 thread 1:'/u01/oradata/dpweb/redo05.l转载 2015-08-29 10:25:38 · 994 阅读 · 0 评论 -
oracle表设计
oltp: 1按常访问的列(主键等),顺序排列,把允许null的字段放后面 2一个维度一个表,数据值最好是1:1或1:n的关系 3注释的习惯,和索引列表 4表数据和索引数据放不同的表空间 5powerdesigner工具使用 6主键如果使用序列导致热块,可以使用反键索引(反向键索引也有它局限性:如果在WHERE语句中,需要对索引列的值进行范围性的搜索,如BETWEEN、等,其反向键索引原创 2015-06-14 16:10:54 · 1985 阅读 · 0 评论 -
解决等待事件方法记录表
常见的: rac的: gc buffer busy 产生原因(多实例同时更新一个表) 解决:对表做分区,分区键是实例名这个常量值原创 2015-10-20 15:57:37 · 347 阅读 · 0 评论 -
关于需要优化的大表在不影响 业务的情况下实现数据转移到新分区表
1建分区表 2rename操作 3原创 2014-08-25 13:28:59 · 530 阅读 · 0 评论