Ⅰ 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