首页 | 摘要显示 | 上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 下一页

Oracle Archives

December 18, 2007

MVIEW引起ORA-04031

    有一个数据库报了ORA-04031错误, 等我们上去看时, 却是好的, 通过查询Statspack有关视图, 发现Shared Pool Free Memory在这之前是逐渐减少的, sql area部分占得很大. 可能的原因是, 当Oracle遇到这个错误后, 自动做了一次Flush Pool操作. 于是写了一段程序去跟踪SQL占用的内存, 发现有两个SQL语句很不正常, 版本数很多, 占用的内存也很大, 差不多占了一半的sql area.

ASQL> ora share

ADDRESS          CHILDS     BYTES
---------------- ------ ---------
0000040000A328F8   1026 215577124
000004000F7AB058   1026 215503530

    来看一下这两个SQL语句是什么?

ASQL> ora sql 0000040000A328F8

update sys.sumpartlog$ s set s.timestamp = :1, s.scn = :2
  where  rowid in  (select rowid from sumpartlog$ AS OF SNAPSHOT(:3) s1
     where s1.bo# = :4   and s1.timestamp >=
           to_date('4000-01-01:00:00:00','YYYY-MM-DD:HH24:MI:SS'))

ASQL> ora sql 000004000F7AB058

update sys.sumdelta$ s set s.timestamp = :1, s.scn = :2  
   where  rowid in  (select rowid from sys.sumdelta$ AS OF SNAPSHOT (:3) s1  
        where s1.tableobj# = :4   and s1.timestamp >=
            to_date('4000-01-01:00:00:00','YYYY-MM-DD:HH24:MI:SS'))

    很明显这不是我们系统中的SQL语句, 因具只好搜索Metalink了, 找到这两个表和实体化视图的On Commit刷新有关. 进一步查这些SQL语句不能共享的原因, 发现都是FLASHBACK CURSOR这一列为Y. 进一步搜索Metalink, 终于找到原因了, 是Bug 6010070. 现在还没有办法解决, Oracle明确没有说哪个版本已解决. 只要不用On Commit刷新就行了.

December 28, 2007

Mini VMWare Oracle RAC

    创建第一个RAC节点时, 分了一个4GB的盘, Linux已经是选择最小安装了, 然后自已手工安装的gcc开发包及基本X-Windows系统, 能运行xterm就行. 后来搞了一个更小的3G, 分区设置如下:

/boot : 64MB
swap  : 384MB
/     : 2578MB

    手工安装开发包的命令如下, 可能这些包的版本要改改, 这些是RHAS4 Update 5的.

rpm -i gcc-3.4.6-8.i386.rpm \
       cpp-3.4.6-8.i386.rpm \
       glibc-devel-2.3.4-2.36.i386.rpm \
       glibc-headers-2.3.4-2.36.i386.rpm  \
       glibc-kernheaders-2.4-9.1.100.EL.i386.rpm
rpm -i compat-libstdc++-33-3.2.3-47.3.i386.rpm \
       compat-gcc-32-3.2.3-47.3.i386.rpm
rpm -i libaio-0.3.105-2.i386.rpm

    安装好后, 还要设一下gcc的版本, Oracle安装时要求3.2版本的.

cd /usr/bin
mv gcc gcc34
ln -s gcc32 gcc

    后来要将盘减为3G时, 将CRS和DB的jre和jdk目录合为一个了, 方法是将jdk拷到和CRS相同的目录, 然后在CRS_HOME删除jre和jdk及JRE目录, 加上符号连接. DB下面照做. 在DB中还删除了javavm下的classes.bin, oc4j目录, 及数据库模板文件, 这样整完后DB加CRS是1.16G左右.

阅读全文

December 29, 2007

Linux Oracle RAC内核参数

    在Oracle RAC/DB的安装过程中, 会要求调一些Linux内核参数, 如下所示.

# For Oracle 10g RAC
kernel.sem=250  32000   100     128
kernel.shmmax=1048576000
kernel.shmmni=4096
kernel.shmall=2097152
fs.file-max=65536
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144
net.ipv4.ip_local_port_range=1024  65000

    将上面的这几行加到/etc/sysctl.conf的最后, 然后运行如下命令使之生效.

sysctl -p

    在拷贝出来的结点中, 没有更改这些参数, 也没有问题出现, 能启动.

Linux OCFS2安装及配置

    OCFS2是一款廉价的Cluster文件系统(Cluster File System), 由Oracle领导开源方式开发的, 可以到Oracle OSS网站上免费下载现成的或源代码进行编译. 要下载两个包, 需要注意和Linux内核的版本匹配总题, 如果下载源码自行编译则另说.

rpm -i ocfs2-2.6.9-55.ELsmp-1.2.7-1.el4.i686.rpm \
       ocfs2-tools-1.2.7-1.el4.i386.rpm

    安装后, 用root用户创建"/etc/ocfs2/cluster.conf"文件, 配置如下(你可能要改你的ip地址和主机名).

cluster:
        node_count = 2
        name = ocfs2
node:
        ip_port = 7777
        ip_address = 192.168.20.10
        number = 0
        name = DB01
        cluster = ocfs2
node:
        ip_port = 7777
        ip_address = 192.168.20.20
        number = 1
        name = DB02
        cluster = ocfs2

    然后运行如下命令, 进行装载ocfs2模块.

service o2cb load
service o2cb online ocfs2
service o2cb status

    在"/etc/fstab"中加入mount信息, 这里"/dev/sdb5"是我的共享盘设置, "/sharedisk"是我要装载的目录.

/dev/sdb5  /sharedisk  ocfs2   _netdev,datavolume,nointr 0 0

    接下来就可以进行挂载了.

December 31, 2007

Oracle RAC VIP不能启动?

    在笔记本上完成三个节点的Oracle RAC安装已经好几天了, 先是在一个节点上用图形界面安装的, 另外两个是装了OS后, 用rsync将CRS和DB软件拷贝过去, 然后在命令行下完成所有设置的. 虽然RAC服务是可以起来了, 数据库也可以在三个节点打开, 但是一些外围服务去一直没有跑起来, 包括vip.

    晚上先是在google上搜索了一下, 发现好象遇到了一个bug, 我的hosts和ocr中设置的机器名都是小写的, 而hostname命令输出的则是大写的, 导致了vip不能自动启动. 通过更改/etc/sysconfig/network文件, 然后重启服务器更改了, 不知道不重启, 运行如下命令行不行?

echo "db01" > /proc/sys/kernel/hostname

    很幸运地, 这台机器重启后, 启动crs, 发现vip服务已经启动了, 但如法泡制第二个节点时, 还是不行. 不知道那根筋搭错了, 去比较了一下两台数据库的公共网卡的配置文件(/etc/sysconfig/network-scripts/ifcfg-eth0). 发现不行的网卡少了两行.

DEVICE=eth0
BOOTPROTO=static
BROADCAST=138.1.137.255
HWADDR=00:0C:29:FE:66:2A
IPADDR=138.1.137.20
NETMASK=255.255.255.0
NETWORK=138.1.137.0
GATEWAY=138.1.137.1
ONBOOT=yes
TYPE=Ethernet

    于是加了这两行, 并用重启一下这块网卡.

crsctl stop crs
ifdown eth0
ifup eth0
crsctl start crs

    居然全都变好了, 并且将vip从另一个节点拿过来了, 这正是RAC应当有的行为, 后来发现去读一下racgvip这个角本, 还是有好处的, 里面有"grep NETWORK"这样的语句, 但因为配置文件中没有这一行, 找以找不到那块网卡去绑定, 所以产生了这个问题.

上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 下一页

当前分类: Oracle

Creative Commons License
本站版权: 共用创作 CC
署名-非商业性-相同方式分享
本站基于MT-3.36免费版
(©)版权所有, 2004 - 2008, www.AnySQL.net, 保留所有权利.
MSN: loufangxin(a)msn.com, Mail: anysql(at)126.com/support(at)iamdba.com, Skype ID:anysql