У меня есть экземпляр DB2 9.7 LUW с несколькими базами данных. Я пытаюсь сделать резервную копию определенной базы данных, но клиент Data Studio сообщает, что соединение все еще активно, поэтому оно не работает.
Как я могу заставить базу данных удалить все активные подключения к этой конкретной базе данных? Спасибо!
Вы не можете сделать это с помощью одной команды; вы должны сначала указать подключения:
LIST APPLICATIONS FOR DB <databasename>
Затем используйте все числовые дескрипторы приложения, возвращенные приведенным выше списком, чтобы выдать FORCE APPLICATION
заявление:
FORCE APPLICATION (1, 2, 3, 4, ...)
Я использую следующие шаги, и это работает.
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/"
Я предполагаю, что вы пытаетесь сделать автономную резервную копию. Ты можешь использовать 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
для отслеживания подключений к базе данных и определения приложений, которые необходимо остановить.
Предполагая, что это НЕ В СЕТИ резервное копирование, это можно сделать либо ВЫКЛЮЧИТЬв базе данных или QUISCEв базе данных.
Для ВЫКЛЮЧИТЬВ базе данных выполните следующие действия: -
DB_NAME
, и если их обнаружат, выньте их, используя ПРИЛОЖЕНИЯ FORCE ВСЕ DB_NAME
Для QUISCEВ базе данных выполните следующие действия: -
ПРИСОЕДИНИТЬСЯ DBNAME
QUIESCE DATABASE НЕМЕДЛЕННОЕ ПРИНУДИТЕЛЬНОЕ СОЕДИНЕНИЕ
ПОДКЛЮЧИТЬ СБРОС