Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Oracle 18 + OraOLEDB.Oracle + Create Profile = ORA-12828  [new]
adasiko
Member

Откуда:
Сообщений: 5
Собственно

Клиент:
Windows 10 + приложение с OraOLEDB.Oracle
Строка соединения:
Provider=OraOLEDB.Oracle;Password=my_password;User ID=system;Data Source=XE


Сервер:
Oracle SQL 18 XE на виртуалке.

Собственно разные запросы выполняются (список пользователей, создание пользователей). Но ни в какую не хочет создаваться профиль

Вот код Delphi (типа Hello World, в приложении больше ничего нет).
Query1.SQL.Text:='CREATE PROFILE c##new_profile '+
    'LIMIT PASSWORD_REUSE_MAX 10 '+
    'PASSWORD_REUSE_TIME 30';
  try
    Query1.ExecSQL;
  except
    on E: Exception do
    begin
      MessageDlg(E.Message, mtWarning,[mbOk], 0);
    end;
  end;

Пишет: "ORA-12828: Can't start parallel transaction at remote site"

Что работает:
1) Подсоединяюсь к серверу Oracle SQL 11 XE (прям с клиентом и библиотеками 18-го). Приложения работает отлично.
2) Использую SQL Developer 19.1. Выполняю там тот же запрос на создание профиля - тоже отлично создаётся.

Что не так с приложением с OraOLEDB.Oracle?
7 май 19, 12:16    [21879781]     Ответить | Цитировать Сообщить модератору
 Re: Oracle 18 + OraOLEDB.Oracle + Create Profile = ORA-12828  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
+
If OLEDB is configured to allow distributed transaction, then it has to set OCI_ATTR_INTERNAL_NAME and OCI_ATTR_EXTERNAL_NAME. When these are set, parallel operation is not allowed.

Workaround
If it is not necessary for OLEDB to use distributed transactions, then the following workaround can be used:
Set \HKLM\SOFTWARE\Oracle\<OracleHome>\OLEDB\DistribTX to 0.

Then INTERNAL/EXTERNAL names are not set and parallel processing will not have issues.

?
7 май 19, 12:39    [21879812]     Ответить | Цитировать Сообщить модератору
 Re: Oracle 18 + OraOLEDB.Oracle + Create Profile = ORA-12828  [new]
adasiko
Member

Откуда:
Сообщений: 5
Viewer
DistribTX to 0


Есть! В реестре не нашёл что-то такого.

Короче дописал в ConnectionString.

Provider=OraOLEDB.Oracle;Password=my_password;User ID=system;Data Source=XE;DistribTX=0

Теперь работает. Странно как-то что оно только на создании профиля вылезало...
8 май 19, 06:07    [21880562]     Ответить | Цитировать Сообщить модератору
 Re: Oracle 18 + OraOLEDB.Oracle + Create Profile = ORA-12828  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
adasiko
Странно как-то что оно только на создании профиля вылезало...

рецепт был взят из ORA-12828 While Unlocking a User Account
8 май 19, 07:49    [21880588]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить