ORACLE中网络服务名和SID的区别

ORACLE中网络服务名和SID的区别,第1张

嘿嘿 那个兄弟的回答实在是理论上正确,但是太费解了。其实答案很简单的。在Orale里面

SID正确的理解是instance的名字,实质上和database的术语是不一样的。

服务是监听中客户端可以看到的名字。

没有什么特殊的情况下,服务名=SID。问题是有可能不一样的,有两种情况

情况1:数据库SID是一个,但是希望能有多个服务名,这个是为了多程序使用的,直接可以利用Oracle的某一个package追加一个服务的名字,这样,一个instance,就可以提供多个连接使用的服务名字。

情况2:数据库SID是多个,但是服务可能是一个,这个就是RAC结构,多物理服务器提供一个服务给程序的样子,只要有一个服务器OK,服务就可以不中断。

其实没必要现在就理解透彻,入门阶段认为是一样的即可。等明白了rac结构原理就明白了。

根本到底,就是RAC需要,前者不重要。

楼主都没设置环境变量,估计楼上的方法都不能用

你的机器是Windows的话,打开服务面板,找OracleServiceXXXX,后面的XXXX就是你的SID

或者打开安装目录 $ORACLE_HOME下的database目录或者dbs目录,里面有spfileXXXXora

概念

SID 数据库实例名

SQL> show parameter instance

DB_NAME 数据库名 可以用DBNEWID (nid)命令更改DB_NAME

SQL> show parameter db_name

DBID 数据库建立时创建的内部数字 用于区分不同数据库 RMAN会用该数字来区分数据库 当数据库都是正常创建时 DBID是不一样的 如果用复制的方法复制数据库 它们的DBID就会一样 可以用DBNEWID (nid)命令更改DBID

SQL> select dbid from v$database

下面开始更改SID 本例中 原SID名为oldsid 更改为newsid

关闭数据库

SQL > create pfile from spfile;     生成initoldsid ora 文件 后续 *** 作需要用到

SQL > shutdown immediate;

编辑环境变量

# vi /home/oracle/ bash_profile

将其中的

export ORACLE_SID=oldsid   更改为

export ORACLE_SID=newsid

为使环境变量生效 以oracle用户重新登录

重命名参数文件

# cd $ORACLE_HOME/dbs

# mv initoldsid ora initnewsid ora

参数文件内容无需更改 如果本数据库是从另一台oracle服务器复制过来的 那需要将参数文件中的路径和内存等配置进行修改 这不属于本次任务

创建口令文件

orapwd file=$ORACLE_HOME/dbs/orapwnewsid password=oracle

至此 SID已经更改完成 数据库可以正常启动 以下 *** 作是额外部分

更改其他相关配置

更改listener ora

vi $ORACLE_HOME/neork/admin/listener ora 若其中配置了SID_NAME=OLDSID 则需要更改为NEWSID 然后重启监听 # lsnctl restart

更改tnsnames ora

lishixinzhi/Article/program/Oracle/201311/16801

可以简单的这样理解:一个公司比喻成一台服务器,数据库是这个公司中的一个部门。

1SID:一个数据库可以有多个实例(如RAC),SID是用来标识这个数据库内部每个实例的名字,

就好像一个部门里,每个人都有一个自己的名字。

2SERVICE_NAME:是这个数据库对外宣称的名字,外面的人要想连接我这个数据库,

你就在客户端的连接串里写上service_name。它就像一个部门的名字,这个部门的名称在看门大爷(listener)那里有登记,

看门大爷一看你是要找SERVICE_NAME这个部门,就告诉你我们公司确实有这个部门,于是你就找到了,连接就建立了。

一句话来说就是:SID是对内的,是实例级别的一个名字,用来内部之间称呼用。SERVICE_name是对外的,

是数据库级别的一个名字,用来告诉外面的人,我数据库叫"SERVICE_NAME"。

你可以通过service_name参数指定这个名字是什么,可以有多个名字,名字随便起,叫狗蛋,翠花都没关系。

如果你不指定,默认的是Db_name Db_domain,也就是global_name。

数据库里,还有ORACLE_SID,是告诉OS系统,我这个实例叫做什么。这些易混淆的名字,你要记住,

他们不是指数据库,就是指实例,就这两个东西,别无其它。他们具体用哪个名字,是要看对谁而言,

是什么场合。是对数据库,还是对 *** 作系统,还是对外部链接。就像你对父母而言,你有小名叫幺儿;

对同学而言,你有外号叫灯泡;对办事机构,你有正规的名字叫王小明。但归根到底,是一回事。分清楚这点,就不容易混了。

以上就是关于ORACLE中网络服务名和SID的区别全部的内容,包括:ORACLE中网络服务名和SID的区别、在oracle 11g 不能登录的情况下,怎么才能知道自己database_SID急急啊啊!!!、更改Oracle数据库的SID等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9496437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存