Управление подключениями к базам геоданных в Db2

Доступно с лицензией Standard или Advanced.

Как администратор базы геоданных, вы время от времени должны просматривать, кто подключен к базе геоданных, и какие соединения являются блокированными ресурсами. Вам может понадобиться удалить определенные подключения, если пользователей нет на месте или они не могут отключиться сами. Например, редактор мог оставить открытым ArcGIS Pro во время редактирования, заблокировав данные в сеансе редактирования и заблокировав тем самым доступ к ним других редакторов, а также запретив изменение схемы таблиц владельцу данных. Или вам может потребоваться отключить всех пользователей, чтобы вы могли применить патч к базе данных, восстановить базу данных или сжать базу геоданных.

Можно подключиться к базе геоданных под пользователем sde в ArcGIS Pro для просмотра и, при необходимости, удаления подключений. Либо для этого можно использовать функции ArcPy.

Для того чтобы отключить пользователей от базы геоданных в IBM Db2 в системах Linux, UNIX или Windows, пользователь sde должен иметь права доступа SYSCTRL или SYSADM и права доступа DBADM.

Внимание:

Соблюдайте осторожность при отключении пользователей. Esri рекомендует вам избегать отключения активных сеансов, особенно, если подключенный пользователь находится в процессе редактирования. Следует отключать только сеансы, оставшиеся открытыми, но не использующиеся (например, если пользователь оставил открытый сеанс на выходные), зависшие сеансы, блокирующие объект, или сеансы, попавшие в ситуацию взаимоблокировки.

Сначала определите пользователей, подключенных к базе геоданных. Если необходимо, можно удалить подключения.

Идентификация и удаление подключений из ArcGIS Pro

Вы можете подключиться к базе геоданных в качестве sde в ArcGIS Pro для просмотра подключений в диалогом окне Администрирование базы геоданных.

  1. Запустите ArcGIS Pro.
  2. Подключитесь к базе геоданных от имени пользователя sde.
  3. Щелкните правой кнопкой мыши на подключении к базе данных и выберите Администрировани > Подключения.

    Отобразится список всех сеансов, которые в текущий момент подключены к базе геоданных. Ваш сеанс отображается курсивным шрифтом.

  4. Свяжитесь с пользователями и попросите их закрыть свои сеансы. Если вы не можете связаться с ними, и все-таки необходимо отключить их от базы геоданных, то перейдите к следующему шагу.
  5. Щелкните правой кнопкой мыши сеанс определенного пользователя, который вы хотите удалить из базы геоданных, и щелкните Отключить.

    Сеанс будет немедленно отключен от базы геоданных.

  6. Закройте диалоговое окно Администрирование базы геоданных.

Идентификация и удаление подключений с помощью Python

Вы можете запустить функции ArcPy, чтобы создать файл подключения к базе геоданных для пользователя sde, использовать этот файл для подключения к базе геоданных и получения списка текущих подключений, а также для удаления подключения к базе геоданных, если необходимо.

  1. Создайте файл подключения базы данных с помощью функции CreateDatabaseConnection_management в окне Python. Сохраните имя пользователя и пароль в файле.

    В данном примере файл подключения (dgdb.sde) создан в папке temp. Он подключается к каталогизированной базе данных spdb2 от имени пользователя sde.

    import arcpy
    arcpy.CreateDatabaseConnection_management ("c:\\temp", "dgdb.sde", "DB2", "spdb2", "DATABASE_AUTH", "sde", "mysdepwd", "SAVE_USERNAME")

  2. Запустите функцию ListUsers для получения списка всех текущих подключений к базе геоданных spdb2.

    Укажите файл подключения, который вы создали в предыдущем шаге.

    ##No need to import arcpy if you are running functions in the same Python window.
    import arcpy
    
    arcpy.ListUsers("c:\\temp\dgdb.sde")

    Возвращается список подключений пользователей.

    [user(ClientName=u'PC4', ConnectionTime=datetime.datetime(2018, 2, 18, 8, 30, 19),
     ID=18, IsDirecConnection=True, Name=u'publisher1')]
    [user(ClientName=u'PC25', ConnectionTime=datetime.datetime(2018, 2, 21, 14, 10, 43),
     ID=33, IsDirecConnection=True, Name=u'editor2')]
    [user(ClientName=u'PC11', ConnectionTime=datetime.datetime(2018, 2, 22, 9, 18, 26),
     ID=39, IsDirecConnection=True, Name=u'reader5')]
    [user(ClientName=u'PCA2', ConnectionTime=datetime.datetime(2018, 2, 22, 11, 21, 2),
     ID=41, IsDirecConnection=True, Name=u'sde')]

  3. Свяжитесь с пользователями и попросите их закрыть свои сеансы. Если вы не можете связаться с ними, и все-таки необходимо отключить их от базы геоданных, то перейдите к следующему шагу.
  4. Используйте информацию, полученную от функции ListUsers, чтобы определить, какое подключение следует удалить посредством функции DisconnectUser.

    Укажите ID подключения, которое нужно удалить. Здесь удаляется подключение с ID 33:

    ##No need to import arcpy if you are running functions in the same Python window.
    import arcpy
    
    arcpy.DisconnectUser("c:\\temp\dgdb.sde",33)

    Сеанс будет немедленно отключен от базы геоданных.