Page 1 of 1

Lizenzmetrik für Oracle Java Subscription

Posted: 29. Apr 2019, 17:42
by mhausl
Gemäß dem Artikel https://upperedge.com/oracle/using-java ... fects-you/
kommt bei Server der Prozessor/Core-Faktor zum Einsatz.

Nachdem es "out of the Box" noch keine passende Lizenzmetrik (und, trotz LIS-Update auch kein SW-Produkt) gibt, habe ich mal selber versucht eine zu definieren:

Code: Select all

(case when Target.T(SPSComputerClassOS).Name like '%Server%' 
  then Target.T(SPSComputerClassBase).AmountProcessorCores * (case 
    when Target.T(SPSComputerClassBase).AmountProcessorCores = 1 then 1 
    when Target.T(SPSComputerClassBase).Processor like '%UltraSparc64%' then 0.75 
    when Target.T(SPSComputerClassBase).Processor like '%UltraSparc%' then (case 
      when Target.T(SPSComputerClassBase).Processor like '%1.4%' then 0.50 
      else 0.25 end)
    when Target.T(SPSComputerClassBase).Processor like '%AMD%' and Target.T(SPSComputerClassBase).AmountProcessorCores > 1 then 0.50 
    when Target.T(SPSComputerClassBase).Processor like '%XEON%' and Target.T(SPSComputerClassBase).AmountProcessorCores > 1 then 0.50 
    when Target.T(SPSComputerClassBase).Processor like '%HP PA-%' then 0.75 
    when Target.T(SPSComputerClassBase).Processor like '%IBM%Power6%' then 1
    when Target.T(SPSComputerClassBase).Processor like '%IBM%System z%' then 1 
    when Target.T(SPSComputerClassBase).Processor like '%IBM%' and Target.T(SPSComputerClassBase).AmountProcessorCores > 1 then 0.75 
    when Target.T(SPSComputerClassBase).AmountProcessorCores > 1 then 1 else 1 end)
  else 1 
end)
Leider bekomme ich beim Speichern immer folgende Fehlermeldung:

Case operator error, type mismatch of expressions!
update4u.SPS.DataLayer.Query.ExpressionParserException: Case operator error, type mismatch of expressions! at update4u.SPS.DataLayer.Query.CaseSearchFunctionExpressionType.CheckAndAddAttributeType(FunctionOperatorExpression functionOperatorExpression) at update4u.SPS.DataLayer.Query.FunctionOperatorExpression.CheckAndAddAttributeType() at update4u.SPS.DataLayer.Query.VisitorAddSchemaInfo.Visit(FunctionOperatorExpression expression) at update4u.SPS.DataLayer.Query.FunctionOperatorExpression.AcceptVisitor(BaseExpressionVisitor visitor) at update4u.SPS.DataLayer.Query.VisitorAddSchemaInfo.AddSchemaInfo(BaseExpression expression) at update4u.SPS.DataLayer.Query.BaseExpression.AddSchemaInfo(ObjectClass baseClass, IgnoreSchemaError ignoreSchemaError, AsqlParameterCollection asqlParameter) at update4u.SPS.DataLayer.Query.BaseExpression.AddSchemaInfo(ObjectClass baseClass, AsqlParameterCollection asqlParameter) at update4u.SPS.DataLayer.Query.ColumnExpressionParser.Validate(Guid objectClassID, String expression) at update4u.LicenseManager.WebUI.DlgControls.LCMLicenseModelType.LMCustomData.PreActions(ControlEventInfo eventInfo, SPSTransaction transaction) at update4u.SPS.WebUI.Components.Controls.Dialogs.SessionUpdateObjectsManager.CustomDataPreActions(ObjectUpdateInfo objectInfo, SPSTransaction transaction) at update4u.SPS.WebUI.Components.Controls.Dialogs.SessionUpdateObjectsManager.UpdateObject(ObjectUpdateInfo objectInfo, SPSTransaction spsTransaction) at update4u.SPS.WebUI.Components.Controls.Dialogs.SessionUpdateObjectsManager.UpdateSPSObject(ObjectUpdateInfo objectInfo) at update4u.SPS.WebUI.Components.Controls.Dialogs.SessionUpdateObjectsManager.Save(ObjectUpdateInfo objectInfo) at update4u.SPS.WebUI.Components.Controls.Dialogs.DataObjectDlg.UpdateSPSObject() at update4u.SPS.WebUI.Components.Controls.Dialogs.DataObjectDlg.WriteSpsObject() at update4u.SPS.WebUI.Components.Controls.Dialogs.DataObjectDlg.ApplyInternal()

Hat jemand eine Lösung?

BG
Markus

Re: Lizenzmetrik für Oracle Java Subscription

Posted: 29. Apr 2019, 18:15
by Torsten Boch
Der Fehler kommt daher, dass Sie in Ihrem case-Konstrukt Integer und Float-Zahlen mischen. Überall wo Sie "1" angeben, müssen Sie stattdessen "1.0" verwenden.

Richtig lautet die Formel:

Code: Select all

(case when Target.T(SPSComputerClassOS).Name like '%Server%' 
  then Target.T(SPSComputerClassBase).AmountProcessorCores * (case 
    when Target.T(SPSComputerClassBase).AmountProcessorCores = 1 then 1.0 
    when Target.T(SPSComputerClassBase).Processor like '%UltraSparc64%' then 0.75 
    when Target.T(SPSComputerClassBase).Processor like '%UltraSparc%' then (case 
      when Target.T(SPSComputerClassBase).Processor like '%1.4%' then 0.50 
      else 0.25 end)
    when Target.T(SPSComputerClassBase).Processor like '%AMD%' and Target.T(SPSComputerClassBase).AmountProcessorCores > 1 then 0.50 
    when Target.T(SPSComputerClassBase).Processor like '%XEON%' and Target.T(SPSComputerClassBase).AmountProcessorCores > 1 then 0.50 
    when Target.T(SPSComputerClassBase).Processor like '%HP PA-%' then 0.75 
    when Target.T(SPSComputerClassBase).Processor like '%IBM%Power6%' then 1.0
    when Target.T(SPSComputerClassBase).Processor like '%IBM%System z%' then 1.0 
    when Target.T(SPSComputerClassBase).Processor like '%IBM%' and Target.T(SPSComputerClassBase).AmountProcessorCores > 1 then 0.75 
    when Target.T(SPSComputerClassBase).AmountProcessorCores > 1 then 1.0 else 1.0 end)
  else 1.0 
end)
Allerdings wird diese Metrik lizenzrechtlich nicht korrekt funktionieren. Jedenfalls nicht, wenn es um virtualisierte Server geht. In diesen Fällen gilt die Partitioning Policy von Oracle, welche die Art der Virtalisierung berücksichtig (Soft vs. Hard Partitioning). Bei VMware gilt beispielsweise dann die Maßgabe, dass die physische Hardware lizenziert werden muss. Unter Umständen dann noch nicht einmal nur den Host selbst, sondern den Cluster, das vCenter oder Ihre gesamte VMware Infrastruktur.

Hierfür bietet das SAM Tool aktuell jedoch keine automatisierte Unterstützung. Wir haben die Partitioning Policy von Oracle lediglich für die Datenbanken im Add-on "Oracle Database Compliance" implementiert. Wir beabsichtigen, diese Regelung generisch zur Verfügung zu stellen. Das wird jedoch noch voraussichtlich nicht vor Ende dieses Jahres der Fall sein.