如何区分Oracle的数据库,实例,服务名,SID?
可以简单的这样理解:一个公司比喻成一台服务器,数据库是这个公司中的一个部门。
1.SID:一个数据库可以有多个实例(如RAC),SID是用来标识这个数据库内部每个实例的名字,
就好像一个部门里,每个人都有一个自己的名字。
2.SERVICE_NAME:是这个数据库对外宣称的名字,外面的人要想连接我这个数据库,
你就在客户端的连接串里写上service_name。它就像一个部门的名字,这个部门的名称在看门大爷(listener)那里有登记,
看门大爷一看你是要找SERVICE_NAME这个部门,就告诉你我们公司确实有这个部门,于是你就找到了,连接就建立了。
一句话来说就是:SID是对内的,是实例级别的一个名字,用来内部之间称呼用。SERVICE_name是对外的,
是数据库级别的一个名字,用来告诉外面的人,我数据库叫"SERVICE_NAME"。
你可以通过service_name参数指定这个名字是什么,可以有多个名字,名字随便起,叫狗蛋,翠花都没关系。
如果你不指定,默认的是Db_name.Db_domain,也就是global_name。
数据库里,还有ORACLE_SID,是告诉OS系统,我这个实例叫做什么。这些易混淆的名字,你要记住,
他们不是指数据库,就是指实例,就这两个东西,别无其它。他们具体用哪个名字,是要看对谁而言,
是什么场合。是对数据库,还是对操作系统,还是对外部链接。就像你对父母而言,你有小名叫幺儿;
对同学而言,你有外号叫灯泡;对办事机构,你有正规的名字叫王小明。但归根到底,是一回事。分清楚这点,就不容易混了。
数据库:是一个集合,主要是存储和处理、提供数据的地方。
就算你停止了一个数据库的运行,但是客观上他还是存在,只要你重新启动,那么它将继续运行。可以理解为 数据库软件+数据库文件+数据 实例:数据库启动后在内存中的部分就叫做实例。简单点说实例=内存+进程,也就是说当一个oracle数据库启动的时候,存在一个oracle实例,当一个数据库没有启动,那么也就不存在实例,但是数据库还是存在的,除非你删掉了数据库(所谓删掉数据库就是删掉数据库文件,比如控制文件,初始文件,数据文件等等。在你删除数据库的时候,这些文件都会被删除)。服务名:这个是数据库listening的名字,这个是任意定义的,只要不重复就行。sid:是实例和数据库对应的唯一标识,比如某台机器上你安装了两个数据库,一个的sid是orcl那么另外一个就不能是orcl,不然你启动一个orcl,机器不知道要启动哪一个。还是这个场景,你两个数据库都启动了,那么机器怎么知道这部分内存分给哪个数据库呢?依靠的就是sid.数据库里的primary key(sid,cid)是什么意思?
sid 引用的是student表里面的id,取名sid是方便记忆,可以随便取 cid一样,应用的是是course的id, 都是取了表名第一个字母做前缀方便知道哪个id引用的哪个主键,没什么实际意义.
userssid是什么?
"userssid"是一个缩写,代表用户唯一会话标识符(User Session ID)。它是一个用于标识用户在特定时间段内的会话的唯一标识符,通常由服务器生成并存储在cookie中,以便在用户进行下一步操作时,服务器可以识别该用户。
数百万用户在同一网站上进行浏览和操作,因此需要为每个用户分配唯一的会话ID,以确保正确的安全性和数据隔离。
用户会话ID有助于确保用户个性化的设置和行为跟踪可以在不同的页面和浏览器会话中进行处理。