Oracle OID 11g Bulkload of Large Amount (Several Millions) of Entries Fails Initially with ORA-12592, Later with ORA-39776 and ORA-00600: internal error code, arguments: [klaprs_], Finally with ORA-03135 and ORA-03114

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 400-690-3643 备用电话: 13764045638 邮箱:service@parnassusdata.com

 

 

适用于:

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_ATTRSTORE
bsl_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_ATTRSTORE
bsl_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_ORCLSECONDARYUID
bsl_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>…
[2015-07-06T21:42:46-04:00] [OID] [NOTIFICATION:16] [] [BULKLOAD] [host: myoidhost.mycompany.com] [pid: 29062] [tid: 0] bulkload:: [gsltdbmhqUpdateHQ] ORA error 3135: ORA-03135: connection lost contact
Process ID: 8282
Session 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*)” dn
dn: 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工具进行数据导入。

此条目发表在 Oracle 分类目录。将固定链接加入收藏夹。

评论功能已关闭。