- 博客(140)
- 资源 (4)
- 收藏
- 关注
原创 Oracle 一次ddl锁表等待记录
ddl执行卡住了,event显示为行锁看到当前锁会话也没有发现问题查询表对象的session,发现大量不活动的连接,plsql客户端连接多达400多怀疑是中断会话导致ddl阻塞,杀完会话ddl执行成功了...
2020-02-12 11:57:03
452
原创 分析下Oracle组合索引顺序的差异
create index ix_ora_22on ora(systime,sqlname,db)create index ix_ora_23 on ora(sqlname,db,systime)ora表systime的选择性最高select * from dba_segments where segment_name like 'IX_ORA_2%'除了header_b...
2019-07-11 17:41:07
5158
原创 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
388
转载 mysql的dba_hist_sql*
01.schema_tables_with_full_table_scans,x$schema_tables_with_full_table_scans查询执行过全扫描访问的表,默认情况下按照表扫描的行数进行降序排序。数据来源:performance_schema.table_io_waits_summary_by_index_usage视图查询语句文本SELECT object_sch...
2019-05-17 18:04:56
354
原创 zabbix大表分区优化
history_uint表日增长5000w,分区表结构如下CREATE TABLE `history_uint` ( `itemid` bigint(20) unsigned NOT NULL, `clock` int(11) NOT NULL DEFAULT '0', `value` bigint(20) unsigned NOT NULL DEFAULT '0', `ns`...
2019-02-18 16:37:28
1040
原创 一次Oracle表空间100%的反思
Oracle表空间是需要手动扩的,这就有100%之后不可用的隐患 应用可能业务繁忙,data表空间迅速增加,dba来不及加表空间已经100%了 优化:1 数据文件添加直接size 30g,保证性能 2 可以为每个表空间添加一个自动扩展的数据文件 3 告警阈值建议不高于85%,并且是不包含自动扩展的空间的(留一条后路) ...
2019-02-02 12:04:04
605
原创 mysql 5.7开启审计
1 mysql社区版没有审计插件,下载mariadb-5.5.56-linux-x86_64.tar.gz解压获取server_audit.so插件,将server_audit.so上传到 /mysql/plugin/下2 安装插件mysql> INSTALL PLUGIN server_audit SONAME 'server_audit.so';3 开启参数mysq...
2019-01-22 11:57:19
2581
原创 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_incrementauto...
2019-01-18 14:49:53
565
转载 使用fio测试linux iops
FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。fio 官网地址:http://freshmeat.net/projects/fio/一,FIO安装wget htt...
2018-12-24 11:15:39
449
原创 oracle pkg自动导出发邮件
export ORACLE_SID=PRODsource /home/oracle/.bash_profilea="$1"str=`echo $a | tr '[:lower:]' '[:upper:]'`mkdir -p /tmp/dumppkg/rm -rf /tmp/dumppkg/* for pkg in ${str[@]};doecho $pkg######...
2018-11-01 18:26:10
4048
原创 mysql切割slow日志文件
#!/bin/bashtime=`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
1018
原创 java.sql.SQLException: Statement violates GTID consistency: CREATE TEMPORARY TABLE 解决
开发反馈存储过程程序报错报错信息:java.sql.SQLException: Statement violates GTID consistency: CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE can only be executed outside transactional context. These statements are ...
2018-09-17 16:32:01
6777
原创 Oracle准确的评估表碎片方法
使用avg_row_len * num_rows评估占用空间往往不准确,特别是存在大对象和列太多的时候 如何能真实的评估占用块数select count(distinct substr(rowid,0,15)) from tb1 实际占用的块数select s.blocks from dba_segments s where s.segment_name='TB...
2018-09-14 19:09:30
855
原创 oracle dba_tables.blocks和dba_segments.blocks的区别
除了已知的Dba_Segments .blocks = Dba_Tables.Blocks+Dba_Tables.Empty_Blocks +1(segment header block) 测试还发现dba_tables.blocks不是实时的,收集统计信息之后才会接近真实值dba_segments.blocks是实时的,当做完shrink表等操作之后,会自动更新真实值...
2018-09-14 16:34:40
686
原创 数据库原理之并发控制
事物是并发控制的单位保证事物一致性和隔离性,使用并发控制机制共享锁s,排他锁x1并发控制机制:a 三级锁 1修改数据之前加x锁 2在1基础上对读数据加s锁,读取完成释放 ...
2018-09-07 10:17:00
373
原创 ebs表统计信息收集
ebs使用fnd_STATS.GATHER_TABLE_STATS收集表统计信息,和一般的区别在于ebs会自动从FND_HISTOGRAM_COLS 收集直方图脚本如下: DECLARE CURSOR STALE_TABLE IS SELECT OWNER, SEGMENT_NAME, CASE WHEN...
2018-09-06 11:29:50
1409
原创 玩转linux防火墙firewall
启动:systemctl start firewalld.service关闭:systemctl stop firewalld.service状态:systemctl status firewalld.service默认对外开放22端口开放端口:firewall-cmd --zone=public --add-port=80/tcp --permanent 添加ip访问端口...
2018-08-27 16:24:18
170
原创 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
1433
1
原创 mysql备份表方法
备份表方法:此方法索引和increment值也会同步 CREATE TABLE tb_cab_bak LIKE tb_cab; INSERT INTO tb_cab_bak SELECT * FROM tb_cab;
2018-06-11 10:53:26
20030
原创 dba自研程序猿之友小工具之python图形化输入输出
wxformbuilder软件自动生成的gui.py放到python lib目录events触发按键-----------------------------------------------------------------------------------------------------------------------------------------------------...
2018-06-06 19:11:06
1038
原创 mysql8 数据字典
information_schema:数据库基础数据 COLUMNs INNODB_BUFFER_PAGE INNODB_COLUMNS INNODB_DATAFILES INNODB_INDEXES INNODB_METRICS INNODB_TABLESPACES INNODB_TABLESTATS information_schema.in...
2018-05-23 18:59:04
356
原创 redis单个db迁移
#!/bin/bashredis-cli -h 127.0.0.1 -p 6379 -a password -n 0 keys "*" | while read keydo redis-cli -h 127.0.0.1 -p 6379 -a password -n 0 --raw dump $key| perl -pe 'chomp if eof'|redis-cli -h 1...
2018-04-26 18:48:56
3176
转载 pt-osc详解
MySQL原生的Online DDL还是有很多限制的,还是会遇到data meta lock的问题等诸多不便,然后就有了我们今天的话题,通过pt-osc在线执行DDL。 一、pt-osc的工作原理 1、创建一个和源表一样表结构的新表2、在新表执行DDL语句(空表嘛,所以。。。)3、在源表创建三个触发器分别对应insert、update、delete操作4、从源表拷贝数据到新表,拷贝过程中源表通过...
2018-04-12 20:28:04
6185
转载 PL/SQL批处理语句:BULK COLLECT与FORALL
FORALL和BULK COLLECT可以让PL/SQL引擎把多个上下文却换压缩成一个,这使得在PL/SQL中的要处理多行记录的SQL语句执行的花费时间骤降下面详解这爷俩㈠ 通过BULK COLLECT 加速查询⑴ BULK COLLECT 的用法采用BULK COLLECT可以将查询结果一次性地加载到collections中,而不是通过cursor一条
2017-06-02 15:37:05
496
转载 pt-query-digest
一、pt-query-digest参数介绍.pt-query-digest --user=anemometer --password=anemometerpass --review h=192.168.11.28,D=slow_query_log,t=global_query_review \ --history h=192.168.11.28,D=slow_query_log,t
2017-03-02 16:17:52
777
原创 linux时间操作
1.时间命令:date向date命令传递参数适用‘+‘(加号),在传递的参数中%Y表示年%m表示月%d表示天%H表示小时(表示的时间是00-23)%M表示分钟%S表示秒%s(表示unix时间戳的秒数)样板:[root@it~]# date -d "1 day ago" +%Y-%m-%d2017-03-012时间戳转时间
2017-03-02 11:11:44
324
原创 自动汇总awr报告,并发出邮件!
1 自动生成awr-----------------------awr.sh-------------------------------export ORACLE_SID=PRODexport AWR_HOME=/home/oraprod/awrfilesource /home/oraprod/.bash_profilemv $AWR_HOME/* /tmpm=`s
2017-02-10 16:29:51
407
原创 DG关于备库日志缺失gap的问题
状态确认查询当前没有应用完的最小日志文件序列Select min(Sequence#) From V$archived_Log where Applied!='YES';mrp当前正在应用的日志序列select process,status,sequence# from v$managed_standby;通过查询可以看出当前应用日志
2017-01-18 18:54:38
1544
转载 redis
性能相关的数据指标通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息。通过这些信息来分析文章后面提到的一些性能指标。info命令输出的数据可分为10个类别,分别是:serverclientsmemorypersistencestatsrep
2016-12-29 18:06:18
533
原创 oracle检查密码过期
select * from dba_profiles where resource_type='PASSWORD' and resource_name='PASSWORD_LIFE_TIME' select * from dba_profiles where username='SYS' and resource_name='PASSWORD_LIFE_TIME' select * f
2016-11-29 19:10:35
1459
原创 通过oracle wallet配置listener tcps加密
一 配置客户端和服务端的wallet2端配置方法一致,相互添加证书orapki wallet create -wallet "/u01/oracle/wallet" -pwd Wdkf984jkkgekj434FKFD -auto_login_localorapki wallet add -wallet "/u01/oracle/wallet" -pwd Wdkf984jkkgek
2016-10-31 16:39:56
1663
转载 使用exp+pipe的方式直接将数据库导出到目标数据库(数据不落地成dmp,及传及导)
最早在oracle 8,Oracle 8i,Oracle 9i的时候,没有datapump,因此逻辑数据库迁移的工作多依赖于exp/imp,然而,当磁盘空间有限制,且停机时间短的时候,通常我们需要一种方式是数据不落地。那时候,我们常用方式就是借助于管道,也就是exp将数据库导出到pipe,目标段通过管道直接将数据imp到目标数据库,这样数据时不落地的,省去了生成dmp文件的时间和空间,
2016-10-27 10:51:28
1315
原创 解决enq: TM - contention TM 等待事件案例
解决enq: TM - contention TM 等待事件案例aWR后发现enq: TM - contention等待事件排第一位等待来自某个表的dml可能是外键约束上没有建立索引的问题。SELECT * FROM ( SELECT c.table_name, cc.column_name, cc.p
2016-10-20 15:08:41
1168
原创 impdp一个诡异的报错UDI-31623 ORA-31623
impdp操作报错impdp system/password directory=DATA_PUMP_DIR schemas=***** dumpfile=wmscontrol.dmp logfile=wmsconreol.log报错如下:UDI-31623: 操作产生了 ORACLE 错误 31623ORA-31623: 作业没有通过指定的句柄连接到此会话ORA-06512: 在 "S...
2016-09-19 10:07:45
9114
转载 sys_context函数
select SYS_CONTEXT('USERENV', 'TERMINAL') terminal, SYS_CONTEXT('USERENV', 'LANGUAGE') language, SYS_CONTEXT('USERENV', 'SESSIONID') sessionid, SYS_CONTEXT('USERENV', 'INSTANCE
2016-07-29 11:37:02
779
原创 adg数据文件无法创建问题
ORA-01511: error in renaming log/data filesORA-01141: error renaming data file 375 - new file '/u01/app/oracle/tb1.dbf' not foundORA-01111: name for data file 375 is unknown - rename to correct fi
2016-06-06 07:54:04
1064
原创 oracle sql性能对比工具runstats
此工具是tom编写的工具,用来评估sql的消耗创建:1授权grant SELECT on SYS.v_$statname to "SCOTT" ;grant SELECT on SYS.v_$mystat to "SCOTT" ;grant SELECT on SYS.v_$latch to "SCOTT" ;grant SELECT on SYS.v_$timer to "
2016-05-18 09:12:59
1212
原创 监控session process存储过程
DECLARE v_lower NUMBER :=1; v_upper NUMBER :=1000000;BEGIN FOR i IN v_lower .. v_upper LOOP DBMS_LOCK.SLEEP(1); insert into sp select (select count(0) from v$session) s,(sel
2016-04-19 08:49:25
395
转载 经典 定位等待事件问题方法
今天遇到个问题,客户说某天的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
704
原创 自动删除按时间自增量分区job
分区为按天分区,删除一个月前的分区先创建自定义函数long_2_varchar-------------------------------------------------------------------------------------------------------------------------------------------------------
2016-04-01 11:55:03
685
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人