搜索​​​​

文章
姚 鑫 · 九月 28

第四十六章 功能跟踪器收集使用统计信息

[toc] # 第四十六章 功能跟踪器收集使用统计信息 作为 不断努力改进其产品以满足客户需求的一部分, 在 `IRIS®` 数据平台中包含一个名为 `Feature Tracker` 的软件实用程序,该软件实用程序收集软件模块使用情况的统计数据。本主题介绍特征跟踪器。 # 为什么 InterSystems 收集统计数据 `Feature Tracker` 收集的统计数据记录软件模块是否存在并在给定的 `IRIS` 实例中使用。 `Feature Tracker` 每周通过 `https` 将此信息发送给 `InterSystems`。这些统计数据有助于 `InterSystems` 规划开发和支持。 收集的信息不包括任何应用程序数据。 # 日志在哪里 如果 `IRIS` 成功发送数据,它会更新 `\mgr` 目录中的 `FeatureTracker.log` 文件。此文件包含已发送数据的 `JSON` 格式副本。每个条目具有以下形式: ``` "FT.":, ``` 如果 `IRIS` 无法发送数据,它会再尝试几次。如果仍然不成功,它将停止尝试并在下一个定期安排的时间再次尝试。 `IRIS` 使用成功和不成功的尝试更新消息日志文件 `(messages.log)`。显示成功发送的条目具有以下形式: ```java mm/dd/yy-hh:mm:ss 0 %SYS.Task.FeatureTracker transferred data to ats.intersystems.com ``` 显示尝试发送失败的条目具有以下形式: ```java mm/dd/yy-hh:mm:ss 1 %SYS.Task.FeatureTracker failed to transfer data ``` 传输的数据包括编码的许可证密钥和主机名,以及实例 `GUID`。 # 收集了哪些统计数据 `Feature Tracker` 记录是否启用了以下软件功能: - BitTrakCare - BI User (Runtime) and BI Development - C-Type License - ExtremeNoUserLimit - Healthshare, Healthshare Foundation - IPNeutral - Web License `Feature Tracker` 还记录以下信息: - 数据库(`DB`)加密:是否启用,以及快照时可用的已挂载加密数据库的数量 - 镜像:此实例是否连接到镜像,故障转移成员的数量,异步成员的数量和类型,以及每个异步成员所属的镜像集的数量 - 系统:授权、 `IRIS` 版本、操作系统、主机名、实例名称、实例 `ID` 和订单 `ID` # 如何停用功能跟踪器 默认情况下启用功能跟踪器。可以停用它以防止它向 `InterSystems` 发送数据(尽管它仍会收集数据)。要停用功能跟踪器,请使用任务管理器,如下所示: 1. 在管理门户中,选择系统操作 > 任务管理器 > 任务计划。 2. 找到 `Feature Tracker` 行并选择 `Feature Tracker`。 3. 在显示的任务详细信息页面上,选择暂停。 4. 回答问题想在任务应该运行时重新安排任务吗?作为适当的。 5. 选择立即执行此操作以暂停任务。 如果升级 `IRIS`,升级会保留 `Feature Tracker` 的状态。如果任务是在升级之前安排的,它会保持预定状态,如果任务被挂起,它会保持挂起状态。
文章
Weiwei Gu · 九月 28

使用嵌入式Python生成数据流

Hi Developers, 嗨,各位开发者们: 各位都知道,Python是一个庞大而强大的生态系统,包含了成千上万的库和包,特别是在数据科学方面。 因此,我想首次尝试使用IRIS最近的一项功能--嵌入式Python,简单地导入一个名为datetime的Python库,生成带有时间戳成分的数据,并在InterSystems IRIS for Health Data Platform中持久化。同样的方法在IRIS数据平台上也可以使用。 我把这个小项目分成了两个主要部分。 *按照IRIS for Health Data Platform的文档设置嵌入式Python环境*使用嵌入式Python创建时间戳数据作为例子,并使用datetime包持久化到IRIS。 1. 在 InterSystems IRIS for Health Data Platform 2022.1 上设置嵌入式 Python。 在Windows上,打开CMD terminal C:\InterSystems\IRISHealth\bin>irispip install --target C:\InterSystems\IRISHealth\mgr\python numpy 注意:这是检查嵌入式Python环境的步骤,因为我发现当我使用IRIS 2021.0时,irispip经常不工作。 通过导入一个Python math packge来测试Python功能 打开IRIS终端,在USER命名空间中执行以下程序:set pymath = ##class(%SYS.Python).Import("math") 然后执行write pymath.pi,你可以看到你已经成功调用了Python包,输出结果如下。 USER>write pymath.pi 3.141592653589793116 而我们也可以通过从IRIS terminal打开来启动Python shell。 do ##class(%SYS.Python).Shell() Class User.PythonFirstTry Extends %RegisteredObject{ClassMethod pyHello() As %Status{ set pythonBuiltins = ##class(%SYS.Python).Builtins() do pythonBuiltins.print("Hello World!")}ClassMethod pyForLoop() [ Language = python ]{ for i in range(5): print("Python")}} 我写了两个类方法,你可以试着把它们放在一个.cls文件中,编译一下,看看输出。 执行方法如下: USER>do ##class(User.PythonFirstTry).pyHello() Hello World! USER>do ##class(User. PythonFirstTry).pyForLoop() Python Python Python Python Python 2. 使用python库来生成数据流并持久化到InterSystems IRIS中。 生成数据流所需的Python库: 导入datetime包(这不需要使用CLI进行额外的安装)。除了datetime包,我还尝试使用了其他的库和包,但是其中一些并不在Embedded Python中。要安装这些东西,请打开 CMD terminal (Windows),然后运行以下程序 (XX 将被替换成包的名称)。 C:\InterSystems\IRISHealth\bin>irispip install XX 以下是生成数据并持久化到IRIS的步骤: 1.创建 %Persistent类 2. 创建Property3.设置一个类方法(例如:GetData)并指定[Language = python] 。4.通过调用datetime python库生成数据,使用以下代码片段 注意:timeNow需要被转换为字符串数据类型 5.通过IRIS terminal 执行GetData()方法,执行SQL查询 注意:你可以使用一种简单的 "For " 循环来控制这种方式产生的数据量的规模。
文章
姚 鑫 · 九月 27

第四十五章 配置第三方软件以与 InterSystems 产品结合使用

# 第四十五章 配置第三方软件以与 InterSystems 产品结合使用 产品通常在与非 工具一起运行的环境中运行,我们的产品与此类工具之间的交互可能会产生有害影响。 关于最佳、可靠部署配置的指导假定我们的产品可以在不受第三方工具干扰的情况下进行部署。例如, 发现用于安全、系统监控或病毒扫描的软件可能会影响我们产品的安装、性能和功能。对于直接与属于 产品的一部分或被 产品使用的文件进行交互的工具(例如病毒扫描程序)尤其如此。 了解客户面临的业务、合规性和其他要求会影响有关在给定环境中运行哪些软件以及如何配置此类软件的决策。一般来说, 建议我们产品的服务器端安装通过物理安全和隔离来保护。这种保护应该减少对其他工具的需求,或者至少减少它们运行的频率。 病毒扫描仪观察: 1. 为了交付经过病毒检查的软件, 产品在经过消毒的环境中交付给我们的客户,并通过提供校验和进行验证。 2. 性能影响。 [对策] 出于扫描目的,排除以下文件和目录: - `WIJ` 文件和包含 `WIJ` 文件的目录`*`。 - 本指南“配置 `IRIS`”一章中的所有数据库文件 (`.DAT`) 和包含数据库文件的目录*(请参阅配置数据库)。 - 存储或处理日志文件的任何目录`*`。 - `IRIS®` 数据平台运行所需的任何其他文件`/`目录`*`。例如备用日志目录*(请参阅数据完整性指南中的“日志”),或业务服务或生产使用的任何目录*。 3. 可执行文件的误报。 [对策] 出于扫描目的,排除所有 `irisdb.exe` 文件和包含 `irisdb.exe` 文件的目录。 警告:从恶意软件扫描中排除项目可能会将漏洞引入受保护的设备和应用程序。客户承担配置恶意软件保护的所有责任。 最后,当 发现第三方软件与我们的产品之间的交互对我们的产品行为产生负面影响时,我们会将这些问题报告给第三方供应商。
文章
lingyan zhou · 九月 27

Cache / IRIS 操作数据的3种基本方式

# 背景 Cache起源于没有SQL的1970时代,当时各种高级计算机语言才刚刚诞生,其中M语言较为独特,它的诞生就是为了在没有操作系统的机器上,进行数据存储。别忘了,Unix在1971年才发布。M语言别具一格地采用了Global多维数组,统一了复杂的内存操作和文件读写,使之成为了1970年代数据库的事实标准,特别是在医疗行业。而后Intersystems在1978年接过M语言的旗帜,在M语言上添加了SQL兼容层和ObjectScript层,前者顺应了时代的潮流,后者不仅为M语言提供了强大的OOP和各种便捷的语法糖,还让数据能以对象形式进行访问,让数据和代码更加紧密。 本文将简述多维数组、SQL、对象这3种数据操作方式,提供实例代码片段,并在运行效率、开发效率、管理效率、实用性方面讨论它们的优缺点。 为方便讨论,以学校与学生为例。对每种操作方法,都列举3种典型的用例,分别为,访问某特定ID的学生(即数据库ID索引)、访问某特定studentID的学生(即遍历唯一索引)、和访问某学校的所有人(即遍历非唯一索引)。 现假设学生表/对象定义如下: ```java Class Student Extends %Persistent { Property schoolId AS %String; Property studentId As %String; Property name As %String; Index IdxOnSchoolId ON schoolId ; Index IdxOnStudentId ON studentId [Unique]; Storage Default { %%CLASSNAME schoolId studentId name ^StudentD StudentDefaultData ^StudentD ^StudentI ^StudentS %Library.CacheStorage } } ``` # 方法1 多维数组 * 例1. 访问某特定ID的学生 ```java s id = 1 // 已知id s student = ^StudentD(id) s name = $LIST(student, 4) w name ``` * 例2. 访问某特定studentID的学生 ```java s studentId = 1 // 已知studentId s id = $ORDER(^StudentI("IdxOnStudentId",studentId,"")) s student = ^StudentD(id) s name = $LIST(student, 4) w name ``` * 例3. 访问某学校的所有人 ```java s schoolId = 1 // 已知schoolId s id="" for { s id = $ORDER(^StudentI("IdxOnSchoolId",schoolId,id)) q:id="" s student = ^StudentD(id) s name = $LIST(student, 4) w name } ``` > `$ORDER` 方法返回多维数组最末端下标的下一个值。用来遍历多维数组。 # 方法2 SQL * 例1. 访问某特定ID的学生 ```java s id = 1 // 已知id &sql(SELECT name INTO :name from Student where id=:id) w name ``` * 例2. 访问某特定studentID的学生 ```java s studentId = 1 // 已知studentId &sql(SELECT name INTO :name from Student where studentId=:studentId) w name ``` * 例3. 访问某学校的所有人 ```java s schoolId = 1 // 已知schoolId s query="SELECT name from Student where schoolId=?" s statement=##class(%SQL.Statement).%New() s sc=statement.%Prepare(query) s rset=statement.%Execute(schoolId) while (rset.%Next()) { s name = rset.%Get("name") w name,! } ``` > - `&sql()`为嵌入式SQL语句,在`INTO`子句中赋值给变量,适合单行查询。 > - `&sql()`也可以返回游标Cursor,以实现多多行查询,但效率比`SQL.Statement`低,不推荐使用。 > - `SQL.Statement`类实现动态SQL语句,动态查询适合返回多行结果。 # 方法3 对象 * 例1. 访问某特定ID的学生 ```java s id = 1 // 已知id s student = ##class(Student).%OpenId(id) s name = student.name w name ``` * 例2. 访问某特定studentID的学生 ```java s studentId = 1 // 已知studentId s student = ##class(Student).IdxOnStudentIdOpen(studentId) s name = student.name w name ``` * 例3. 访问某学校的所有人 ```java s schoolId = 1 // 已知schoolId s id="" for { s id = $ORDER(^StudentI("IdxOnSchoolId",schoolId,id)) q:id="" s student = ##class(Student).%OpenId(id) s name = student.name w name } ``` > - `%OpenId`方法通过ID查找并返回对象。 > - `IndexOpen`方法通过唯一索引值查找并返回对象。注意,非唯一索引没有类似方法。 # 讨论 * 多维数组 * 运行效率: 高。 * 可控程度高,只要有老练的程序员,有足够的加班时间,有足够的资金和时间,总能打磨出最好的效率。据说多维数组的效率是SQL的10倍。 * 面向过程编程,能够实现SQL难以实现的逻辑控制。 * 注意,事实上,未经优化的多维数组操作未必比SQL效率高。 * 开发效率: 低。 * 虽然对于简单的数据操作,利用多维数组也能快速实现。但是一旦数组结构、索引、下标达到一定数量级,直接对为数组操作是个噩梦。代码中将充斥数组名,索引名,下标等magic values。 * 直接操作数组太过底层,数据校验、初始值、空置、锁管理、事务等都需要人工编码。 * 管理效率:低。 * 值和索引必须同时维护,稍有不慎,容易造成索引损坏。 * 不同熟练度的程序员实现可能千差万别,对锁的使用、回调函数的调用等容易产生分歧,统一化难度大。 * 一旦数据定义发生变化,或者数据分布发生变化,需要调整或者调优,都需要较大人力投入。 * 数据提取、数据迁移、数据备份等日常操作,都须要程序员参与。 * 实用性:高 * 对临时数据、不需要考虑数据提取的数据,多维数组是很好的Key-Value数据库。 * SQL * 运行效率: 中。 * SQL解析和优化需要耗费额外时间。 * 适合批量处理。 * 不适合面向过程的逻辑。 * 可控程度低,如果不使用Frozen Plan,实际执行策略变化大,造成系统不稳定的假象。 * 但是经过调优后的SQL,可以实现较好的执行效率。 * 开发效率: 高。 * SQL提供隔离等级、事务、锁表等指令,简化了并发。 * SQL是声明式语言,简洁明了,可读性高,使程序员更关注结果,而不是遍历各种索引的过程。 * 管理效率:高。 * SQL提供了数据定义、数据查询、数据更新等的统一化。 * 数据提取、数据迁移、数据备份可以通过标准SQL客户端。 * 自适应性高,对存储的变化,例如变更索引,变更数据分布等,都能自动适应。 * Intersystems为SQL提供了额外的权限配置。 * 实用性:高 * 对象 * 运行效率: 低。 * 不支持对索引的遍历,只能通过主索引和唯一索引访问单一对象。 * 开发效率: 中。 * 使对列的访问转化成了对对象属性的访问,使对外键的访问转化成了对外键对象的访问,代码的语义性强,可读性高。 * 管理效率:中。 * 在锁管理、值校验等方面统一化程度比多维数组高。 * 和多维数组一样,也无法提供标准客户端来访问数据。 * 实用性: 中 * 实际应用中,持久类除了单个对象内字段的校验逻辑,几乎不包含业务逻辑。一是因为持久类必须稳定,一旦编译,要尽量避免再次编译。二是因为实际项目中,业务逻辑在业务层中,数据是相互依存的,例如退费数据需要退费审核,而这样的逻辑,不可能在某个数据对象中存在,只能在数据层之上的业务层才合理。 # Do's & Don'ts - 批量的读写操作多用SQL。 - 写操作应尽量用SQL或者对象。 - 多维数组应尽量只用于读操作。 - 多维数组的读、写操作应封装在方法中。
公告
Claire Zheng · 九月 27

首届InterSystems Idea创意马拉松

社区成员们,大家好! 我们开心地宣布一种全新类型的比赛——寻找最聪明的创意比赛!欢迎了解: 💡 InterSystems Idea 创意马拉松 💡 在9月26日至10月16日期间提出一个与InterSystems产品和服务相关的想法,即可获得达成奖。 最重要的是,此次赛事InterSystems的员工和社区成员都可以参与! >> 点击提交你的想法吧! << 规则 InterSystems Idea创意马拉松是由InterSystems Ideas反馈门户组织的,在InterSystems Ideas反馈门户,您可以提交与我们的服务(文档、开发社区、全球大师等)相关的产品增强请求和想法,并投票选出您喜欢的。 在本次比赛中,我们邀请大家在这个门户网站上分享自己的想法,并为他人投票。 只需在 InterSystems Ideas网站 提交想法即可参赛。 合格的参赛创意应符合: 用户在Idea-A-Thon创意马拉松期间提交,由通过InterSystems Ideas网站注册的用户创建(您可以通过InterSystems SSO登录); 不要成为其他已经存在的想法的一部分——只允许新的想法; 不描述InterSystems产品或服务的现有功能; 除了标题之外,还要对观点的本质进行详细而清晰的解释; 以英文发帖; 被专家认为是有意义的。 所有符合条件的想法将在InterSystems ideas门户网站上拥有一个特殊的“Idea-A-Thon”状态,可以很容易地在Idea创意马拉松上找到。 谁可以参加? 我们邀请所有人加入我们的创意马拉松。欢迎InterSystems员工和社区成员参与并提交创意想法。 奖项 1. 参与奖 :每个发布合格想法的人都会将获得奖励: 🎁 InterSystems Branded T-Shirt 2. 专家奖:获胜者将由InterSystems专家团队选出,并将获得: 🎁 LEGO Star Wars™ R2-D2™ / BOSE Sleepbuds™ II / BOSE SoundLink Flex Bluetooth® speaker bundle 3. 社区奖:获得最多投票的创意,获奖者将获得: 🎁 LEGO Star Wars™ R2-D2™ / BOSE Sleepbuds™ II / BOSE SoundLink Flex Bluetooth® speaker bundle 重要提示:InterSystems的员工只能获得参与奖。专家奖和社区奖只能由非intersystems社区成员获得。 参赛时间 📝 9月26日 - 10月16日:创意发布、投票阶段 在此期间发布一个或几个创意。InterSystems Ideas网站的注册会员可以为发表的创意投票,这些投票将计入社区奖。 注意:越早发表你的创意,你就越有更多的时间去收集投票。 来参加吧! 来 InterSystems Ideas 发布你的创意拿大奖!时刻关注你的创意! 祝大家好运 👍 Important note: All prizes are subject to availability and shipping options. Some items may not be available to ship internationally to specific countries. Prizes cannot be delivered to residents of Crimea, Russia, Belarus, Iran, North Korea, Syria, or other US-embargoed countries. We will let you know if a prize is not available and offer a possible replacement. 重要提示:所有奖品均受可用性和运输选择。有些项目可能无法国际运输到特定国家。奖品不能发放给克里米亚、俄罗斯、白俄罗斯、伊朗、朝鲜、叙利亚或其他美国禁运国家的居民。如果没有奖品,我们将告知您,并提供可替代品。
文章
姚 鑫 · 九月 25

第四十三章 使用多个 IRIS 实例(三)

# 第四十三章 使用多个 IRIS 实例(三) # `Windows` 上的 `iris` 命令 在 `Windows` 上,必须从 `install-dir\bin` 目录运行 `iris` 命令(或在命令中包含完整路径)。 - `iris all` 列出所有已安装实例的摘要信息,每行一个实例,如下所述。 注意:如果需要完整的信息,例如用于解析或报告目的,请使用 `iris list`。 ```java C:\InterSystems\IRISHealth\bin>iris all Instance Version ID Port Directory ------------- ---------- ---- --------- up irishealth 2022.1.0.114.0 51773 c:\intersystems\irishealth ``` - `iris allw` 为每个实例列出与 `iris all` 相同的信息,而不包含长字段值。可能会产生超过 `80` 个字符的行。 ```java C:\InterSystems\IRISHealth\bin>iris allw Instance Name Version ID Port Directory ------------------------------- ---------------------------- ----- -------------------------------- up irishealth 2022.1.0.114.0 51773 c:\intersystems\irishealth ``` - `iris console instname [arguments]` 在操作系统命令窗口而不是终端窗口中打开 `Terminal` 。 ![image](25F7E075095D47C4A19C24D2764F52E1) - `iris force instname` 强制关闭实例。 - `iris help` 显示有关 `iris` 命令的最新信息。 ```java C:\InterSystems\IRISHealth\bin>iris help usage: iris start [] to start instance , optionally using the specified .cpf file. An optional /EmergencyId=Username,Password can be used to start InterSystems IRIS in emergency mode. When the EmergencyId argument is supplied, the system starts up in emergency mode in which only the baseline databases are mounted and access to InterSystems IRIS is governed by InterSystems IRIS login using that username and password. Emergency mode is supplied to give access in the event that privileged users are not available or their password is forgotten. Emergency startup is only available from an administrator account. When InterSystems IRIS is started in emergency mode, the IRIS control service is not used. This means that if you log out of Windows, all the InterSystems IRIS processes will immediately exit. or: iris startnostu to start instance without running ^STU. or: iris stop to shut down instance . or: iris stopnoshut to shut down instance without running user shutdown routines. or: iris stopstart to shut down and restart instance . Note: An optional /nofailover argument can be specified for stop, stopnoshut, or stopstart to not trigger a mirror failover. or: iris force to force down instance . or: iris [ run OR console OR terminal ] to run InterSystems IRIS in programmer mode with [ no-device OR console OR terminal ] for $Principal. or: iris [ run OR console OR terminal ] to run InterSystems IRIS routine in application mode with [ no-device OR console OR terminal ] for $Principal. or: iris [ run OR console OR terminal ] to run InterSystems IRIS routine in in application mode with [ no-device OR console OR terminal ] for $Principal. or: iris runw [] to run InterSystems IRIS routine in application mode with no input/output device for $Principal using the optional namespace. When run from a batch script, iris will wait for the InterSystems IRIS process to terminate before returning. The exit code from the InterSystems IRIS process will be returned by iris. Note: An optional /Title="Title string" can specify the console or terminal title bar text. or: iris iristraystart to start IRISTray for instance . or: iris iristraystop to stop IRISTray for instance . or: iris licmanagerstop to stop licmanager running in instance . or: iris all [> outputfile] to list all installed instances. or: iris allw [> outputfile] to list (wide format) all installed instances. or: iris list [] [> outputfile] to list information about all installed instances or the specified instance. or: iris qlist [] [> outputfile] to display a quick list of information about all installed instances or the specified instance, in a format suitable for parsing in command scripts. The record for an instance contains fields separated by "^" (carats): Field 1: instance name Field 2: instance directory Field 3: version identifier Field 4: current status for the instance Field 5: configuration file name last used Field 6: SuperServer port number Field 7: WebServer port number Field 8: JDBC Gateway port number Field 9: Instance status (e.g., ok, warn, alert) Field 10: Product name of the instance Field 11: Mirror Member Type (e.g., Failover, Disaster Recovery) Field 12: Mirror Status (e.g., Primary, Backup, Connected) or: iris serverlist [> outputfile] to list information about all defined servers. Note: When [> outputfile] is present, output is redirected to the file instead of being displayed on the terminal. or: iris telnetstop to stop the InterSystems IRIS TELNET daemon. or: iris telnettrace to toggle the TELNET trace state. or: iris iristrmdstop to stop the InterSystems IRIS terminal daemon. Note: iris often displays error information in a message box. You can suppress the message box containing error information by adding "quietly" (without the quotation marks) as the final argument to the iris command. or: iris help [display] to show this help. If display is specified the help is displayed in a browser window. ``` - `iris list [arguments]` 显示有关已安装 `IRIS` 实例的信息,如下所述。 ```java C:\InterSystems\IRISHealth\bin>iris list irishealth Instance 'irishealth' (Custom installation) directory: 'C:\InterSystems\IRISHealth' versionid: '2022.1.0.114.0' conf file: 'c:\intersystems\irishealth\iris.cpf' (SuperServer port = 51773, WebServer port = 52773) status : 'running, since Mon Sep 12 08:08:58 2022' Product : InterSystems IRISHealth ``` `instname` — 可以选择指定 `IRIS` 实例名称以仅显示有关该实例的信息。例如,`iris list MyIRIS` 仅显示有关 `MyIRIS` 实例的信息。 - `iris qlist [参数]` 与 `iris list` 类似,但有附加信息。每个实例的输出(如下所述)在一行中给出,字段由插入符号 (`^`) 分隔。 `instname` — 可以选择指定 `IRIS` 实例名称以仅显示有关该实例的信息。例如,`iris qlist MyIRIS` 仅显示有关 `MyIRIS` 实例的信息。 ```java C:\InterSystems\IRISHealth\bin>iris qlist irishealth irishealth^C:\InterSystems\IRISHealth^2022.1.0.114.0^running, since Mon Sep 12 08:08:58 2022^c:\intersystems\irishealth\iris.cpf^51773^52773^^^IRISHealth^^ ``` - `iris run instname [arguments]` 在没有 `$Principal` 的输入/输出设备的程序员模式下运行 IRIS。 - `iris runw instname 例程 [参数]` 在应用程序模式下运行命名的 `IRIS` 例程,没有 `$Principal` 的输入/输出设备。从批处理脚本运行时,该命令会等待 `IRIS` 进程终止,然后再从进程返回退出代码。 `namespace` — 在指定的命名空间中运行例程。 注意:如果使用指定了启动命名空间的用户帐户启动 `IRIS`,则命名空间参数无效(请参阅用户帐户属性)。 - `iris start instname [参数]` 启动实例。 注意:系统可能会提示以“紧急模式”启动。 完整的 `CPF` 路径 — 默认情况下, `IRIS` 从位于 `<install-dir>/mgr` 目录中的 `iris.cpf` 文件中读取某些设置。可以提供另一个 `.cpf` 文件的完整路径以供使用。 - `iris startnostu instname` 启动指定的实例而不运行`^STU`。 - `iris stop instname [参数]` 关闭实例。 `/nofailover` — 指定此可选参数以防止触发镜像故障转移。 - `iris stopnoshut instname [参数]` 使用 `INTNOSHUT^SHUTDOWN` 关闭命名实例。 **注意:只有实例所有者和 `irisusr` 可以在不登录终端的情况下运行 `INTNOSHUT^SHUTDOWN`。** `/nofailover` — 指定此可选参数以防止触发镜像故障转移。 - `iris stopstart instname [参数]` 关闭实例后启动它。 `/nofailover` — 指定此可选参数以防止触发镜像故障转移。 - `iris terminal instname [参数]` 打开实例的 `Terminal` 。 `routine` — 在终端中以应用程序模式为 `$Principal` 运行命名的 `IRIS` 例程。 `"[label[+offset]]^routine"` — 指定要在用户模式下运行的 `ObjectScript` 程序的名称。除了指定的格式之外,还可以传递由字符串和`/`或数字文字组成的参数列表,以及省略的 (`void`) 参数,如下所示: - `"routine[([parameter-list])]"` - `"[label]^routine[([parameter-list])]"` - `"##CLASS(package.class).method[([parameter-list])]"` 其中,例如,参数列表以“`string literal`”的形式指定,`-+-000123.45600E+07`,省略的参数作为 `$Data(parameter)=0` 传递给目标。 注意:空格和 `shell` 元字符必须以依赖于操作系统的形式引用。 命名空间 — 与例程一起使用,在指定的命名空间中运行例程。 注意:如果您用指定了启动命名空间的用户帐户启动 `IRIS`,则命名空间无效(请参阅用户帐户属性)。 ## iris list, qlist, and all #### `iris all` 列出有关一个或多个 `IRIS` 实例的以下信息: - 实例状态,如下 - ``(状态不可用,登录已禁用) - `dn`(关闭或已崩溃) - `up` (running) - `st` (starting or stopping) - 实例名称 - `IRIS` 版本 - 超级服务器端口号 - 安装目录 #### `iris list` 列出有关一个或多个 `IRIS` 实例的以下信息: - 实例名称(和安装类型) - 安装目录 - `IRIS` 版本 - `IRIS` 参数 (`.cpf`) 文件的路径名 - 超级服务器和网络服务器端口号 - 实例状态,如下 - `running` - `down` - `starting or stopping` - 不完整的启动或停止,登录被禁用 - 实例的系统健康状态,如果正在运行(不包括在 `Windows` 中) - 镜像成员类型和状态(如果是镜像成员) #### iris qlist 为一个或多个 `IRIS` 实例在单行上输出以下信息,以插入符号 (`^`) 分隔: 1. 实例名称(和安装类型) 2. 安装目录 3. `IRIS`版本 4. 实例状态 5. 当前配置参数文件的路径名,相对于安装目录。 `Windows` 系统改为显示完整路径。 6. 超级服务器端口号 7. 网络服务器端口号 8. `JDBC` 网关端口号 9. 实例的系统健康状态,如果正在运行(在 `Windows` 上总是空白) 10. 产品名称 11. 镜像成员类型(如果是镜像成员) 12. 镜像状态(如果是镜像成员) 13. 数据目录(如果适用)
文章
姚 鑫 · 九月 24

第四十二章 使用多个 IRIS 实例(二)

# 第四十二章 使用多个 IRIS 实例(二) # 控制 `IRIS` 实例 `iris` 命令支持终端以外的许多功能,并以 `iris function instname arguments` 格式调用,其中 `instname` 是在安装期间选择的实例名称,参数取决于函数。 重要提示: `iris help` 命令显示所有命令函数和参数; `IRISHelp.html` 文件位于 `install-dir\Help` 目录中。 `iris` 命令的某些功能在本文档中没有列出,但在帮助显示中显示。 ```java C:\InterSystems\IRISHealth\bin>iris help usage: iris start [] to start instance , optionally using the specified .cpf file. An optional /EmergencyId=Username,Password can be used to start InterSystems IRIS in emergency mode. When the EmergencyId argument is supplied, the system starts up in emergency mode in which only the baseline databases are mounted and access to InterSystems IRIS is governed by InterSystems IRIS login using that username and password. Emergency mode is supplied to give access in the event that privileged users are not available or their password is forgotten. Emergency startup is only available from an administrator account. When InterSystems IRIS is started in emergency mode, the IRIS control service is not used. This means that if you log out of Windows, all the InterSystems IRIS processes will immediately exit. or: iris startnostu to start instance without running ^STU. or: iris stop to shut down instance . or: iris stopnoshut to shut down instance without running user shutdown routines. or: iris stopstart to shut down and restart instance . Note: An optional /nofailover argument can be specified for stop, stopnoshut, or stopstart to not trigger a mirror failover. or: iris force to force down instance . or: iris [ run OR console OR terminal ] to run InterSystems IRIS in programmer mode with [ no-device OR console OR terminal ] for $Principal. or: iris [ run OR console OR terminal ] to run InterSystems IRIS routine in application mode with [ no-device OR console OR terminal ] for $Principal. or: iris [ run OR console OR terminal ] to run InterSystems IRIS routine in in application mode with [ no-device OR console OR terminal ] for $Principal. or: iris runw [] to run InterSystems IRIS routine in application mode with no input/output device for $Principal using the optional namespace. When run from a batch script, iris will wait for the InterSystems IRIS process to terminate before returning. The exit code from the InterSystems IRIS process will be returned by iris. Note: An optional /Title="Title string" can specify the console or terminal title bar text. or: iris iristraystart to start IRISTray for instance . or: iris iristraystop to stop IRISTray for instance . or: iris licmanagerstop to stop licmanager running in instance . or: iris all [> outputfile] to list all installed instances. or: iris allw [> outputfile] to list (wide format) all installed instances. or: iris list [] [> outputfile] to list information about all installed instances or the specified instance. or: iris qlist [] [> outputfile] to display a quick list of information about all installed instances or the specified instance, in a format suitable for parsing in command scripts. The record for an instance contains fields separated by "^" (carats): Field 1: instance name Field 2: instance directory Field 3: version identifier Field 4: current status for the instance Field 5: configuration file name last used Field 6: SuperServer port number Field 7: WebServer port number Field 8: JDBC Gateway port number Field 9: Instance status (e.g., ok, warn, alert) Field 10: Product name of the instance Field 11: Mirror Member Type (e.g., Failover, Disaster Recovery) Field 12: Mirror Status (e.g., Primary, Backup, Connected) or: iris serverlist [> outputfile] to list information about all defined servers. Note: When [> outputfile] is present, output is redirected to the file instead of being displayed on the terminal. or: iris telnetstop to stop the InterSystems IRIS TELNET daemon. or: iris telnettrace to toggle the TELNET trace state. or: iris iristrmdstop to stop the InterSystems IRIS terminal daemon. Note: iris often displays error information in a message box. You can suppress the message box containing error information by adding "quietly" (without the quotation marks) as the final argument to the iris command. or: iris help [display] to show this help. If display is specified the help is displayed in a browser window. ``` IRISHelp.html ``` IRIS.EXE USAGE: iris start [] Starts InterSystems IRIS instance , optionally using the specified .cpf file. Note: An optional /EmergencyId=Username,Password can be used to start InterSystems IRIS in emergency mode. When the EmergencyId argument is supplied, the system starts up in emergency mode in which only the baseline databases are mounted and access to InterSystems IRIS is governed by InterSystems IRIS login using that username and password. Emergency mode is supplied to give access in the event that privileged users are not available or their password is forgotten. Emergency startup is only available from an administrator account. When InterSystems IRIS is started in emergency mode, the IRIS control service is not used. This means that if you log out of Windows, all the InterSystems IRIS processes will immediately exit. iris startnostu Starts instance without running ^STU. iris stop Shuts down instance . iris stopnoshut . Shuts down instance without running user shutdown routines. iris stopstart Shuts down and restarts instance . Note: An optional /nofailover argument can be specified for stop, stopnoshut, or stopstart. Specifying this option prevents triggering a mirror failover. iris force Forces down instance . iris [ run OR console OR terminal ] Runs InterSystems IRIS in programmer mode with [ no-device OR console OR terminal ] for $Principal. iris [ run OR console OR terminal ] Runs InterSystems IRIS routine in application mode with [ no-device OR console OR terminal ] for $Principal. iris [ run OR console OR terminal ] Runs InterSystems IRIS routine in in application mode with [ no-device OR console OR terminal ] for $Principal. iris runw [] Runs InterSystems IRIS routine in application mode with no input/output device for $Principal using the optional namespace. When run from a batch script, iris will wait for the InterSystems IRIS process to terminate before returning. The exit code from the InterSystems IRIS process will be returned by iris. Note: An optional /Title=”Title string” can specify the console or terminal title bar text. Examples: Run ^%SS in a console in the i181u instance: iris console i181u ^^%SS Run ^%SS in an InterSystems IRIS terminal in the i181u instance: iris terminal i181u ^^%SS Start ^%SS running in an InterSystems IRIS terminal in the i181u instance from a batch file (extra % required): iris terminal i181u ^^%%SS Run sub^test(“hello”) in an InterSystems IRIS terminal in the USER namespace of the IRIS instance i181u: iris terminal i181u sub^^test(\"hello\") USER Note: The namespace parameter only works if the login record for the user does not specify a namespace. If the user security record specifies a namespace, then it will override the namespace parameter. iris iristraystart Starts IRISTray for instance . iris iristraystop Stops IRISTray for instance . iris licmanagerstop Stops the licmanager process running in instance . iris all [> outputfile] Lists all installed instances. The status for each instance is indicated by: "dn" - InterSystems IRIS instance is not running "st" - InterSystems IRIS instance is starting or stopping. "up" - InterSystems IRIS instance is running on this machine " " - (blank) status unavailable. Instance is probably partly up without ^STU completing. Logins are disabled. iris allw [> outputfile] Lists all installed instances in wide format. iris list [] [> outputfile] Lists brief information about all installed instances, or the specified instance. The status for each instance is indicated by: "down" - InterSystems IRIS instance is not running "starting or stopping" - InterSystems IRIS instance is starting or stopping. "running" - InterSystems IRIS instance is running on this machine "Incomplete start or stop, logins disabled" " - Instance is probably partly up without ^STU completing. Logins are disabled. iris qlist [] [> outputfile] Display a quick list of information about all installed instances, or the specified instance, in a format suitable for parsing in command scripts. The record for an instance contains fields separated by "^" (carats): Field 1: instance name Field 2: instance directory Field 3: version identifier Field 4: current status for the instance Field 5: configuration file name last used Field 6: SuperServer port number Field 7: WebServer port number Field 8: JDBC Gateway port number Field 9: Instance status (e.g., ok, warn, alert) Field 10: Product name of the instance Field 11: Mirror Member Type (e.g., Failover, Disaster Recovery) Field 12: Mirror Status (e.g., Primary, Backup, Connected) iris serverlist [> outputfile] Lists information about all defined servers. Note: When [> outputfile] is present, output is redirected to the file instead of being displayed on the terminal. iris telnetstop Stops the InterSystems IRIS TELNET daemon. iris iristrmdstop Stops the InterSystems IRIS terminal daemon. iris help [display] Writes the help text to the terminal or, if display is specified, displays the help in a browser window. Error reporting: Return value: If the control command succeeds, it returns 0. Otherwise it usually returns 1 or some other non-zero value to indicate an error. You can check the return value by inspecting the ErrorLevel environment variable. Message box: iris often displays error information in a message box. You can suppress the message box containing error information by adding “quietly” (without the quotation marks) as the final argument to the iris command. This may be useful when running an unattended .bat script. For example: iris stop xxxx quietly if not errorlevel 0 … ``` `iris` 命令的行为因平台而异,如下表所述: ## `Unix®`、`Linux` 和 `macOS` 上的 iris 命令 **注意: `iris` 命令通常会在消息框中显示错误信息。可以通过安静地添加作为 `iris` 命令的最后一个参数来抑制此消息框,该命令以非交互方式运行该命令,并带有最少的对话框。此参数对其他命令也很有用,例如当想要关闭实例而无需确认命令时。** - `iris all` 列出所有已安装实例的摘要信息,每行一个实例,如下所述。 ```java C:\InterSystems\IRISHealth\bin>iris all Instance Version ID Port Directory ------------- ---------- ---- --------- up irishealth 2022.1.0.114.0 51773 c:\intersystems\irishealth ``` 注意:如果需要完整的信息,例如用于解析或报告目的,请使用 `iris list`。 ```java C:\InterSystems\IRISHealth\bin>iris list Instance 'IRISHealth' (Custom installation) directory: 'C:\InterSystems\IRISHealth' versionid: '2022.1.0.114.0' conf file: 'c:\intersystems\irishealth\iris.cpf' (SuperServer port = 51773, WebServer port = 52773) status : 'running, since Sun Sep 4 16:16:54 2022' Product : InterSystems IRISHealth ``` - `iris allw` 为每个实例列出与 `iris all` 相同的信息,而不包含长字段值。可能会产生超过 `80` 个字符的行。 ```java C:\InterSystems\IRISHealth\bin>iris allw Instance Name Version ID Port Directory ------------------------------- ---------------------------- ----- -------------------------------- up irishealth 2022.1.0.114.0 51773 c:\intersystems\irishealth ``` - `iris console instname [arguments]` 在操作系统命令窗口而不是`Terminal` 窗口中打开 `Terminal` 。同 `iris terminal` ![image](5F79276A5C594D8099232571CD0B79AD) - `iris force instname` 强制关闭实例。 ```java C:\InterSystems\IRISHealth\bin>iris force irishealth ``` - `iris help` [参数] 显示有关 `iris` 命令的最新信息。`start`, `stop`, `force` — 显示启动、停止和强制功能的特定功能帮助。 ```java C:\InterSystems\IRISHealth\bin>iris help force C:\InterSystems\IRISHealth\bin>iris help start C:\InterSystems\IRISHealth\bin>iris help stop ``` - `iris list [arguments]` 显示有关已安装 `IRIS` 实例的信息,如下所述。 `instname` — 可以选择指定 `IRIS` 实例名称以仅显示有关该实例的信息。例如,`iris list MyIRIS` 仅显示有关 `MyIRIS` 实例的信息。 ``` C:\InterSystems\IRISHealth\bin>iris list irishealth Instance 'irishealth' (Custom installation) directory: 'C:\InterSystems\IRISHealth' versionid: '2022.1.0.114.0' conf file: 'c:\intersystems\irishealth\iris.cpf' (SuperServer port = 51773, WebServer port = 52773) status : 'running, since Sun Sep 4 16:16:54 2022' Product : InterSystems IRISHealth ``` - `iris merge instname [arguments]` 将配置合并文件应用于实例,更新其 `CPF`(请参阅使用配置合并自动配置 `IRIS`)。 `merge-file [existing-CPF]` — 可以指定要应用的合并文件的位置,可以选择后跟目标 `CPF` 的位置。例如,`iris merge MyIRIS /tmp/merge.cpf` 将合并文件 `/tmp/merge.cpf` 应用于名为 `MyIRIS` 的实例。如果不带参数调用,则使用以下默认值: - 对于合并文件,默认值是 `ISC_CPF_MERGE_FILE` 环境变量的值。 - 对于现有的 `CPF`,默认是位于以下位置的 `iris.cpf` 文件: - 对于已安装的实例,安装目录。 - 对于容器,由 `ISC_DATA_DIRECTORY` 环境变量指定的目录;如果未使用持久 `%SYS` 和 `ISC_DATA_DIRECTORY`,则使用 `ISC_PACKAGE_INSTALLDIR` 环境变量指定的目录。 - `iris qall` 为每个实例列出与 `iris all` 相同的信息,除了长行被截断为 `78` 个字符外加一个终止波浪号 (`~`)。 ```java C:\InterSystems\IRISHealth\bin>iris qall ``` - `iris qlist` [参数] 与 `iris list` 类似,但有附加信息。每个实例的输出(如下所述)在一行中给出,字段由插入符号 (`^`) 分隔。 `instname` — 可以选择指定 `IRIS` 实例名称以仅显示有关该实例的信息。例如,`iris qlist MyIRIS` 仅显示有关 `MyIRIS` 实例的信息。 ```java C:\InterSystems\IRISHealth\bin>iris qlist irishealth irishealth^C:\InterSystems\IRISHealth^2022.1.0.114.0^running, since Sun Sep 4 16:16:54 2022^c:\intersystems\irishealth\iris.cpf^51773^52773^^^IRISHealth^^ ``` - `iris rename instname newname` 重命名实例。 - `iris restart instname [参数]` 重启实例;相当于 `iris stop instname restart` `nofailover` — 指定此可选参数以防止触发镜像故障转移。 - `iris start instname [参数]` 启动实例。 注意:系统可能会提示以“紧急模式”启动;如果是这样,请参阅紧急访问了解更多信息。 完整的`CPF` 路径 — 默认情况下, `IRIS` 从位于 `/mgr` 目录中的 `iris.cpf` 文件中读取某些设置。可以提供另一个 `.cpf` 文件的完整路径以供使用。 `nostu` — 启动指定的实例而不运行 `^STU`。 - `iris stat instname` 检索与 `irisstat` 实用程序相同的系统统计信息。 - `iris stop instname [参数]` 关闭实例。 `restart` — 关闭实例后启动实例。 `nofailover` — 指定此可选参数以防止触发镜像故障转移。 - `iris stopnoshut instname [参数]` 使用 `INTNOSHUT^SHUTDOWN` 关闭命名实例。 注意:只有实例所有者和 `irisusr` 可以在不登录终端的情况下运行 `INTNOSHUT^SHUTDOWN`。 `nofailover` — 指定此可选参数以防止触发镜像故障转移。 - `iris terminal instname [参数]` 打开实例的 `Terminal` 。 `B` — 允许系统管理员紧急登录终端。 `-b partition_size` — 指定进程的最大分区大小(以 `KB` 为单位)。 `"[label[+offset]]^routine"` — 指定要在用户模式下运行的 `ObjectScript` 程序的名称。除了指定的格式之外,还可以传递由字符串和/或数字文字组成的参数列表,以及省略的 (void) 参数,如下所示: - `"routine[([parameter-list])]"` - `"[label]^routine[([parameter-list])]"` - `"##CLASS(package.class).method[([parameter-list])]"` 其中,例如,参数列表以“字符串文字”的形式指定,`-+-000123.45600E+07`,省略的参数作为 `$Data(parameter)=0` 传递给目标。 **注意:空格和 `shell` 元字符必须以依赖于操作系统的形式引用。** `U` 命名空间 — 指定终端登录命名空间。 **注意:如果使用指定了启动命名空间的用户帐户启动 `IRIS`,则 `-U` 参数无效(请参阅用户帐户属性)。**
文章
姚 鑫 · 九月 23

第四十一章 使用多个 IRIS 实例(一)

# 第四十一章 使用多个 IRIS 实例(一) 可以在单个主机系统上安装和运行多个 `IRIS®` 数据平台实例。每个实例都是一个独特的、独立的 `IRIS` 环境。 # 管理 IRIS 实例 有许多方法可以连接和管理 `IRIS` 实例,它可能是安装在给定系统上的几种方法之一。两种最常用的方法如下: - 安装在 `Windows` 系统上的每个 `IRIS` 实例在系统托盘中都有自己的启动器,除其他选项外,还可以: - 通过打开管理门户、 `Terminal`和 `Studio` 开发者客户端连接到实例。 - 启动、停止和重新启动实例。 - 打开用户和开发人员文档。 从启动器中,还可以管理多个远程 `IRIS` 实例,包括但不限于运行远程备份、编辑配置设置以及创建和编译远程对象和例程。 - `iris command` 在操作系统命令行上执行 iris 命令可让管理访问 `IRIS` 实例,其中包括其他选项,可以: - 使用 `Terminal`连接到实例。 - 启动、停止和重新启动实例。 - 显示有关该实例以及系统上安装的其他实例的信息。 要在远程服务器上使用 `iris` 命令,请使用 `Telnet` 或 `SSH` 客户端;要将它与容器化实例一起使用,请在容器内使用它,或者使用 `docker exec` 命令从容器外部运行它。 # 连接到 `IRIS` 实例 `Terminal` 是一个命令行,可以在 `IRIS` 实例的任何命名空间中使用。使用命令 `iris terminal instname` 打开正在运行的实例的终端,其中 `instname` 是在安装时为实例指定的名称。容器化实例通常被命名为 `IRIS`。 使用在安装期间提供的密码或创建的帐户使用预定义的用户帐户之一登录。显示的提示指示登录命名空间,例如: ```java # iris terminal IRISHealth Node: intersystems2588, Instance: IRIS27 Username: admin Password: ******** USER> ``` 要退出终端并关闭窗口,请输入命令 `halt`。 当使用`docker exec` 命令打开容器化实例的终端时(如在部署和探索 `IRIS` 中使用 终端进行交互中所述),将自动以 `irisowner` 身份登录,无需进行身份验证。 在 `Windows` 系统上,必须从其位置( `IRIS` 实例的 `install-dir\bin` 目录)执行命令,或在命令中包含完整路径,例如 `c:\InterSystems\IRIS27\bin\iris terminal IRISHealth` .可以执行给定实例的二进制文件以连接到该实例或另一个;无论哪种方式,实例名称都是必需的。
公告
Claire Zheng · 九月 23

【腾讯会议邀请】InterSystems开发者社区中文版首届技术征文大赛线上见面会

亲爱的社区同学们! 2022年9月5日-10月24日,我们正在举办InterSystems开发者社区中文版首届技术征文大赛! 🏆InterSystems开发者社区中文版首届技术征文大赛🏆(←点击链接进入参赛页面,浏览所有参赛文章)! 2022年9月27日(下周二)11:00-11:30,我们将进行一次针对此次征文大赛的线上宣讲,欢迎您通过腾讯会议参加,了解关于此次征文大赛的信息,针对感兴趣的问题提问。 #腾讯会议信息 会议主题:InterSystems 社区技术征文大赛宣讲&解读会议时间:2022/09/27 11:00-11:30 (GMT+08:00) 中国标准时间 - 北京 点击链接入会,或添加至会议列表:https://meeting.tencent.com/dm/4UEzyh467wae #腾讯会议:493-643-076
文章
Chang Liu · 九月 22

在国产系统上安装Healthconnect2021

1,准备 本次安装环境:Kylin-Server-10-SP2-Release-Build09-20210524-x86_64.iso 安装系统适配的对应版本:HealthConnect-2021.1.2.338.0-lnxubuntux64.tar.gz;ISCAgent-2021.1.2.338.0-lnxubuntux64.tar.gz 系统语言选择:English(必要) 2,安装HealthConnect+webgateway 2.1 新建所需用户组 groupadd iscagent 2.2 解压文件 2.3 安装 本次安装,使用root用户及root用户组安装,超级端口改为51773 3,安装ISCAgent 3.1安装说明 ISCAgent是healthconnect的镜像服务,若是单机使用,则不需要安装。 3.2 解压文件 3.3 安装 3.3 加入服务 3.3.1 新建文件 在/etc/systemd/system 下创建文件,ISCAgent.service,内容如下: [Unit] Description=InterSystems Agent After=syslog.target network-online.target [Service] Environment=LD_LIBRARY_PATH=/usr/local/etc/irissys Environment=COMLIB=/usr/local/etc/irissys ExecStart=/usr/local/etc/irissys/ISCAgent Type=forking PIDFile=/var/run/ISCAgent.pid KillMode=process [Install] WantedBy=multi-user.target 其中,/usr/local/etc/irissys为ISCAgent服务安装默认目录。 3.3.2 修改文件属性 chmod 755 ISCAgent.service3.3.3 重新启动systemctl systemctl daemon-reload 3.3.4 启动服务 systemctl start ISCAgent.service 3.3.5 查看服务状态 systemctl status ISCAgent.service 如下: 4, 防火墙配置 firewall-cmd --zone=public --add-port=51773/tcp --permanent firewall-cmd --zone=public --add-port=52773/tcp --permanent firewall-cmd --zone=public --add-port=2188/tcp --permanent (--permanent永久生效,没有此参数重启后失效) 重载生效: firewall-cmd --reload 5,镜像配置 5.1 主机配置 创建镜像 5.2 备机配置 加入故障转移 hc为HealthConnect的安装实例名称 6 安装过程中出现的问题 6.1 描述 添加虚拟ip失败: 6.2 问题解决 发现virtualIP.sh中部分代码在中文系统中执行时有问题,则将系统换成英文系统则可以解决这个问题。 The End
公告
Claire Zheng · 九月 22

InterSystems开发者社区中文版首届技术征文大赛专家评审团亮相!

中文社区的同学们大家好! 如你所知,从2022年9月5日-10月24日(北京时间),我们正在举办🏆InterSystems开发者社区中文版首届技术征文大赛🏆(←点击链接进入参赛页面,浏览所有参赛文章)! 截至目前,我们已收获了20余篇佳作 作为此次大赛重要奖项“专家提名奖”评比的重要部分,我们的专家评审团已组建成团! 以下为我们的专家团成员: @Yunfei.Lei @Peng.Qiao @Ida.Yang @Lin.Zhu @Louis.Lu @Hao.Ma @Jingwei.Wang @Tete.Zhang @Tengzhou.Zhuang @jieliang.liu7848 @Duan.Haihua @Wenyi.Liu 我们期待专家评审团对参赛作品的公平审阅与打分。 作为社区成员,你的个人贡献也会对每一篇参赛文章产生影响,你的每一次浏览和点赞都将助力你喜欢的文章赢得“开发者社区奖”。 欢迎大家积极投稿、点赞、分享、学习! 欢迎参赛InterSystems开发者社区中文版首届技术征文大赛
文章
Jingwei Wang · 九月 20

在虚拟化环境中使用镜像的注意事项

在虚拟化环境中使用镜像,构成镜像的InterSystems IRIS实例被安装在虚拟主机上,创造了一个混合的高可用性解决方案,将镜像的优点与虚拟化的优点结合起来。镜像通过自动故障切换对计划内或计划外的故障提供即时响应,而虚拟化HA软件在计划外的机器或操作系统故障后自动重新启动承载镜像成员的虚拟机。这允许失败的成员迅速重新加入镜像,充当备份(或在必要时作为主机)。 当镜像被配置在虚拟化环境中时,请参考以下建议: 故障转移成员的虚拟主机和备机不可以配置在同一台物理机上。 为了避免单点存储故障,故障转移成员上的InterSystems IRIS实例所使用的存储应永久隔离在不同磁盘组或存储阵列的独立数据存储中。 在虚拟化平台层面上进行的一些操作,如备份或迁移,可能会导致故障转移成员长时间没有反应,从而导致不需要的故障转移或不理想的警报频率。为了解决这个问题,你可以增加QoS超时设置。 在进行导致故障转移成员连接中断的计划性维护操作时,你可以暂时停止备份上的镜像,以避免不必要的故障转移和警报。 在镜像成员上必须非常谨慎地使用快照管理,因为将一个成员恢复到早期的快照,既会删除该成员的最新状态(例如,自拍摄快照以来,该成员可能已经从主机变为备机),也会删除其他成员仍然拥有的日志数据。 使用虚拟机备份恢复镜像时请特别注意: 被恢复到早期快照的故障转移成员只能从power-off 状态下恢复;从power-on 状态下恢复会造成两个故障转移成员同时作为主机的可能性。 如果被恢复到早期快照的故障转移成员在没有获得自快照以来创建的所有日志数据的情况下成为主要成员--例如,因为它被迫成为主要成员--所有其他镜像成员必须被重建(如需重建镜像,请联系WRC)。
文章
Jingwei Wang · 九月 20

FAQ常见问题系列 -- HA篇 虚拟化环境上的镜像问题

1. VMWare快照引起的网络中断导致非计划内主备机切换问题 1.1 问题描述 在创建虚拟机快照时,虚拟机需要短时间的冻结,这个短时间冻结通常指虚拟机静默,在静默过程中网络连接处于中断状态。由于数据库的不断增长,使用VMWare快照的方式对虚拟机进行备份的时长也会不断增加,当对虚拟机进行快照的时长长于InterSystems镜像服务质量 (QoS) 超时时间,即当主机网络中断超过QoS超时时间,仲裁机与备机观察并相互确认与主机的连接丢失后,将发起切换过程,使原备机成为主机并将虚拟IP从主机MAC地址解绑后重绑定到备机的MAC地址上。特别需要注意的是,在这种由于网络中断引起的切换中,仲裁与备机都无法得知主机的实际工作状态。因此,在主机网络连接恢复后,为了为了避免因切换期间主机还在处理数据导致主备机间数据不一致,备机主动发起请求让主机下线,关闭主机,此时主机状态显示为关闭(Down)。 1.2 解决方案 对于由于虚拟机快照引起的网络中断造成的非计划内主备切换问题,请参考以下两种解决方案: 使用数据库冻结/解冻脚本,具体脚本和操作方式请参考社区文章虚拟机备份和 Caché 冻结/解冻脚本,如有其他疑问请联系InterSystems WRC 在镜像集群中增加一个异步镜像成员,使用异步镜像成员创建虚拟机快照,由于此异步镜像成员也会同步获取主机数据,但是不会自动切换,所以在此异步镜像成员中创建虚拟机快照,既可以备份虚拟机,也不会引起非计划内主备机切换问题。 2. VMWare资源不足导致的主备机非计划内切换问题: 2.1 问题描述 当虚拟机的物理资源不足,可能会导致网络中断或者InterSystems IRIS 实例日志守护进程不响应超过 30 秒(或300 秒),导致主备非计划内切换。 2.2 解决方案 请扩展虚拟机的物理资源,且增加对虚拟机的状态进行监控,以防再次出现资源不足情况。 监控网络状态Log 由于网络中断造成的镜像主备切换是非计划内主备切换的重要原因之一,所以为了方便排查问题,可以在仲裁机上加一个ping的脚本,用来ping主机和备机,并将ping的结果放入log中,当发生非计划内主备切换时这个log有利于排查问题。也可以使用此ping脚本来监控网络状态,使用户能够第一时间获得网络状态信息。
公告
Claire Zheng · 九月 19

轻而易举!来InterSystems Ideas为你的想法分类吧!

开发者社区的同学们,大家好! 在 之前的公告 中,我们向大家介绍了InterSystems官方反馈门户 InterSystems Ideas! 今天想给大家介绍更多,尤其是涉及到的主题。 你可以按以下主题类别提交你的想法: 💡 InterSystems Products(InterSystems产品) 在这里,您可以在这里发布与我们产品发展相关的创意和想法: InterSystems IRIS数据平台 InterSystems IRIS for Health(医疗版)数据平台 InterSystems HealthShare InterSystems TrakCare 💡 InterSystems Services(InterSystems服务) 您可以在这里发表如何使我们的服务变得更好的想法: Developer Community (开发者社区) Open Exchange app gallery(Open Exchange应用库) Global Masters gamification platform(Global Masters游戏平台) Partner Directory(供应商目录) Documentation(文档) Certification(认证) Learning (学习) 以及InterSystems Ideas Portal 还有一个主题类别是 "Other(其他)" ,如果您的创意和想法与上述两类不直接相关,可以放在这个类别下。 选择好类别(Category)后,您也可以自由添加合适的关键字/标签: 如果您认为还有哪些类别和关键字值得被添加到这里,欢迎随时与我们分享! 点击一下,来 InterSystems Ideas portal 提出你的意见和建议吧✌️
公告
Claire Zheng · 九月 19

欢迎来了解一下 InterSystems Ideas ——我们的官方反馈门户

开发者社区的同学们,大家好! 我们一直以来都有一个想法——改进收集、分析和回应开发者社区成员们的产品改进请求的过程。我们知道,我们需要一个良好的用户体验,甚至更好的内部流程,来确保收集、听取和响应最好的想法。现在,这个想法终于实现了! 我们在此向您介绍 InterSystems官方反馈门户 💡 >> InterSystems Ideas << 💡 InterSystems Ideas InterSystems Ideas是一个全新的、推动改进的渠道,您可以通过它向我们提交与InterSystems服务(文档、开发社区、全球大师等)相关的产品改进请求和想法,看看其他人提交了什么,为你喜欢的想法投票,投票给你最喜欢的,并从InterSystems获得反馈。 我们开始积极开发和推广创意门户网站InterSystems Ideas和您的创意。我们希望这可以为您提供一个公开的方式来获得我们的产品经理和社区成员的反馈。 ✅ 获得投票最多的想法会得到产品管理部门的评审。 来社区分享你的想法吧!通过投票和评论为其他想法提供贡献——投票越多,影响力越大! 点击看看创意网站 InterSystems Ideas portal!