适用于:
Oracle Internet Directory – 11.1.1 版本和更高的版本
本文档适用于任何平台
症状
Oracle Internet Directory (OID) 11g,比如: 11.1.1.7.0.
根据文档 579529.1 批量加载百万计的数据到OID报下面错误:
*Error in loading data for “attr_store001”For more details, refer bulkload.log*
As indicated above, there were errors during the load of data. This will leave the OID directory content in inconsistent state.
Hence, it is highly recommended that you use the bulkload -recover option to restore the OID directory content to the pre-bulkload state.
If you choose not to use the recover option of bulkload now, then you must restore the OID Database from a backup taken prior to this bulkload invocation so that the Directory content is restored to the pre-bulkload state.
类似的bulkload曾在以前的环境中多次以相同方式配置。
最初在bulkload日志或文件没有错误(除了一个典型的错误:“属性pwdchangedtime是单值”,但可以跳过/忽略,不会引起问题,并在先前成功的批量加载工作。)
后来的bulkload工作出现了几个不同的失败,例如在bsl_attr_store<number> .log中的bulkload日志:
Record 12954614: Rejected – Error on table DS_ATTRSTORE.
ORA-12592: TNS:bad packet
SQL*Loader-926: OCI error while uldlfca: last loaded row is bigger than the column array size for table DS_ATTRSTORE
SQL*Loader-2026: the load was aborted because SQL Loader cannot continue.
识别和删除一些问题项从ldif文件和重试,现在的bulkload返回不同的错误,例如:
bsl_attr_store001.log: ORA-39776: fatal Direct Path API error loading table ODS.DS_ATTRSTOREbsl_attr_store001.log: ORA-00600: internal error code, arguments: [klaprs_11], [60], [115], [45030627], [], [], [], [], [], [], [], []
bsl_attr_store006.log: ORA-39776: fatal Direct Path API error loading table ODS.DS_ATTRSTOREbsl_attr_store006.log: ORA-00600: internal error code, arguments: [klaprs_11], [60], [36], [14538110], [], [], [], [], [], [], [], []
bsl_orclsecondaryuid.log: ORA-39776: fatal Direct Path API error loading table ODS.CT_ORCLSECONDARYUIDbsl_orclsecondaryuid.log: ORA-00600: internal error code, arguments: [klaprs_12], [110], [60], [15979905], [], [], [], [], [], [], [], []
bulkload.log还显示一下信息:
[BULKLOAD] [host: myoidhost.mycompany.com] [pid: 2114] [tid: 5] gsltltwWriter: Two realms cannot reference the same DN in orclcommonusersearchbase.
查看root oraclecontext显示默认的属性,作为初始安装,如下:
$ ldapsearch -h myoidhost.mycompany.com -p 3060 -D cn=orcladmin -w <password> -s base -b “cn=Common,cn=Products,cn=OracleContext” objectclass=*
cn=Common,cn=Products,cn=OracleContext
orcldefaultsubscriber=o=mycompany.com
orclsubscribernicknameattribute=o
orclcommonpasswordpolicy={x- orcldbpwd}:ALWAYS:orclPassword::
orclcommonkrbprincipalattribute=krbPrincipalName
orclcommongroupcreatebase= cn=Groups ,
orclcommondefaultusercreatebase= cn=Users,
orclcommonwindowsprincipalattribute=orclSAMAccountName
orclcommondefaultgroupcreatebase= cn=Groups,
orclcommonnamingattribute=cn
orclcommonusercreatebase= cn=Users,
orcluserobjectclasses=top
orcluserobjectclasses=person
orcluserobjectclasses=inetorgperson
orcluserobjectclasses=organizationalperson
orcluserobjectclasses=orcluser
orcluserobjectclasses=orcluserv2
orclentrylevelaci=access to entry by * (browse,noadd,nodelete)
orclentrylevelaci=access to attr=(*) by group=”cn=OracleDASConfiguration, cn=Groups,cn=OracleContext” (read,write,search,compare) by * (read,search,nowrite,nocompare)
objectclass=top
objectclass=orclCommonAttributes
objectclass=orclContainer
objectclass=orclCommonAttributesV2
cn=Common
orclcommonnicknameattribute=uid
orclcommonapplicationguidattribute=orclGlobalID
orclversion=90000
注意到“base”属性值和上面的ldif文件的那些被批量加载不匹配,例如ldif文件使用 ou=People ,而不是默认 cn=Users ,和使用 ou=Groups ,而不是默认 cn=Groups 。
因此尝试修改这些参数的值让它和ldif文件里的值相匹配,看起来如下:
$ ldapsearch -h myoidhost.mycompany.com -p 3060 -D cn=orcladmin -w <password> -s base -b “cn=Common,cn=Products,cn=OracleContext” objectclass=*
cn=Common,cn=Products,cn=OracleContext
orcldefaultsubscriber=o=mycompany.com
orclsubscribernicknameattribute=o
orclcommonpasswordpolicy={x- orcldbpwd}:ALWAYS:orclPassword::
orclcommonkrbprincipalattribute=krbPrincipalName
orclcommongroupcreatebase= ou=Groups,
orclcommondefaultusercreatebase= ou=People,
orclcommonwindowsprincipalattribute=orclSAMAccountName
orclcommondefaultgroupcreatebase= ou=Groups,
orclcommonnamingattribute=cn
orclcommonusercreatebase= ou=People,
orcluserobjectclasses=top
orcluserobjectclasses=person
orcluserobjectclasses=inetorgperson
orcluserobjectclasses=organizationalperson
orcluserobjectclasses=orcluser
orcluserobjectclasses=orcluserv2
orclentrylevelaci=access to entry by * (browse,noadd,nodelete)
orclentrylevelaci=access to attr=(*) by group=”cn=OracleDASConfiguration,cn=Groups,cn=OracleContext” (read,write,search,compare) by * (read,search,nowrite,nocompare)
objectclass=top
objectclass=orclCommonAttributes
objectclass=orclContainer
objectclass=orclCommonAttributesV2
cn=Common
orclcommonnicknameattribute=uid
orclcommonapplicationguidattribute=orclGlobalID
orclversion=90000
上面的步骤解决了来自于bulkload的ORA-600错误,完成bulkload,然而,在bulkload.log出现一个新的错误:
…<snip>…
[gsltdbmhqUpdateHQ] ORA error 3135: ORA-03135: connection lost contact
Process ID: 8282Session ID: 4 Serial number: 3765
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload:: [gsldpoOperationComplete] ORA-3114, ORA-03114: not connected to ORACLE
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload:: Data loaded successfully
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload::
Verifying indexes…
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload:: [gsltdbviVerifyIndexes] ORA error 3114: ORA-03114: not connected to ORACLE
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload::
Indexes verification done…
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload::
Altering indexes …
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload:: [gsltdbiaiAlterIndex] ORA error 3114: ORA-03114: not connected to ORACLE
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload::
Indexes alteration done…
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload:: [gsltdbwDupdateEid] ORA error 3114: ORA-03114: not connected to ORACLE
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload:: [gsldpoOperationComplete] ORA-3114, ORA-03114: not connected to ORACLE
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload::
Collecting statistics …
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload:: [gsltdbusStats] ORA error 3114: ORA-03114: not connected to ORACLE
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload:: *Error in collecting statistics.
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload::Statistics collection done…
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload:: …Setting OID server mode to read-write on “oiddb” node…
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload:: [gsltdbwEsvrMode] ORA error 3114: ORA-03114: not connected to ORACLE
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload:: [gsldpoOperationComplete] ORA-3114, ORA-03114: not connected to ORACLE
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload::========================================
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload:: Time taken by each activity
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload:: ========================================
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload:: Load and/or Index : 1hr. 28min. 37sec.
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload:: Statistics Collection : 0hr. 0min. 0sec.
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload:: ========================================…<end>…
再加上加载数据和OID服务不可以,尝试添加,删除或修改失效条码或异常行为,例如:
$ ldapdelete -v -c -h myoidhost.mycompany.com -p 3060 -D “cn=orcladmin” -w -f delete_myuser1.ldif
deleting entry uid=myuser1.name,ou=People,o=mycompany.com
ldap_delete: No such object
ldap_delete: additional info: Entry to be deleted not found.
$ ldapadd -h myoidhost.mycompany.com -p 3060 -D “cn=orcladmin” -w <password> -f add_myuser1.ldif
adding new entry uid=myuser1.name,ou=People,o=mycompany.com
ldap_add: Already exists
ldap_add: additional info: Object already exists
$ ldapmodify -h myoidhost.mycompany.com -p 3060 -v -D “cn=orcladmin” -w <password> -f change_pw_myuser1.ldif
replace userpassword:
modifying entry uid=myuser1.name,ou=People,o=mycompany.com
ldap_modify: No such object
$ ldapsearch -L -b “” “(uid= myuser1.name*)” dndn: uid=myuser1.name,ou=People,o=mycompany.com
改变
尝试修改让root oraclecontext 的base属性和批量加载的ldif文件相匹配,解决了ORA-600,但是发现了新的错误ORA-03114和不可用的数据和OID服务。
原因
网络和/或防火墙或负载均衡器的问题。
一个增强请求已经被提交:BUG22450252 – 通过配置/调整参数实现bulkload功能。
解决方案
从OID服务器直接硬连接数据库(DB / RDBMS)主机,有效地绕过任何防火墙和其他网络组件,来解决该问题。
对于位于远程的并且不能直接硬连接到它的OID服务器主机的数据库服务器,一个潜在的解决方案正在通过改进请求(ER)22450252,即,添加额外的配置功能,实现用bulkload工具进行数据导入。