У меня есть экземпляр DB2 9.7 LUW с несколькими базами данных. Я пытаюсь взять резервное копирование определенной базы данных, но клиент Data Studio сообщает, что существует все еще активное соединение, таким образом, это перестало работать.
Как я могу вынудить базу данных удалить все активные соединения к той определенной базе данных?Спасибо!
Это невозможно сделать одной командой; сначала необходимо перечислить соединения:
LIST APPLICATIONS FOR DB <databasename>
Затем, используя все числовые дескрипторы приложений, возвращаемые вышеприведенным списком, выдать оператор FORCE APPLICATION
:
FORCE APPLICATION (1, 2, 3, 4, ...)
Полагаю, вы пытаетесь создать автономную резервную копию. Вы можете использовать db2 FORCE APPLICATION ALL
. Как указано в руководстве :
ALL - All applications will be disconnected from the database server.
Хотя, прежде чем вы выберете форсированный путь, я предлагаю взглянуть на QUIESCE
вместо правильной остановки приложения. Ваш процесс резервного копирования будет выглядеть примерно так:
# Stop your application
su - db2inst1 # Or whatever instance you have
timestamp=$(date +%Y-%m-%d-%H-%M)
mkdir backup-mydb-$timestamp
# Connect to your database and check existing connections
db2 CONNECT TO MYDB;
db2 list applications for database MYDB show detail
# QUISCE the database
db2 QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS;
db2 CONNECT RESET
# Perform the backup
db2 BACKUP DATABASE MYDB TO "/home/db2i2/backup-mydb-$timestamp" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING;
# UNQUISCE the database
db2 CONNECT TO MYDB
db2 UNQUIESCE DATABASE;
db2 CONNECT RESET;
# Test the backup
db2ckbkp -h backup-mydb-$timestamp/*
# Start your application
Вы также можете использовать db2top
, чтобы отслеживать соединения с базой данных и определять, какие приложения необходимо остановить.
Предположив, что это резервная копия OFFLINE, это можно сделать либо с помощью DEACTIVATE в базе данных, либо с помощью QUISCE в базе данных.
Для ДЕАКТИВАТА в базе данных выполните следующие шаги:-
DB_NAME
, и, если они найдены, отключите их, используя ПРИЛОЖЕНИЯ ДЛЯ ЗАЯВКИ
ВСЕ DB_NAME
Для QUISCE базы данных, выполните следующие шаги: -
ПОДКЛЮЧЕНИЕ К БД
QUIESCE DATABASE IMMEDIATE FORCE CONNECT CONNECT RESET
Я использую следующие шаги, и это работает:
db2 connect to TFBDW
db2 list application for database TFBDW
db2 QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS;
db2 "force application (39)"
db2 CONNECT RESET
db2 backup database TFBDW_U to "/tmp/dbbackup/"