Linux AS 使用内存文件系统
基本上也就是MySQL用用,在不想改变表的存储引擎的前提下,提高性能还是有不错的用处的。[@more@]比如要把内存划分60G给/usr/db作为内存文件系统1.在/etc/rc.d/rc.local中加入mkdir /dev/shm/dbmount --bind /dev/shm/db /usr/dbchmod 1777 /usr/db2.在/etc/fstab中加入tmpfs /dev/shm tmpfs size=61440m 0 0搞定
使用sysbench测试Mysql性能
sysbench可以用来测试oracle,mysql,os的性能,比较方便实用[@more@]首先要安装mysql 5,因为mysql 4不支持sysbench 0.4.8安装完以后按照下面的步骤配置sysbench:tar zxvf sysbench-0.4.8.tar.gz./configure --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=/usr/local/mysql/lib && make && make install如果安装完毕后运行sysbench碰到下面的错误:sysbench: error while loading shared libraries: libmysqlclient_r.so.15: cannot open shared object file: No such file or directory运行 exp
Megaraid 必知必会
使用LSI的megaraid可以对raid进行有效监控。别的厂商比如HP,IBM也有自己的raid API[@more@]MegaCli -ldinfo -lall -aall查询raid级别,磁盘数量,容量,条带大小。MegaCli -cfgdsply -aALL |grep Policy查询控制器cache策略MegaCli -LDSetProp WB -L0 -a0设置write back功能MegaCli -LDSetProp CachedBadBBU -L0 -a0设置即使电池坏了还是保持WB功能MegaCli -AdpBbuCmd -BbuLearn a0手动充电MegaCli -FwTermLog -Dsply -aALL 查询日志显示适配器个数: MegaCli -adpCount显示所有适配器信息: MegaCli -AdpAllInfo -aAll Critical Disks
修改sqlplus的SQLPROMPT
记着备用[@more@]alter session set nls_date_format='hh24:mi:ss';col login_info_temp new_value login_infoselect UTL_INADDr.get_host_name login_info_temp from dual;SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER _DATE &login_info SQL>"
老外的EXP&IMP总结
写的不错,方方面面都写的很认真,要是我也有这么认真就好了- -[@more@]Most DBAs know this old trick of using a named pipe in import or export on UNIX or Linux (not for Windows although it has the concept of named pipes). Most of the time you do this is when you need to export to or import from a compressed file. mknod tmppipe p #Create a named pipe, can also be: mkfifo tmppipe #export exp username/password file=tmppipe & cat tmppipe | gzip > expdat.dmp.gz #import cat expdat.dmp
使用SQL Developer 迁移异构数据库到Oracle
基本步骤基本如下:1.在oracle上创建资料库2.使用SQL Developer连接异构数据库,捕获对象3.生成oracle对象脚本4.执行脚本生成对象5.移动数据[@more@]第3步中,脚本中有date类型的话会发生ORA-01843: not a valid month,可以在脚本前加上2句:alter session set nls_date_language=AMERICAN;alter session set nls_date_format='DD-MON-YYYY';迁移数据时,如果数据有中文等非英语字符,那么要注意字符集的转换,被迁移数据库,SQL Developer,oracle数据库字符集一定要一致。以mysql为例:在my.cnf中加上default-character-set=gbk,重启o
dataguard故障处理一则
primary rac+single dataguard结构[@more@]主库2节点其中一台意外宕机,宕机后发生问题:节点1一切正常,归档可以正常归到standby端。节点2本地归档正常,但是没有归档到远程standby端。查询v$archived_log也没有记录,standby端的日志也均无记录,在主库端switch log触发无效。最后只能kill节点2的arch进程。恢复正常。
RAC添加节点后dataguard发生ORA-1264错误
这个其实是metalink上一个problem的变种。[@more@] 最近一台rac的主机硬件坏了,修好后用添加节点的方式重新加入rac,新添加的实例自然有一个undotbs和online redo。添加完毕我switch了下log,看到2个dataguard的节点都出现了新的undotbs的数据文件。以为ok了。 过了一会儿dataguard的监控报警了,一看alert发现了下面的错误:No OMF destination specified, unable to create logs Errors with log /db2/arch/sdavtpst/2_221_686846102.dbfMRP0: Background Media Recovery terminated with error 1264Errors in file /usr/u01/app
rac的vip和监听莫名故障
要说还是维护人员随意改动环境造成的,对于生产环境尤其是rac环境最好能不动就不动。。。[@more@]昨天数据管理中心来求救,说2个oracle 11g的集群昨天开始同时出现vip每隔几分钟就胡乱漂移到别的节点上,监听也出现不时的死掉再自己起来的情况,听到这些基本确认应该不是集群自身的问题,也不会这么巧同时出问题。而且出问题的又是监听和vip。问题一定在网络设置部分,查看了hosts和网络连接超时,都是ok的。问了下说这几天没对机器做任何配置变更。这下郁闷了,crs的log里都是CheckResource error for ora.dc-cluster-01.vip error code
11g 创建data guard遇到ORA-16191
老问题了:ORA-16191+Error 1017 [@more@]Fri Apr 17 11:07:31 2009LNS1 started with pid=32, OS id=15442 Thread 1 advanced to log sequence 22 (LGWR switch) Current log# 1 seq# 22 mem# 0: /db1/oradata/gtavatar/redo01.rdo Current log# 1 seq# 22 mem# 1: /db2/oradata/gtavatar/redo01a.rdo******************************************************************LGWR: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2******************************************************************Error 1017 received
运行runInstaller没有界面弹出
今天让别人装个11g,结果告诉我运行了runInstaller没有安装界面弹出来。。。。[@more@]这倒是没看到过,自己试了把也是这个情况。vnc能起来没道理oui起不来啊。。。使用xstart发现,no space on device,一看/目录满了。。。。然后查了下是/tmp满了,ll -a发现一个隐藏的oracle安装文件,大小正好,删之。重启runInstaller成功,后来一问是第一次传错目录传到/tmp了。然后中断之后就没注意,这个问题挺有意思。。。。。
下载个东西还要权限
。。。。。。不能下就不要放出来嘛[@more@]自己也不好,懒得申请斑竹,索性sg的东西一般都不如文档,还是无聊看看文档好了http://www.itpub.net/viewthread.php?tid=1150180&extra=&page=1http://www.itpub.net/thread-1150165-1-1.htmlhttp://www.itpub.net/viewthread.php?tid=1076860&extra=&page=3http://www.itpub.net/thread-1076855-1-4.html
Oracle升级导致ocr文件损坏一例
所以说对于生产库,备份重要啊。。。[@more@]备用的集群rac发生意外宕机,一边查硬件原因一边查oracle这边的问题。发现数据库是10.2.0.3但是crs是10.2.0.1,虽然不能断定是这个原因,但是排除法嘛,先试试看咯,结果试了一身冷汗。。。过程一路顺利,启动crs,所有节点服务也正常起来了,但是迟迟看不到数据库起来,crs_stat检查发现所有的实例和service都没起来。手工是用sqlplus 启动正常,数据库也可以打开。但是使用srvctl启动就报下面的错误:[oracle@bj15-75 ~]$ srvctl start database -d membjPRKP-1001 : Error starting instance
重要的Myisam Mysql系统至少需要几个库?
对于比较重要的系统,自然是多多益善,但是总有个最小值咯。好比有人问oracle rac几个节点会比较好一样。[@more@]答案是3个:主库,读库,备库。因为Myisam锁的管理原理,导致查询会阻塞更新,mysqlhotcopy会锁住表防止更新和查询。大大影响了系统的可用性。这样一来,对于做读写分离的系统,除了写和读库以外,必然需要一个库来做备份和报表查询。因为报表查询一般需要很长时间,不可能允许读库被阻塞很久,而随着数据库容量增大,备份的时间也会变得很长。因此备库的作用就是缓解这2部分,备库的另外一个作用就是做复制,提到复制大家知
使用mysqlhotcopy
首先系统的perl包和DBD/DBI一定要全,并且版本要对应好,不然调用mysqlhotcopy很容易出错。特别有名的错误就是:Can't locate DBI.pm in @INC另外要注意,OS和Mysql的位数要一致,否则Mysqlhotcopy调用perl时会发生错误。[@more@]以mysql 4.0.27为例,DBI我们选用DBI-1.53,DBD则为DBD-mysql-3.0008将2个包上传到服务器,用yum直接安装也可以,但是有的情况下版本对应会出现错误导致hotcopy不可用。tar zxvf DBI.tar.gzcd DBI-1.53perl Makefile.PLmakemake testmake installtar zxvf DBD-mysql-3.0008.tar.gzcd DBD-mysql-3.0008perl Mak
用shell实现Mysql延时复制
这个脚本初步实现了mysql的延时复制,以后还会继续加强[@more@]lag_minute=30sleep_time=5binlogdir=/usr/local/mysql/datacd $binlogdirlag_time=`expr $lag_minute * 60`while [ 0 -eq 0 ]dorelay_pos_str=$(echo `mysql -e "show slave statusG"|grep -i Relay_Log_Pos`)relay_pos_val=`expr substr "$relay_pos_str" 16 30`echo $relay_pos_val>relay_pos_val.hisrelay_file_str=$(echo `mysql -e "show slave statusG"|grep -i Relay_Log_File`)relay_file_val=`expr substr "$relay_file_str
Mysql 监控系统
oracle的监控,市面上非常的多,最著名的应该是quest的产品spotlight。基本上能够做到的全做到了。但是针对Mysql的监控产品还是非常少的,quest的spotlight on mysql对5以下的版本和MYISAM的引擎监控能力就非常有限,另外一个比较好的产品是oracle grid control上的一个mysql 控件,是由民间开发的,功能很强,也通过了oracle的认证,但麻烦的是,对grid control要求10.2.0.3,对mysql要求4.0.27以上,那么对于一些比较老的版本,或者是部署grid agent有问题的环境就比较吃力了。大部分DBA想的办法都是写脚本,这里就公布一个脚本,基本上
--skip-slave-start的重要性
一次问题解决过程[@more@] 原来做复制的主机因为数据丢失需要重新创建复制环境,机器上已经有了主库数天前的备份,于是删除数据目录直接把备份放上去,结果发现复制没有抱错,show slave status一切正常,select count(*)某张大表也是不断增加,但是查询该表的max id确迟迟不动。 于是把这条最大的数据拿出来看,发现数据是今天的。而slave的同步信息显示才读取到2天前的binlog而已。 这台机器既做slave又做master,设置了log-binlog-slave-updates 环境比较复杂,一开始猜想是不是环境设置问题造成的,但是检查回
Slave: received 0 length packet from server, apparent master shutdown
又是server-id这个参数的原因[@more@]过完节第一天检查数据库,发现一台mysql的slave报出大量的Slave: received 0 length packet from server, apparent master shutdown.日志文件已经2g了.....但是数据倒是还在走,尝试stop slave再start slave,报错 :Error reading packet from server: log event entry exceeded max_allowed_packet; Increase max_allowed_packet on master (server_errno=1236)再检查下mt.cnf果然还是server-id和别的slave的重复造成的,重新设置下第一个错误就ok了,第二个错误么可能就是使用了LOAD DATA或者mysqlim
安装Oracle 11g rac for linux as 4 update 4
基本上和10g没什么大区别,只有一些小地方不同而已。oracle版本:11.1.0.6 for Linux x86_64[@more@]rpm包的要求,hangcheck的配置,oracle用户身份对等性连接,hosts配置和裸设备配置全部与10g相同,这里就不复述了。主要区别一个是voting disk和ocr的大小,11g中要求均大于256m,如果不到大小则安装cluster时会提示。另外在安装cluster时,第一个节点执行root.sh没有问题,而第二个节点报出:Adding daemons to inittabWaiting for the Oracle CRSD and EVMD to startWaiting for the Oracle CRSD and EVMD to startWaiting for the Orac