小小练手---日志的重要

昨天给开发装异开发环境的db

由于很久都没有碰过Linux了,所以操作有点不熟,在公司实习这一周来天天都是看书,也很想练练手,其中,配置完环境后,就开始创建装软件,但是我是远程连上去的(CRT),不支持图形界面,所以在本机转了一个xmanager,但是出现了乱码的情况,出于时间紧迫,问了问同事,在CRT连接配置上x11转发,选择这个选项使CRT请求远程机器把X11数据转发到运行本机的x服务器上,这样就可以支持xwind界面了,当然你可以选择静默安装。

安装好后出现了一下的问题,以及相应的解决办法和心得:

ORA-01102 cannot mount database in EXCLUSIVE mode
在启动db的时候,出现ora-01102,检查alter.log:
Thu Apr  8 20:23:11 2010
ALTER DATABASE   MOUNT
Thu Apr  8 20:23:11 2010
sculkget: failed to lock /opt/app/notify/oracle//dbs/lkNOTIFY exclusive
sculkget: lock held by PID: 666
Thu Apr  8 20:23:11 2010
ORA-09968: unable to lock file
Linux-x86_64 Error: 11: Resource temporarily unavailable
Additional information: 666
从日志文件中可以看到是由于锁定lksid这个文件,该文件被pid666锁定
可以用[root@test165 ~]# fuser -u /opt/app/notify/oracle/dbs/lkNOTIFY  查看该文件的使用情况;
然后fuser -k lkNOTIFY将文件释放,或者从命名该文件也可。


在网上看见一些相关错误的解决:
作者: fuyuncat

来源: www.HelloDBA.com

出现1102错误可能有以下几种可能:

一、在HA系统中,已经有其他节点启动了实例,将双机共享的资源(如磁盘阵列上的裸设备)占用了;

二、说明Oracle被异常关闭时,有资源没有被释放,一般有以下几种可能,

1、 Oracle的共享内存段或信号量没有被释放;

2、 Oracle的后台进程(如SMON、PMON、DBWn等)没有被关闭;

3、 用于锁内存的文件lk和sgadef.dbf文件没有被删除。

如果怀疑是共享内存没有被释放,可以用以下命令查看:

$ipcs -mop
IPC status from /dev/kmem as of Thu Jul  6 14:41:43 2006
T      ID     KEY        MODE        OWNER     GROUP NATTCH  CPID  LPID
Shared Memory:
m       0 0x411c29d6 --rw-rw-rw-      root      root      0   899   899
m       1 0x4e0c0002 --rw-rw-rw-      root      root      2   899   901
m       2 0x4120007a --rw-rw-rw-      root      root      2   899   901
m  458755 0x0c6629c9 --rw-r-----      root       sys      2  9113 17065
m       4 0x06347849 --rw-rw-rw-      root      root      1  1661  9150
m   65541 0xffffffff --rw-r--r--      root      root      0  1659  1659
m  524294 0x5e100011 --rw-------      root      root      1  1811  1811
m  851975 0x5fe48aa4 --rw-r-----    oracle  oinstall     66  2017 25076
 

然后它ID号清除共享内存段:

$ipcrm –m 851975
 

对于信号量,可以用以下命令查看:

$ ipcs -sop
IPC status from /dev/kmem as of Thu Jul  6 14:44:16 2006
T      ID     KEY        MODE        OWNER     GROUP
Semaphores:
s       0 0x4f1c0139 --ra-------      root      root
... ...
s      14 0x6c200ad8 --ra-ra-ra-      root      root
s      15 0x6d200ad8 --ra-ra-ra-      root      root
s      16 0x6f200ad8 --ra-ra-ra-      root      root
s      17 0xffffffff --ra-r--r--      root      root
s      18 0x410c05c7 --ra-ra-ra-      root      root
s      19 0x00446f6e --ra-r--r--      root      root
s      20 0x00446f6d --ra-r--r--      root      root
s      21 0x00000001 --ra-ra-ra-      root      root
s   45078 0x67e72b58 --ra-r-----    oracle  oinstall
 
解决:
根据信号量ID,用以下命令清除信号量:

$ipcrm -s 45078
 

如果是Oracle进程没有关闭,用以下命令查出存在的oracle进程:

$ ps -ef|grep ora
  oracle 29976     1  0  Jun 22  ?         0:52 ora_dbw0_ora92
  oracle 29978     1  0  Jun 22  ?         0:51 ora_dbw1_ora92
  oracle  5128     1  0  Jul  5  ?         0:00 oracleora92 (LOCAL=NO)
... ...
 
然后用kill -9命令杀掉进程

$kill -9

接着又遇到了
ORA-27086

ALTER DATABASE   MOUNT
Thu Apr  8 20:32:28 2010
ORA-00202: control file: '/opt/app/notify/oradata/notify/control01.ctl'
ORA-27086: unable to lock file - already in use
Linux-x86_64 Error: 11: Resource temporarily unavailable
Additional information: 8
Additional information: 670
对于这种情况,将数据库起到NOMOUNT状态,创建PFILE文件,将控制文件复制到其它目录,同时修改PFILE文件中控制文件参数。以上修改完毕后,将数据库起到MOUNT状态。当你想将数据库打开时,会报错,说无法找到SYSTEM01.DBF文件,这里就得将所有数据文件目录通过alter database  rename file '' to ''语句移动到其它目录,前提是已将文件复制到目的地。最后一步就是打开数据库。


总结:最后我们看到这两个错误中都有一个共同点:Linux-x86_64 Error: 11: Resource temporarily unavailable
我df -lv
root@test165 ~]# df -lv
Filesystem             1K-块        已用     可用 已用% 挂载点
/dev/sdb2              4032124   2788568   1038728  73% /
/dev/sdb1               124427     13496    104507  12% /boot
none                   8203488         0   8203488   0% /dev/shm
/dev/sdb9            1406733196 276551544 1058723732  21% /home
/dev/sdb6              6048320   6048320      0        100% /opt
/dev/sdb8              4032092    524592   3302676  14% /tmp
/dev/sdb5             10080488   7631992   1936428  80% /usr
/dev/sdb7              6048320    350816   5390264   7% /var
果然/opt安装目录中已经没有了空间,
将数据库中各表空间添加数据文件到其他目录下
root@test165 ~]# df -lv
Filesystem             1K-块        已用     可用 已用% 挂载点
/dev/sdb2              4032124   2788568   1038728  73% /
/dev/sdb1               124427     13496    104507  12% /boot
none                   8203488         0   8203488   0% /dev/shm
/dev/sdb9            1406733196 276551544 1058723732  21% /home
/dev/sdb6              6048320   4500424   1240656  79% /opt
/dev/sdb8              4032092    524592   3302676  14% /tmp
/dev/sdb5             10080488   7631992   1936428  80% /usr
/dev/sdb7              6048320    350816   5390264   7% /var
搞定.
心得:log文件很重要,要养成看log的习惯

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11782778/viewspace-631706/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11782778/viewspace-631706/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值