如何区分Oracle的数据库,实例,服务名,SID
一
数据库(database):物理操作系统文件或磁盘(disk)的集合。使用Oracle 10g的自动存储管理(Automatic Storage Management,ASM)或RAW分区时,数据库可能不作为操作系统中单独的文件,但定义仍然不变。
二
实例(instance):一组Oracle后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。
三
service_names是对外的服务名,是服务器端使用的,一个库可以设置多个对外服
务名,以实现不同的目的
四
sid用于实例区分各个数据库,service name用于外部链接。
对于单节点(单机)数据库,实例名就是服务名。
对于Oracle RAC就不同了,实例名是Oracle服务在每个节点上的SID,一个Oracle RAC的所有服务器节点的实例名(SID)必须不相同,服务名是全部服务器群共用。
Network Service 是 Windows Server 2003 中的内置帐户。Windows 操作系统中的所有帐户都分配了一个 SID(安全标识,Security ID)。服务器是根据 SID,而不是与 SID 相关的名称来识别服务器上所有帐户的,而你我在与用户界面进行交互时,则是使用名称进行交互的。服务器上创建的绝大部分帐户都是本地帐户,都具有一个唯一的 SID,用于标识此帐户隶属于该服务器用户数据库的成员。由于 SID 只是相对于服务器是唯一的,因此它在任何其他系统上无效。所以,如果您为本地帐户分配了针对某文件或文件夹的 NTFS 权限,然后将该文件及其权限复制到另一台计算机上时,目标计算机上并没有针对这个迁移 SID 的用户帐户,即使其上有一个同名帐户也是如此。
冰河世纪中的角色希德(SID)SID = Security Identifiers,安全标识符,是标识用户、组和计算机帐户的唯一的号码。 SID = Standard Instrument Departure,标准仪表离港。[1] SID = Silence Desriptor,UMTS中的WCDMA:HSPA演进的LTE:第4版。[2] SID,科学鉴证人员 SID = 德国体育信息社,德国一家媒体。 SID = society for information display,国际信息显示年会。[3] SID = sudden ionospheric disturbance,通常由太阳引起的电离层突然骚动。[4] SID = System Identification, CDMA专业术语,包含15比特, 一般每个移动本地网分配一个SID号码,由运营商负责分配,移动台根据一对识别码(SID,NID)判决是否发生了漫游。 SID = Shared Information Data/Model,共享信息数据模型,是NGOSS(Next GenerationOperationSupport System,下一代运营支撑系统)规范中的一个核心思想。NGOSS在建立eTOM模型时,就考虑到了信息数据共享这个重要的问题,SID因此产生。编辑本段其他 SID ,希德,冰河世纪中的可爱树懒名。[5] SID ,山地车前叉品牌。[6] SID = Debian sid ,Debian Linux系统中新加入的软件被放入unstable分支,这个分支也称作sid。[7] SID = Sid Vicious,维雪斯,英国朋克歌手及贝斯手,性手枪合唱团团员。[8]编辑本段安全标识符SID简介 SID也就是安全标识符(Security Identifiers),是标识用户、组和计算机帐户的唯一的号码。在第一次创建该帐户时,将给网络上的每一个帐户发布一个唯一的 SID。Windows 2000 中的内部进程将引用帐户的 SID 而不是帐户的用户或组名。如果创建帐户,再删除帐户,然后使用相同的用户名创建另一个帐户,则新帐户将不具有授权给前一个帐户的权力或权限,原因是该帐户具有不同的 SID 号。安全标识符也被称为安全 ID 或 SID。SID的作用 用户通过验证后,登陆进程会给用户一个访问令牌,该令牌相当于用户访问系统资源的票证,当用户试图访问系统资源时,将访问令牌提供给 Windows NT,然后 Windows NT 检查用户试图访问对象上的访问控制列表。如果用户被允许访问该对象,Windows NT将会分配给用户适当的访问权限。 访问令牌是用户在通过验证的时候有登陆进程所提供的,所以改变用户的权限需要注销后重新登陆,重新获取访问令牌。SID号码的组成 如果存在两个同样SID的用户,这两个帐户将被鉴别为同一个帐户,原理上如果帐户无限制增加的时候,会产生同样的SID,在通常的情况下SID是唯一的,他由计算机名、当前时间、当前用户态线程的CPU耗费时间的总和三个参数决定以保证它的唯一性。 一个完整的SID包括: · 用户和组的安全描述 · 48-bit的ID authority · 修订版本 · 可变的验证值Variable sub-authority values 例:S-1-5-21-31044058 8- 2 500 36847- 5 803 895 05-500 我们来先分析这个重要的SID。第一项S表示该字符串是SID;第二项是SID的版本号,对于2000来说,这个就是1;然后是标志符的颁发机构(identifier authority),对于2000内的帐户,颁发机构就是NT,值是5。然后表示一系列的子颁发机构,前面几项是标志域的,最后一个标志着域内的帐户和组。SID的获得 开始-运行-regedit32-HKEY_LOCAL_MACHINESAMSAMDomainsBuiltinAliasesMembers,找到本地的域的代码,展开后,得到的就是本地帐号的所有SID列表。 其中很多值都是固定的,比如第一个000001F4(16进制),换算成十进制是500,说明是系统建立的内置管理员帐号administrator,000001F5换算成10进制是501,也就是GUEST帐号了,详细的参照后面的列表。 这一项默认是system可以完全控制,这也就是为什么要获得这个需要一个System的Cmd的Shell的原因了,当然如果权限足够的话你可以把你要添加的帐号添加进去。 或者使用Support Tools的Reg工具: reg query "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList 还有一种方法可以获得SID和用户名称的对应关系: 1 Regedit32: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion ProfileList 2 这个时候可以在左侧的窗口看到SID的值,可以在右侧的窗口中ProfileImagePath看到不同的SID关联的用户名, 比如%SystemDrive%Documents and SettingsAdministratormomo这个对应的就是本地机器的管理员SID %SystemDrive%Documents and SettingsAdministratordomain这个就是对应域的管理员的帐户 另外微软的ResourceKit里面也提供了工具getsid,sysinternals的工具包里面也有Psgetsid,其实感觉原理都是读取注册表的值罢了,就是省了一些事情。SID重复问题的产生 安装NT/2000系统的时候,产生了一个唯一的SID,但是当你使用类似Ghost的软件克隆机器的时候,就会产生不同的机器使用一个SID的问题。产生了很严重的安全问题。 同样,如果是重复的SID对于对等网来说也会产生很多安全方面的问题。在对等网中帐号的基础是SID加上一个相关的标识符(RID),如果所有的工作站都拥有一样的SID,每个工作站上产生的第一个帐号都是一样的,这样就对用户本身的文件夹和文件的安全产生了隐患。 这个时候某个人在自己的NTFS分区建立了共享,并且设置了自己可以访问,但是实际上另外一台机器的SID号码和这个一样的用户此时也是可以访问这个共享的。SID重复问题的解决 下面的几个试验带有高危险性,慎用,我已经付出了惨痛的代价! 微软在ResourceKit里面提供了一个工具,叫做SYSPREP,这个可以用在克隆一台工作站以前产生一个新的SID号码。 下图是他的参数 这个工具在DC上是不能运行这个命令的,否则会提示 但是这个工具并不是把所有的帐户完全的产生新的SID,而是针对两个主要的帐户Administrator和Guest,其他的帐号仍然使用原有的SID。 下面做一个试验,先获得目前帐号的SID: S-1-5-21-2000478354 - 688 78 9 844 - 839 522 115 然后运行Sysprep,出现提示窗口: 确定以后需要重启,然后安装程序需要重新设置计算机名称、管理员口令等,但是登陆的时候还是需要输入原帐号的口令。 进入2000以后,再次查询SID,得到: S-1-5-21-759461550-1 453 070 86-51 579 9519,发现SID号已经得到了改变,查询注册表,发现注册表已经全部修改了,当然全部修改了�8�1。 另外sysinternals公司也提供了类似的工具NTSID,这个到后来才发现是针对NT4的产品,界面如下: 他可不会提示什么再DC上不能用,接受了就开始,结果导致我的一台DC崩溃,重启后提示“安全账号管理器初始化失败,提供给识别代号颁发机构的值为无效值,错误状态0XC0000084,请按确定,重启到目录服务还原模式”,即使切换到目录服务还原模式也再也进不去了! 想想自己胆子也够大的啊,好在是一台额外DC,但是自己用的机器,导致重装系统半天,重装软件N天�8�3,所以再次提醒大家,做以上试验的时候一定要慎重,最好在一台无关紧要的机器上试验,否则出现问题我不负责哦�8�1。另外在Ghost的新版企业版本中的控制台已经加入了修改SID的功能,自己还没有尝试,有兴趣的朋友可以自己试验一下,不过从原理上应该都是一样的。 文章发表之前,又发现了微软自己提供的一个工具“Riprep”,这个工具主要用做在远程安装的过程中,想要同时安装上应用程序。管理员安装了一个标准的公司桌面操作系统,并配置好应用软件和一些桌面设置之后,可以使用Riprep从这个标准的公司桌面系统制作一个Image文件。这个Image文件既包括了客户化的应用软件,又把每个桌面系统必须独占的安全ID、计算机账号等删除了。管理员可以它放到远程安装服务器上,供客户端远程启动进行安装时选用。但是要注意的是这个工具只能在单硬盘、单分区而且是Professional的机器上面用。
嘿嘿 那个兄弟的回答实在是理论上正确,但是太费解了。其实答案很简单的。在Orale里面
SID正确的理解是instance的名字,实质上和database的术语是不一样的。
服务是监听中客户端可以看到的名字。
没有什么特殊的情况下,服务名=SID。问题是有可能不一样的,有两种情况
情况1:数据库SID是一个,但是希望能有多个服务名,这个是为了多程序使用的,直接可以利用Oracle的某一个package追加一个服务的名字,这样,一个instance,就可以提供多个连接使用的服务名字。
情况2:数据库SID是多个,但是服务可能是一个,这个就是RAC结构,多物理服务器提供一个服务给程序的样子,只要有一个服务器OK,服务就可以不中断。
其实没必要现在就理解透彻,入门阶段认为是一样的即可。等明白了rac结构原理就明白了。
根本到底,就是RAC需要,前者不重要。
0条评论