问题出现原因:
随着数据量不断增大,每次手动或者程序监听自动增加表空间,都会逻辑划分一块磁盘用来存储。而逻辑磁盘的数量会受到oracle配置的影响。默认是200(我用的12C和18C版本都是200)。当逻辑磁盘数大小到200时,表空间就无法进行扩展了。
解决办法:
模拟两个节点集群
节点1 节点2
第一步:
两个节点都用oracle用户登录
sqlplus /nolog
conn / as sysdba
查看当前db_files设置的个数
show parameter db_files;
节点1执行
alter system set db_files=600 scope=spfile sid=‘实例1’;
节点2执行
alter system set db_files=600 scope=spfile sid=‘实例2’;
下面就是oracle的重启操作了。停监听、停实例、启实例、启监听。
这里没有使用lsnrctl命令,因为感觉lsnrctl命令不适合管理oracle的监听,lsnrctl对监听的操作有时会同步不到crs中。所以我一直不建议使用lsnrctl
第二步:
登录grid用户
停止两个监听程序
srvctl stop listener -n 实例1
srvctl stop listener -n 实例2
返回oracle用户
关闭两个节点的实例
shutdown immediate;
确保两个节点实例都关闭执行,在启动两个节点的实例
startup mount
alter database open
同样可以使用下面命令代替节点的启停:(自由选择)
srvctl stop/start instance -d 数据库名 -i 实例名
第三步
grid用户再启动监听程序
srvctl start listener -n 实例1
srvctl start listener -n 实例2