云数据库 GAUSSDB-CLEAN CONNECTION:示例

时间:2024-11-13 14:46:22

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
--创建数据库test_clean_connection。
gaussdb=# CREATE DATABASE test_clean_connection;

--创建jack用户。
gaussdb=# CREATE USER jack PASSWORD '********';

--在另一个会话用jack用户登录该数据库之后,通过视图查询到该连接信息。
gaussdb=# SELECT datname,usename,application_name,waiting,state 
          FROM pg_stat_activity 
          WHERE datname = 'test_clean_connection';
        datname        | usename | application_name | waiting | state 
-----------------------+---------+------------------+---------+-------
 test_clean_connection | jack    | gsql             | f       | idle
(1 row)

--此时直接删除数据库test_clean_connection会有如下报错:
gaussdb=# DROP DATABASE test_clean_connection;
ERROR:  Database "test_clean_connection" is being accessed by other users. You can stop all connections by command: "clean connection to all force for database XXXX;" or wait for the sessions to end by querying view: "pg_stat_activity".
DETAIL:  There is 1 other session using the database.

--删除登录数据库数据库test_clean_connection的当前CN节点与所有节点的连接。
--如果不使用FORCE参数是无法删除stat状态为其他的状态的连接。
gaussdb=# CLEAN CONNECTION TO ALL FORCE FOR DATABASE test_clean_connection;

--查询登录数据库test_clean_connection的连接。
gaussdb=# SELECT datname,usename,application_name,waiting,state
          FROM pg_stat_activity
          WHERE datname = 'test_clean_connection';
 datname | usename | application_name | waiting | state 
---------+---------+------------------+---------+-------
(0 rows)


--删除数据库test_clean_connection。
gaussdb=# DROP DATABASE test_clean_connection;

--删除用户jack。
gaussdb=# DROP USER jack;
support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0525.html