Ⅰ oid是什麼
oid的解釋有很多,不過,比較專業的方面應該是指的物聯網域名方面。
OID(ObjectIdentifier,對象標識符),又叫做物聯網域名,是由ISO/IEC、ITU-T國際標准化組織上世紀80年代聯合提出的標識機制,採用分層樹形結構對任何類型的對象(包括實體對象、虛擬對象、復合對象等)進行全球無歧義、唯一命名。OID具有分層靈活、擴展性強、跨異構系統等優勢,並可兼容現有標識機制,已經廣泛應用於信息安全、醫療衛生、網路管理等領域。
Ⅱ snmp的Mib庫公有oid定義:關機、重啟、重啟服務、停止服務這4個服務的公有oid。
沒發現有這樣的OID
如果是伺服器的關機,重啟,開機,可以通過IPMI來實現
Ⅲ oid是什麼意思
什麼是OID
為了在系統中能夠找到所需對象,我們需要為每一個對象分配一個唯一的表示號。在關系資料庫中我們稱之為關鍵字,而在對象術語中,則叫做對象標識(Object identifier-OID).
通常OID在內部都使用一個或多個大整數表示,而在應用程序中則提供一個完整的類為其他類提供獲取、操作。
OID(Object ID)應當沒有任何業務相關含義
一個非常關鍵的問題是OID絕對不應當具有任何業務含義。因為任何有業務含義的列都有改變的可能性,而計算機社團多年來從關系資料庫學到的最重要的一個事實之一就是:不要給你的關鍵字任何意義。如果你的用戶決定改變業務含義,也許他們想要增加幾個數字或把數字變為字母數字,那麼你需要在任何用到這個關鍵字的地方進行改變。一個表中的主關鍵字內的任何東西都有可能被其他表作為外鍵。就算是一個簡單的改變,譬如在你的客戶號碼馬上增加一個數字,可能會造成極大的維護上的開銷。在關系資料庫中,這種OID策略被稱之為代理關鍵字。
OID的唯一性
一個 OID必須在一個類層次中保持唯一,理想上應該在所有對象上都唯一。
在分配對象OID時需要考慮兩個問題:
l OID唯一性的層次
l 如何計算OID
我們先來看看第一個問題,對很多面向對象的新手來說,他們對這個問題的認識往往不夠深刻。這里涉及到三個層次上的唯一性:一個類內的唯一性,一個類層次之間的唯一性,以及所有類之間的唯一性。
譬如,給一個客戶對象的OID是只對所有客戶實例唯一,還是對所有的人員還是所有的對象。一個具有值76766的OID是可以分配給一個客戶對象,一個員工對象,一個訂單對象呢?還是只能分配給一個客戶而不是員工(因為客戶和員工位於同一個類層次之內),還是除了客戶外什麼都不能分配。這里問題與多態相關:一個客戶以後可能成為員工,但一個訂單對象則不會如此。為了避免在一個對象改變類型的時候需要重新分配OID,你至少應當保證在類層次級別上的唯一性。當然在所有對象上保持唯一可以完全避免類似問題,盡管在實現上可能會有些困難。
Ⅳ 急求Oracle高手給解釋下建表語句中關鍵字oidindex含義,O(∩_∩)O謝謝!!
create table tb(
id VARCHAR2(36) primary key using index tablespaceTS_U,
name VARCHAR2(100)
);
改成這樣就可以了
create table table of type
oidindex [index](tablespace tablespacename);
是這么用的,用在object table或者xmltype table中
例如
create or replace type person as object
(
NAME varchar2 ( 10 ),
SEX char ( 2 ),
BIRTHDATE date ,
PLACE varchar2 ( 100 )
)
oidindex prson_index (tablespace test1);
或
create or replace type person1 as object
(
NAME varchar2 ( 10 ),
SEX char ( 2 ),
BIRTHDATE date ,
PLACE varchar2 ( 100 )
);
create table person2 of person1
oidindex prson2_index (tablespace test1);
或
create table
tb1 of xmltype
oidindex (tablespace test1);
都是可以執行的
查看視圖user_indexes和user_ind_colnum是為SYS_NC_OID$創建的索引
具體用法和官方解釋參考:http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7002.htm#i2159410
Ⅳ 誰能詳細幫我介紹下,hibernate中的oid
hibernate採用對象標識符,也就是通常我們所說的oid來創建對象和資料庫表裡記錄的對應關系,對象的oid和表裡的主鍵對應,所以說oid是非常重要的,不應該讓程序來給它賦值.資料庫區分同一表的不同記錄是用主鍵來區分.資料庫中的主鍵最重要的3個基本要素就是不允許為null,不允許有重復值,主鍵永遠不會改變.所以通常我們設計表都會設計主鍵的值為自動增加,沒有業務邏輯含義的一組數字,當然針對每個資料庫,設置的方法也不同.但是都非常簡單.加一個屬性就可以了.
而java區分同一類的不同對象是用內存地址,在java語言中判斷兩個對象的引用變數是否想相等,有以下兩種比較方式.
1)用運算符」==」比較內存地址,此外還可以用object的equals方法也是按內存地址比較.
2)比較兩個對象的值是否相同,java中的一些覆蓋了object類的equals方法實現比較合適.例如string和date類,還有java包裝類.如果是string.equals(string)這種方式的比較就是比較這兩個string的值的.如果是object原是的equals方法就是比較地址了.這點很容易混淆.
通常,為了包裝hibernate的oid的唯一性和不可變性,由hibernate或者底層資料庫來給oid賦值比較合理.因此我們在編程的時候最好把持久化類的oid設置為private或者protected類型,這樣可以防止java程序隨便更改oid.而oid的get方法我們還是要設置為public類型,這樣方便我們讀取. 在對象-關系映射文件里的
1)increment 代理主鍵,hibernate自動以遞增的方式來生成標識符,每次增加1.
2)identity 代理主鍵,由底層資料庫生成標識符,前提就是底層的資料庫支持自動增長的類型.
3)sequence 代理主鍵,hibernate根據底層資料庫生成的標識符,前提是底層資料庫支持序列
4)hilo 代理主鍵,hibernate根據higg/low演算法來生成的標識符,把特定表的欄位作為high的值,默認選用 hibernate_unique_key表的next_hi欄位
5)native 代理主鍵,根據底層資料庫對自動生成標識符的支持能力,還選擇identity,sequence,或hilo.
6)uuid.hex 代理主鍵,hibernate採用128位的uuid演算法生成標識符,uuid演算法能夠在網路環境下生成唯一字元串標識符.不過字元串要比數據佔用的空間多的多.所以不流行使用.
7)assigned 適用於自然主鍵,由java應用程序負責生成標識符,為了能讓java設置oid.不能吧setid方法設置為非公共類型了,這種方式也盡量避免使用.
由第一種方式,也就是由hibernate來生成對象標識符的方式比較好.但是這種方式的缺點是只能一個hibernate對應一個資料庫的表.當同時創建了seesionfactory實例的時候.兩個或者更多的hibernate對應同一個資料庫的時候就會插入出錯.這個時候我們可以選擇第二種方式把標識符的生成工作交給底層資料庫.還有一個小知識點要注意就是oid必須定義為long,int,short類型,如果定義為byte會報異常,這里推薦用long.
總結一下,這7種生成oid標識符的方法,increment 比較常用,把標識符生成的權力交給hibernate處理.但是當同時多個hibernate應用操作同一個資料庫,甚至同一張表的時候.就推薦使用identity 依賴底層資料庫實現,但是資料庫必須支持自動增長,sequence 以來底層資料庫實現,但是資料庫必須支持系列.hilo 根據特定的表實現.這三種方式(increment/identity/sequence)當然是針對不同的資料庫選擇不同的方法.如果你不能確定你使用的資料庫具體支持什麼的情況下.可以選擇第三種(sequence).或者用native 讓hibernate來幫選擇identity、sequence、hilo.後邊的自然主鍵(asigned)不推薦使用,因為自然主鍵就是具有業務含義的主鍵,在現在的軟體開發結構中,已經很少有人用了.
下面總結一下幾種常用資料庫,可以使用的標識符類型.
mysql:identity資料庫底層實現,需要支持自動增長,increment由hibernate實現,hilo用特定的表實現,
mssql:identity資料庫底層實現,需要支持自動增長,increment由hibernate實現,hilo用特定的表實現,
oracle:sequence資料庫底層實現,需要支持序列,increment由hibernate實現,hilo用特定的表實現,
以上不難發現,所有的資料庫都支持hibernate用increment實現oid的生成,mysql和mssql資料庫底層實現支持自動增長,而oracle支持序列,還有用特殊表的實現方式這三個資料庫都支持.還有一種實現方式適用於所有的資料庫,就是native,由hibernate去選擇使用什麼樣的方式來生成iod對象標識符,這種方式也是跨平台的.下面是各種設置方式的例子*.hbm.xml文件四個.
例 1:
<xml version="1.0"?>
1.<!doctype hibernate-mapping
2.public "-//hibernate/hibernate mapping dtd 2.0//en"
3."http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
4.<hibernate-mapping>
5.6. <class name="mypack.hilotester" table="hilo_tester">
7.
8. <id name="id" type="long" column="id">
9. <generator class="hilo">
10. <param name="table">hi_value</param>
11. <param name="column">next_value</param>
12. <param name="max_lo">100</param>
13. </generator>
14. </id>
15.16. <property name="name" type="string" >
17. <column name="name" length="15" />
18. </property>
19.
20. </class>
21.22.</hibernate-mapping>
例 2:
1.<xml version="1.0"?>
2.<!doctype hibernate-mapping
3.public "-//hibernate/hibernate mapping dtd 2.0//en"
4."http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
5.<hibernate-mapping>
6.7. <class name="mypack.identitytester" table="identity_tester">
8.
9. <id name="id" type="long" column="id">
10. <generator class="identity"/>
11. </id>
12.13. <property name="name" type="string" >
14. <column name="name" length="15"/>
15. </property>
16.
17. </class>
18.19.</hibernate-mapping>
例 3:
1.<xml version="1.0"?>
2.<!doctype hibernate-mapping
3.public "-//hibernate/hibernate mapping dtd 2.0//en"
4."http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
5.<hibernate-mapping>
6.7. <class name="mypack.nativetester" table="native_tester" >
8.
9. <id name="id" type="long" column="id">
10. <generator class="native"/>
11. </id>
12.13. <property name="name" type="string" >
14. <column name="name" length="15" />
15. </property>
16.
17. </class>
18.19.</hibernate-mapping>
例 4:
1.<xml version="1.0"?>
2.<!doctype hibernate-mapping
3.public "-//hibernate/hibernate mapping dtd 2.0//en"
4."http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
5.<hibernate-mapping>
6.7. <class name="mypack.incrementtester" table="increment_tester" >
8.
9. <id name="id" type="long" column="id">
10. <meta attribute="scope-set">private</meta>
11. <generator class="increment"/>
12. </id>
13.14. <property name="name" type="string" >
15. <column name="name" length="15" />
16. </property>
17.
18. </class>
19.20.</hibernate-mapping>
Ⅵ OID注冊企業必須注冊嗎
摘要 必須的。
Ⅶ 交換機snmp oid是什麼
可以理解為有規則的設備參數編碼。snmp協議將設備的各種參數按樹形結構進行分組,從樹的根部開始,每一個層級節點會有一個編碼,將這些層級編碼以「."作為分隔符,將其拼接起來所形成的一串編碼就叫OID,通過OID可以對該OID表示的參數進行操作。
Ⅷ 思科MIB庫 私有MIB 裡面的返回值都是說明什麼問題的
MIB庫和OID不能混淆。
看SNMP的資料先。
用mibbrower導入思科mib庫,印象中思科的mib庫默認就有。
用mibbwower或其他snmp工具 walk一遍,oid和值都出來了,或者get next慢慢來也行。
注意snmp版本,目前常用v2c和v3