Documentum获取文档内容报错[DM_STORAGE_E_NOT_ACCESSIBLE]技术求助
DM_STORAGE_E_NOT_ACCESSIBLE存储区不可访问错误 你遇到的这个DM_STORAGE_E_NOT_ACCESSIBLE错误,结合errno 145的提示,大概率和存储区的状态、权限或者底层文件系统问题有关,我给你整理几个排查和解决的步骤:
第一步:确认存储区的激活状态
先通过Documentum的iapi工具连接仓库,检查目标存储区dist_store_a_store_010的状态:API> retrieve,c,dm_storage where object_name='dist_store_a_store_010' API> get,c,state如果返回的状态不是
ACTIVE,说明存储区被禁用了,执行以下命令重新激活:API> set,c,state,ACTIVE API> save,c第二步:检查存储区物理路径的权限
errno 145对应的是文件系统权限问题,Documentum的存储服务进程(dm_serverd)没有权限访问该存储区的物理路径。先获取存储区的路径:API> get,c,path登录存储区所在服务器,检查该路径的权限设置,确保运行Documentum服务的用户(通常是
dmadmin)对该目录拥有读、写、执行权限,权限不足的话直接调整即可。第三步:验证存储区的挂载/连接状态
如果这个存储区是网络存储(比如NAS、SAN),要确认服务器上的挂载点是否正常。可以手动cd到该路径,创建测试文件,看能否正常操作——如果挂载失效,需要重新挂载或者联系运维修复网络存储连接。第四步:重启Documentum存储服务
有时候存储服务进程异常也会导致这个问题,尝试重启dm_serverd服务:# 停止服务 dm_shutdown -u <用户名> -p <密码> -d <仓库名> # 启动服务 dm_startup -d <仓库名>重启后再测试你的代码,看是否能正常获取文档内容。
临时应急方案:迁移文档到可用存储区
如果需要紧急获取该文档内容,可以先把文档迁移到其他正常的存储区,再获取内容:String docId = eachFileMetadata.get("some document id").toString(); IDfSysObject document = (IDfSysObject) session.getObject(new DfId(docId)); // 替换成你环境中可用的存储区名称 document.setStorageArea("valid_active_store"); document.save(); // 现在可以正常获取内容了 ByteArrayInputStream docContent = document.getContent();注意这只是临时解决办法,还是要尽快修复原存储区的问题哦。
内容的提问来源于stack exchange,提问作者Akhil

