PostgreSQL | 데이터베이스(Database) | 생성된 데이터베이스 목록 조회
PostgreSQL로 생성된 데이터베이스 목록을 조회하는 방법에 대해 설명한다.
\l 명령을 사용하기
먼저 psql의 메타 명령을 사용하는 방법이다. 생성된 데이터베이스 목록을 검색하려면 다음과 같이 수행한다.
postgres=# \l
데이터베이스 목록
이름 | 소유주 | 인코딩 | Collate | Ctype | 액세스 권한
-----------+----------+--------+------------------+------------------+-----------------------
devkuma | postgres | UTF8 | Korean_Korea.949 | Korean_Korea.949 |
devkuma2 | postgres | UTF8 | Korean_Korea.949 | Korean_Korea.949 |
postgres | postgres | UTF8 | Korean_Korea.949 | Korean_Korea.949 |
sample | postgres | UTF8 | Korean_Korea.949 | Korean_Korea.949 |
template0 | postgres | UTF8 | Korean_Korea.949 | Korean_Korea.949 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | Korean_Korea.949 | Korean_Korea.949 | =c/postgres +
| | | | | postgres=CTc/postgres
(6개 행)
postgres=#
생성된 데이터베이스 목록을 조회할 수 있다.
시스템 카탈로그 pg_database에서 조회하기
이어서 PostgreSQL 시스템 카탈로그의 하나인 pg_database에서 얻을 수 있는 방법에 대해서 알아보자. 시스템 카탈로그는 PostgreSQL의 관리 시스템이 사용하는 테이블에서 데이터베이스 및 테이블 등의 정보를 관리하는데 사용하는 pg_database에는 다음과 같은 열이 있다.
이름 | 형 | 설명 |
---|---|---|
oid | oid | 식별자 (명시적으로 지정하지 않으면 얻을 수 없다) |
datname | name | 데이터베이스 이름 |
datdba | oid | 데이터베이스 소유자 |
encoding | int4 | 데이터베이스 문자 집합의 식별 번호 |
datcollate | name | 데이터베이스 문자열 정렬 순서 |
datctype | name | 데이터베이스 문자 유형 |
datistemplate | bool | 모든 사용자가 복제할 수 있는지 여부 (false의 경우는 수퍼 유저 또는 데이터베이스 소유자 만이 복제 가능) |
datallowconn | bool | 데이터베이스에 연결할 수 있는지 여부 (template0의 데이터 변경을 방지하기 위해 사용) |
datconnlimit | int4 | 동시 연결의 최대 수 (-1은 무제한) |
datlastsysoid | oid | 데이터베이스 최종 시스템 OID |
datfrozenxid | xid | 이 데이터베이스에서 이 값보다 이전 트랜잭션 ID는 영속적인(동결 된) 트랜잭션 ID를 갖도록 변경되어 있다. 이는 이 데이터베이스에 대해 트랜잭션 ID 순환(wraparound) 문제를 방지하고, pg_xact을 축소시키는 것을 목적으로 한진공 작업을 수행할 것인지 여부를 추적하기 위해 사용된다. |
datminmxid | xid | 이 데이터베이스 내에 트랜잭션 ID로 대체되기 전에 모든 멀티 트랜잭션 ID이다. 이는 트랜잭션 ID 순환(wraparound) 문제를 방지하거나 pg_multixact을 축소시키기 위해 데이터베이스를 진공해야하는지 여부를 추적하는 데 사용된다. |
dattablespace | oid | 데이터베이스의 기본 테이블 공간 |
datacl | aclitem [] | 액세스 권한 목록 |
이번에는 pg_database에서 다음 컬럼에 대한 데이터를 조회해보자.
postgres=# select datname, datdba, encoding, datcollate, datctype from pg_database;
datname | datdba | encoding | datcollate | datctype
-----------+--------+----------+------------------+------------------
postgres | 10 | 6 | Korean_Korea.949 | Korean_Korea.949
template1 | 10 | 6 | Korean_Korea.949 | Korean_Korea.949
template0 | 10 | 6 | Korean_Korea.949 | Korean_Korea.949
sample | 10 | 6 | Korean_Korea.949 | Korean_Korea.949
devkuma | 10 | 6 | Korean_Korea.949 | Korean_Korea.949
devkuma2 | 10 | 6 | Korean_Korea.949 | Korean_Korea.949
(6개 행)
postgres=#
생성 된 데이터베이스 목록이 조회해 된 것을 볼수 있다.
여기서 데이터베이스의 소유자를 나타내는 datdba은 역할에 대한 데이터를 관리하는 시스템 카탈로그 pg_authid의 oid 값이 표시되어 있기 때문에 실제 역할 이름을 얻으려면 pg_authid의 rolname를 참조해야 한다. 그리고 문자 셋을 나타내는 encoding은 pg_encoding_to_char 함수를 사용하면 실제 문자 셋 이름을 얻을 수 있다.
예를 들어, 다음과 같이 실행한다.
postgres=# select datname,
postgres-# pg_authid.rolname as dbrollname,
postgres-# pg_encoding_to_char(encoding) as dbencoding,
postgres-# datcollate,
postgres-# datctype
postgres-# from pg_database
postgres-# join pg_authid on pg_authid.oid = pg_database.datdba;
datname | dbrollname | dbencoding | datcollate | datctype
-----------+------------+------------+------------------+------------------
devkuma2 | postgres | UTF8 | Korean_Korea.949 | Korean_Korea.949
devkuma | postgres | UTF8 | Korean_Korea.949 | Korean_Korea.949
sample | postgres | UTF8 | Korean_Korea.949 | Korean_Korea.949
template0 | postgres | UTF8 | Korean_Korea.949 | Korean_Korea.949
template1 | postgres | UTF8 | Korean_Korea.949 | Korean_Korea.949
postgres | postgres | UTF8 | Korean_Korea.949 | Korean_Korea.949
(6개 행)
postgres=#
데이터베이스 소유자 또는 문자 셋을 사용하여 데이터베이스의 목록을 죄회 할 수 있다.
–
생성 된 데이터베이스 목록을 가져 오는 방법에 대해 설명했습니다.
참고
최종 수정 : 2020-11-12