RAC遇到GC Buffer Busy的解决方法

Leave a Comment2010年07月06日 作者: 大头刚 

    一朋友求助说他的ORACLE RAC服务器负载不是很稳定,时高时低,且没有任何规律。摘取负载高峰时间的一段日志来分析,最大的等待如下:

^LTop SQL Statements       DB/Inst: BOSSCENT/bosscent1  (May 19 13:17 to 13:32)
 
       SQL ID    Planhash % Activity Event                             % Event
————- ———– ———- —————————— ———-
f9rf7a8cg40nt         N/A       9.14 gc buffer busy                       2.53
insert into test(id,user_id,point_num,time,point_gettype,sex) values(
:1,:2,:3,sysdate,:4,:5)
 
                      N/A       9.14 gc current block busy                2.22
insert into test(id,user_id,point_num,time,point_gettype,sex) values(
:1,:2,:3,sysdate,:4,:5)
 
                      N/A       9.14 gc current block 2-way               1.42
insert into test(id,user_id,point_num,time,point_gettype,sex) values(
:1,:2,:3,sysdate,:4,:5)
bs6z6hs8sum53  1007834728       8.09 [...]

简单对比Mysql的AUTO_INCREMENT和Oracle的SEQUENCE

1 Comment2010年06月11日 作者: 大头刚 

好几年前刚学习MYSQL的一些笔记,当时把MYSQL和ORACLE进行一系列对比。前几天遇到MYSQL的AUTO_INCREMENT值增长到极限,导致表无法插入的问题,正好把以前的笔记复习下。
使用oracle的scott模式的数据作为测试数据:

oracle>conn mytest/mytest
Connected.
 
oracle>@$ORACLE_HOME/sqlplus/demo/demobld.sql
 
oracle>select table_name from user_tables;
 
TABLE_NAME
————————————————————
BONUS
DEPT
DUMMY
EMP
SALGRADE

把这些表在导入到MYSQL,具体过程就省略了。

mysql> show tables;
+——————+
| Tables_in_mytest |
+——————+
| bonus |
| dept |
| dummy |
| emp [...]

利用RMAN的DUPLICATE创建STANDBY,可以在不停机的情况下将单实例数据库迁移到RAC数据库。当然这种不停机是指相对的,在DG进行切换的时候,停机时间可以保证在5分钟之内完成。
首先确保目标服务器上的RAC环境已经建立,由于RMAN的DUPLICATE创建STANDBY,没有办法将数据文件放到远端的ASM磁盘组中,本次测试使用OCFS2做为RAC的共享存储文件系统。如果使用ASM作为存储机制,无法实现不停机迁移。
测试环境:

primary sid : test
primary ip : 192.168.1.200
 
standby sid : testrac01,testrac03,testrac03
standby Public ip : 192.168.1.101,192.168.1.102,192.168.1.103
standby Virtual ip : 192.168.1.201,192.168.1.202,192.168.1.203
standby Private ip : 10.0.0.1,10.0.0.2,10.0.0.3

RAC数据库环境如下:

SYS@test_rac01>select * FROM v$version;
BANNER
—————————————————————-
Oracle DATABASE [...]

Oracle利用dbms_backup_restore进行恢复

Leave a Comment2009年10月27日 作者: 大头刚 

需要搭建一个oracle测试环境,把上周末的一个全备拿出来做恢复。把oracle安装到原始库相同目录,把备份COPY到原始库的备份目录,包括数据文件备份、控制文件备份、归档日志备份。用dbms_backup_restore进行恢复。
一、利用dbms_backup_restore来restore控制文件。

Oracle实现Mysql里的G标志

Leave a Comment2009年09月16日 作者: 大头刚 

这篇文章我曾经在chinaunix的blog发表过,现在转过来。
mysql中提供了一个G [g] 标志,放到sql语句后,可以使一行的每个列打印到单独的行。例如:

mysql> select * from test limit 2\G;
*************************** 1. row ***************************
test1: 0
test2: 0
test3: 0
*************************** 2. row ***************************
test1: 0
test2: 0
test3: 0
2 rows in set (0.02 [...]