본문 바로가기
공부/PostgreSQL

[07] PostgreSQL – ALTER 데이터베이스

by 혼밥맨 2023. 4. 11.
반응형

[07] PostgreSQL – ALTER 데이터베이스

 

일단 생성된 데이터베이스의 기능은 ALTER DATABASE 문을 사용하여 변경할 수 있습니다.

1
ALTER DATABASE target_database action;
cs

위의 구문에서 설명하는 것처럼 수정이 수행될 데이터베이스는 ALTER DATABASE 문 다음에 데이터베이스에서 수행될 작업이 뒤에 언급됩니다.

다음은 PostgreSQL에서 허용하는 작업 목록입니다.

 

데이터베이스 이름 바꾸기:

1
ALTER DATABASE target_database RENAME TO new_database;
cs

데이터베이스 소유자 변경:

ALTER DATABASE OWNER TO 문은 다음과 같이 데이터베이스 소유자를 변경하는 데 사용됩니다.

1
ALTER DATABASE target_database OWNER TO new_owner;
cs

수퍼유저 또는 데이터베이스 소유자만 이 작업을 수행할 수 있다는 점에 유의해야 합니다.

 

데이터베이스의 테이블스페이스를 변경:

ALTER DATABASE SET TABLESPACE 문은 다음과 같이 데이터베이스의 기본 테이블스페이스를 변경하는 데 사용됩니다.

1
ALTER DATABASE target_database SET TABLESPACE new_tablespace;
cs

이 명령문은 레거시 테이블스페이스에서 새 테이블스페이스로 테이블과 인덱스를 이동합니다.

 

런타임 구성 변수에 대한 세션 기본값 변경:

기본적으로 PostgreSQL은 postgresql.conf 파일에서 구성 변수를 로드합니다. 이 파일에는 데이터베이스 역할 및 각각의 인증 해싱 유형에 대한 정보가 포함되어 있습니다. 이러한 설정 또는 정보는 아래와 같이 ALTER DATABASE SET 문을 사용하여 편집할 수 있습니다.

1
ALTER DATABASE target_database SET config_data = value;
cs

수퍼유저 또는 데이터베이스 소유자만이 데이터베이스의 기본 세션 변수를 변경할 수 있다는 점에 유의해야 합니다.
이제 ALTER DATABASE 문을 구현한 예를 살펴보자.

 

예시:
Postgres 사용자로 로그인하고 아래 명령을 사용하여 샘플 데이터베이스(예: my_test_db)를 생성해 보겠습니다.

1
CREATE DATABASE my_test_db; 
cs

이제 아래 명령을 사용하여 데이터베이스 이름을 "my_test_db"에서 "my_renamed_db"로 바꿉니다.

1
ALTER DATABASE my_test_db RENAME TO my_renamed_db;
cs

이제 "geeks" 역할이 이미 존재한다고 가정하고 다음 명령문을 실행하여 "my_renamed_db" 데이터베이스의 소유자를 "postgres"에서 "geeks"로 변경합니다.

1
ALTER DATABASE my_renamed_db OWNER TO geeks;
cs

"geeks" 역할이 없으면 다음 문을 사용하여 만듭니다.

1
2
CREATE ROLE geeks
 VALID UNTIL 'infinity';
cs

이제 geeks_defaulttablespace가 이미 존재한다는 가정하에 my_renamed_db의 기본 테이블스페이스를 pg_default에서 geeks_default로 변경합니다.

1
2
ALTER DATABASE my_renamed_db
SET TABLESPACE geeks_default;
cs

geeks_defaulttablespace가 없으면 다음 명령문을 사용하여 생성할 수 있습니다.

1
2
3
CREATE TABLESPACE geeks_default
 OWNER geeks
 LOCATION E'C:\\pgdata\\geeks';
cs

이제 아래 명령을 사용하여 escape_string_warning 구성 변수를 off로 설정합니다.

1
ALTER DATABASE my_renamed_db SET escape_string_warning TO off; 
cs

반응형

댓글