当我想要将database 切换到online状态的时候,得到一个消息称:error code 9050 disk_not_accessible,折腾了很久才闹明白,这是你的data area满了,所以要去增加data volume,于是登录进去database,使用param_addvolume发现执行不了,报错说执行该语句必须要处于online状态,这下蛋疼了,也许在你的data area还没满100%的时候,你能加volume,比如99%,这时候你千万别去盲目去加,因为很可能在你执行这条语句的过程中满了,会导致你增加volume失败,而失败以后,你想要手动加新的volume就很难了,

于是我尝试让系统自动增加data volume,使用命令:auto_extend ON 50(你也可以通过auto_extend show去查看auto是不是成功),后面的50代表当data达到50%的时候就触发自动增加新的volume。

但是这样并没起到任何作用,我想到我之前有手动增加过一次使用如下命令

db_addvolume DATA [<definition>]

<definition> :: = -fd <filling_level> | <vol_specification>

<vol_specification> :: = <device_name> <vol_type> <size>

(举例,db_addvolume DATA /usr/data_volume1/DISK0003 F 10000000)



于是我想会不会是因为我之前增加data volume失败了才导致 auto_extend一直无效,于是我再查看了一下我的data volume,使用命令: param_getvolsall,根据给出的文件路径/sapdb/SID/sapdata,我进去看,果然我手动增加的data volume并没有生成,但是在param_getvolsall却能查看到,没办法只要把手动增加的data volume再删掉,使用命令:

db_deletevolume [DATA] [<vol_description>]

<vol_description>:: = NAME <device_name> | [ID] <vol_no>

,比如db_deletevolume DATA NAME /usr/data_volume1/DISK0003 

做完这些事情以后,终于可以启动database了。