반응형

/********************************************************************************************
-- Title : [9.2] 데이터베이스 관리 - ver.dBRang
-- Reference : www.postgresql.org/docs/current/static/managing-databases.html
-- Key word : create database template0 template1 postgres alter database drop database
********************************************************************************************/

-- 데이터베이스 확인
    =# select d.oid "db_id", d.datname "db_nm", d.datacl "privilege"
 
            , d.datdba "ownr_id", pg_get_userbyid(d.datdba) "ownr_nm"
 
            , pg_size_pretty(pg_database_size(d.datname)) "db_sz"
 
            , dattablespace "tbs_id"
 
            , t.spcname "dflt_tbs_nm"
 
       from pg_database d
 
       inner join pg_tablespace t
 
       on d.dattablespace = t.oid;


-- 설치시 initdb로 인한 데이터베이스 생성
 
   ㅇ postgres  : initdb에 최초 저장 내역(시스템 Catalog?) 저장
 
   ㅇ template1 : create database시 복사하는 template, SQL Server의 MODEL DB와 유사.
 
   ㅇ template0 : template1의 복사본, template1을 변경시켰을 때 원본 필요시 사용.
                          template1에 문제 발생시 template0으로 초기화. 



--  DB 생성 Synopsis

=# CREATE DATABASE name
 
    [ [ WITH ] [ OWNER [=] user_name ]
 
           [ TEMPLATE [=] template ]
 
           [ ENCODING [=] encoding ]
 
           [ LC_COLLATE [=] lc_collate ]
 
           [ LC_CTYPE [=] lc_ctype ]
 
           [ TABLESPACE [=] tablespace_name ]
 
           [ CONNECTION LIMIT [=] connlimit ] ] 

※ 참조 : 
www.postgresql.org/docs/current/static/sql-createdatabase.html

=# ALTER DATABASE name [ [ WITH ] option [ ... ] ]
    where option can be:
    CONNECTION LIMIT connlimit;

ALTER DATABASE name RENAME TO new_name;
ALTER DATABASE name OWNER TO new_owner;
ALTER DATABASE name SET TABLESPACE new_tablespace;

ALTER DATABASE name SET configuration_parameter { TO | = } { value | DEFAULT };
ALTER DATABASE name SET configuration_parameter FROM CURRENT;
ALTER DATABASE name RESET configuration_parameter;
ALTER DATABASE name RESET ALL;
※ 참조 : www.postgresql.org/docs/current/static/sql-alterdatabase.html 

=# DROP DATABASE [ IF EXISTS ] name; 

    ㅇ DB 생성
        =# create database mydb
                owner = mapbak
                tablespace = pg_default;

    ㅇ pgAdmin III Script
        CREATE DATABASE postgres
            WITH OWNER = postgres
                    ENCODING = 'UTF8'
                    TABLESPACE = pg_default
                    LC_COLLATE = 'ko_KR.UTF-8'
                    LC_CTYPE = 'ko_KR.UTF-8'
                    CONNECTION LIMIT = -1;

        GRANT CONNECT, TEMPORARY ON DATABASE postgres TO public;
        GRANT ALL ON DATABASE postgres TO postgres;
        GRANT CONNECT ON DATABASE postgres TO usr_ttt;


-- 데이터베이스 수정
    ㅇ DB 수정 Synopsis

=# ALTER DATABASE name [ [ WITH ] option [ ... ] ]

where option can be:
    CONNECTION LIMIT connlimit;

ALTER DATABASE name RENAME TO new_name;
ALTER DATABASE name OWNER TO new_owner;
ALTER DATABASE name SET TABLESPACE new_tablespace;

ALTER DATABASE name SET configuration_parameter { TO | = } { value | DEFAULT };
ALTER DATABASE name SET configuration_parameter FROM CURRENT;
ALTER DATABASE name RESET configuration_parameter;
ALTER DATABASE name RESET ALL;

※ 참조 : www.postgresql.org/docs/current/static/sql-alterdatabase.html 
    ㅇ 이름 변경
        =# alter database mydb rename to mydb2;

    ㅇ 소유자 변경
        =# alter database mapbak owner to mapbak2;

    ㅇ Configuration 변경
        =# alter database mydb2 set enable_indexscan to off; 

    ㅇ 테이블스페이스 변경
        =# alter database mydb2 set tablespace tbs_mydb;
  
    ㅇ 디폴트 테이블스페이스 변경
        =# alter database mydb2 set default_tablespace = 'tbs_mydb';


-- 데이터베이스 삭제
    ㅇ DB 삭제 Synopsis
=# DROP DATABASE [ IF EXISTS ] name; 

    ㅇ DB 삭제
    =# drop database mydb2; 


-- CREATE DATABASE 구문의 tablespace와  ALTER DATABASE 구문의 default_tablespace 차이 
    ㅇ create~tablespace는 DB생성시 필요한 시스템 카탈로그를 저장하는 위치.
    ㅇ alter~default_tablespace는 사용자 object  저장하는 default 위치.
    ㅇ 라고 파악되지만 몰렁..ㅡ.ㅜ 

-- mydb 초기 생성

# mkdir -p /home/backup

# mkdir -p /home/database/ARCHIVE

# mkdir -p /home/database/tbs_data0


# chown -R postgres.postgres /home/database


=# create role mapbak login password '{pwd}' superuser;


=# create tablespace tbs_data0

       owner mapbak

       location '/home/database/tbs_data0';


=# create database mydb

       owner = mapbak

       tablespace = tbs_data0;

 
반응형

+ Recent posts