Ожидаемое ожидание хоста в группе [дубликат]

Вот полный пример, основанный на ответе @Pablo Santa Cruz и на вашем коде.

Не знаю, почему вы получили сообщение об ошибке. Вероятно, это проблема с SQL Developer. Все работает отлично, когда вы запускаете его в SQL * Plus и добавляете функцию:

   create or replace and compile
   java source named "RandomUUID"
   as
   public class RandomUUID
   {
      public static String create()
      {
              return java.util.UUID.randomUUID().toString();
      }
   }
   /
Java created.
   CREATE OR REPLACE FUNCTION RandomUUID
   RETURN VARCHAR2
   AS LANGUAGE JAVA
   NAME 'RandomUUID.create() return java.lang.String';
   /
Function created.
   select randomUUID() from dual;
RANDOMUUID()
--------------------------------------------------------------
4d3c8bdd-5379-4aeb-bc56-fcb01eb7cc33

Но, если возможно, я придерживался SYS_GUID. Взгляните на ID 1371805.1 на поддержку моего Oracle - эта ошибка, предположительно, исправлена ​​в 11.2.0.3.

EDIT

Какой из них быстрее зависит от того, как используются функции.

Похоже, что версия Java немного быстрее при использовании в SQL. Однако, если вы собираетесь использовать эту функцию в контексте PL / SQL, PL / SQL-функция примерно в два раза быстрее. (Вероятно, потому что он позволяет избежать накладных расходов на переключение между двигателями.)

Вот краткий пример:

--Create simple table
create table test1(a number);
insert into test1 select level from dual connect by level <= 100000;
commit;

--SQL Context: Java function is slightly faster
--
--PL/SQL: 2.979, 2.979, 2.964 seconds
--Java: 2.48, 2.465, 2.481 seconds
select count(*)
from test1
--where to_char(a) > random_uuid() --PL/SQL
where to_char(a) > RandomUUID() --Java
;

--PL/SQL Context: PL/SQL function is about twice as fast
--
--PL/SQL: 0.234, 0.218, 0.234
--Java: 0.52, 0.515, 0.53
declare
    v_test1 raw(30);
    v_test2 varchar2(36);
begin
    for i in 1 .. 10000 loop
        --v_test1 := random_uuid; --PL/SQL
        v_test2 := RandomUUID; --Java
    end loop;
end;
/

Версии 4 GUID не полностью случайным образом. Предполагается, что некоторые из байтов будут исправлены. Я не уверен, почему это было сделано, или если это имеет значение, но согласно https://www.cryptosys.net/pki/uuid-rfc4122.html :

Процедура создания UUID версии 4 выглядит следующим образом:

Generate 16 random bytes (=128 bits)
Adjust certain bits according to RFC 4122 section 4.4 as follows:
    set the four most significant bits of the 7th byte to 0100'B, so the high nibble is "4"
    set the two most significant bits of the 9th byte to 10'B, so the high nibble will be one of "8", "9", "A", or "B".
Encode the adjusted bytes as 32 hexadecimal digits
Add four hyphen "-" characters to obtain blocks of 8, 4, 4, 4 and 12 hex digits
Output the resulting 36-character string "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"

Значения из версии Java соответствуют стандарту.

23
задан Ben Harrison 10 September 2016 в 19:25
поделиться

1 ответ

Познакомьтесь с Rolling Updates :

Что вы ищете, это

- hosts: webservers
  serial: 1
  tasks:
    - name: ...
49
ответ дан ProfHase85 18 August 2018 в 19:37
поделиться
  • 1
    Спасибо, это именно то, что я искал. – Lynn 5 December 2014 в 14:45
  • 2
    ProfHase85, Спасибо за ответ, но вы могли бы показать пример, как передать «серийное» значение через аргументы командной строки? В соответствии с этой проблемой github.com/ansible/ansible/issues/1767 это должно быть возможно, но трудно найти хороший образец этого. – sviklim 11 May 2017 в 10:50
  • 3
    Это не имеет никакого отношения к вопросу, просто стандартное использование переменных. Вот для него суть: gist.github.com/profhase/57af3e715ec7faf5bf34d84299228591 В последней строке есть пример вызова для него – ProfHase85 15 May 2017 в 14:53
Другие вопросы по тегам:

Похожие вопросы: