程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> oracle安裝sid重復問題

oracle安裝sid重復問題

編輯:Oracle教程

oracle安裝sid重復問題


Oracle卸載後再次安裝,設置的SID相同出現“指定的SID在本機上已經存在。請指定一個不同的SID。”

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 SettingsAdministrator.momo這個對應的就是本地機器的管理員SID
  %SystemDrive%Documents and SettingsAdministrator.domain這個就是對應域的管理員的帳戶
  另外微軟的ResourceKit裡面也提供了工具getsid,sysinternals的工具包裡面也有Psgetsid,其實感覺原理都是讀取注冊表的值罷了,就是省了一些事情。

Oracle SID重復解決方案
Oracle卸載後再次安裝,設置的SID相同出現“指定的SID在本機上已經存在。請指定一個不同的SID。”
實現方法:
1、 開始->設置->控制面板->管理工具->服務 停止所有Oracle服務。
2、 開始->程序->Oracle - OraHome81->Oracle Installation Products-> Universal Installer 卸裝所有Oracle產品,但Universal Installer本身不能被刪除
5、 運行regedit,選擇HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del鍵刪除這個入口。
6、 運行regedit,選擇HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滾動這個列表,刪除所有Oracle入口。
7、 運行regedit,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,刪除所有Oracle入口。
8、 開始->設置->控制面板->系統->高級->環境變量 刪除環境變量CLASSPATH和PATH中有關Oracle的設定
9、 從桌面上、STARTUP(啟動)組、程序菜單中,刪除所有有關Oracle的組和圖標
10、 刪除\Program Files\Oracle目錄
11、 重新啟動計算機,重起後才能完全刪除Oracle所在目錄
12、 刪除與Oracle有關的文件,選擇Oracle所在的缺省目錄C:\Oracle,刪除這個入口目錄及所有子目錄,並從Windows 2000目錄(一般為C:\WINNT)下刪除以下文件ORACLE.INI、oradim73.INI、oradim80.INI、 oraodbc.ini等等。
13、 WIN.INI文件中若有[ORACLE]的標記段,刪除該段
14、 如有必要,刪除所有Oracle相關的ODBC的DSN
15、 到事件查看器中,刪除Oracle相關的日志
說明:
其中,6、7兩條為重點刪除對象,通常刪除時我們易刪除5,但不易發現6、7.
如果有個別DLL文件無法刪除的情況,則不用理會,重新啟動,開始新的安裝,
安裝時,選擇一個新的目錄,則,安裝完畢並重新啟動後,老的目錄及文件就可以刪除掉了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved