修改orcal服务名/SID
- 修改
- 测试
- 查询语句
- show parameter service_name;
- show parameter db_name;
- show parameter db_domain;
- select * from global_name;
- 修改global_name数据名语句
alter database rename global_name to orcl; - 修改service_name服务名语句
alter system set service_names=‘new_service_name’ scope=both;
注意事项
service_names:而不是service_name
*scope:Oracle 里面有个叫做spfile的东西,就是动态参数文件,里面设置了Oracle 的各种参数。所谓的动态,就是说你可以在不关闭数据库的情况下,更改数据库参数,记录在spfile里面。更改参数的时候,有4种scope选项。scope就是范围
++ scope=spfile 仅仅更改spfile里面的记载,不更改内存,也就是不立即生效,而是等下次数据库启动生效。有一些参数只允许用这种方法更改
++ scope=memory 仅仅更改内存,不改spfile。也就是下次启动就失效了
++ scope=both 内存和spfile都更改
++ 不指定scope参数,等同于scope=both. * - 修改服务名后,原本orcl服务名依然有效,相当于添加了一个服务名
这些修改完后进行测试代码连接oracle数据库报错,说监听器无法失败这个sid,进navicat连接一看果然报错了
上面只改了服务名可是sid没有修改,而代码中是通过sid连接的数据库,所以还要修改sid
- 查看sid命令
- select instance_name from V$instance;
- 修改sid命令
- alter system set instance_name=‘scl’ scope=spfile;
修改完后进行查看sid,显示的还是orcl,但是我重新数据库和监控器服务,用navicat连接是却能连接上,而且代码中连接也能连接上,而且navicat用中用orcl选择sid连接时就报错说监听器不能识别这个sid,这些就说明修改成功了
服务名有用
sid没有用了
监听器启动后报错停止
问题原因:是你打开了提供给别人连接你的oracle端口、IP,但是后来的IP修改了,但是你的监听器配置里面的ip没改,监听不到ip就相当于没有监听项,所以启动后停止了。
配置给别人连接你的oracle
不提供给别人连接了,最好删除/注释,或者是如果IP换修改IP,不然监听器就会启动后停止,报错
注意:修改内容后要重新启动oracle服务和监听器,提供给别人连接你的oracle时要关闭你的防火墙,不然会阻止其他人连接你的端口,而且两个人要在同一个局域网才能连接你的数据库