일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- PostgreSQL Database 관리
- PostgreSQL 스키마 관리
- db upgrade
- oracle
- PostgreSQL 기동 정지
- 19c tde
- pgcrypto
- Linux
- oracle error
- PostgreSQL Install
- PostgreSQL 테이블스페이스 생성 삭제
- PostgreSQL 외부 접속 방법
- multitenant
- psql 복구
- PostgreSQL Parameter 설정 방법
- 다른계정에서 dblink 삭제방법
- PostgreSQL 아키텍처
- pg_hba.conf
- PostgreSQL Parameter
- 아카이브로그 삭제
- PostgreSQL Admin
- sql문 짤릴 때
- PostgreSQL Backup and Recovery
- pg_basebackup
- dblink 삭제
- sql문 전체 출력 방법
- Database 생성 삭제 조회 변경
- PostgreSQL 테이블스페이스 관리
- table lock 조치 방법
- pg_dumpall
- Today
- Total
인성장
[PostgreSQL] 데이터베이스 관리(생성, 삭제, 조회, 변경 등) 본문
데이터베이스 관리
PostgreSQL DB의 기본 구조에 따라 PostgreSQL는 하나의 클러스터에서 여러 개의 데이터베이스를 가질 수 있습니다.
https://checktech.tistory.com/6
[PostgreSQL] Database 구조 (1)
PostgreSQL Database 구조 PostgreSQL DB의 기본 구조는 여러 데이터베이스들과 User/Groups, 테이블스페이스들이 모여 클러스터를 구성하는 구조입니다. 클러스터는 사용되어지는 환경에 따라 여러 의미로
checktech.tistory.com
따라서, 시스템 데이터베이스(template0, template1)를 제외한 기본으로 생성되는 데이터베이스인 postgres 이 외 데이터베이스를 생성할 수 있습니다. 기본적인 데이터베이스 생성 및 삭제, 조회, 소유자 변경 방법에 대해 알려드리겠습니다.
Database 생성 1 (기본)
CREATE DATABASE [database_name] OWNER [username];
CREATE DATABASE pgtest OWNER postgres;
위와 같이 별다른 옵션을 사용하지 않고 생성했을 때, template1 데이터베이스를 복사하여 생성되는 방식입니다. 그래서 template1의 문자셋(ENCODING)이나 Collation(LC_COLLATE, LC_CTYPE) 값이 따라오게 되지요. 만약 데이터베이스를 생성할 때 문자셋과 문자정렬방식을 변경하고 싶다면, 아래와 같이 문자셋을 변경하여 데이터베이스를 생성하시면 됩니다.
Database 생성 2 (문자셋 변경)
CREATE DATABASE pgtest WITH OWNER postgres ENCODING 'EUC_KR' LC_COLLATE='ko_KR.euckr’ LC_CTYPE='ko_KR.euckr' TEMPLATE=template0;
Database 생성 3 (Default 테이블스페이스 지정)
CREATE DATABASE pgtest WITH OWNER postgres TABLESPACE pgdata;
Database 삭제
DROP DATABASE pgtest;
데이터베이스 삭제 시 아래와 같은 에러가 발생하는 경우가 있습니다. 이런 경우는 삭제 대상 데이터베이스를 사용중인 세션이 있기 때문에 나오는 오류로 연결되어있는 세션이 다 종료되어야지만 삭제가 가능합니다.
postgres=# DROP DATABASE pgtest;
ERROR: database “pgtest” is being accessed by other users
DETAIL: There is 1 other session using the database.
WITH (FORCE) 옵션을 추가하면 강제로 대상 데이터베이스에 연결되어 있는 세션을 끊고 삭제할 수 있습니다.
DROP DATABASE pgtest WITH (FORCE);
또는 아래와 같이 활성연결을 끊는 SQL문을 수행 후 삭제를 진행하여도 됩니다.
-- 아래 SQL문 수행 후 데이터베이스 삭제 시 활성연결이 남아있는 경우 재수행 후 삭제
postgres=# SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'pgtest';
pg_terminate_backend
----------------------
t
t
t
(3 rows)
postgres=# drop database postgres;
DROP DATABASE
Database 목록 조회
ALTER DATABASE [database_name] OWNER TO [user_name];
\l
또는
SELECT * FROM pg_database;
Database Owner 변경
ALTER DATABASE [database_name] OWNER TO [username];
ALTER DATABASE pgdata OWNER TO testuser;
Database Name 변경
ALTER DATABASE [current_database_name] RENAME TO [new_database_name];
ALTER DATABASE pgtest RENAME TO pgtest2;
* 단, 사용중인 Database는 이름 변경 불가
psql 내, 다른 Database 접속
\c [database_name] [user_name]
postgres=# \c pgdata postgres
데이터베이스 별 OID 값 조회
SELECT oid, datname FROM pg_database;
데이터베이스 별 사용량 조회
SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database;
현재 접속한 데이터베이스명 확인
SELECT CURRENT_DATABASE();
'PostgreSQL > Admin' 카테고리의 다른 글
[PostgreSQL] 주요 파라미터 역할 및 산정방법 (1) | 2024.02.02 |
---|---|
[PostgreSQL] Parameter 설정 방법 (0) | 2024.02.02 |
[PostgreSQL] pg_hba.conf (1) | 2023.11.30 |
[PostgreSQL] 원격 접속 허용 방법 (외부 접근 제어, 접속 인증 설정) (0) | 2023.11.30 |
[PostgreSQL] 기동 정지 방법 (2) | 2023.11.30 |