SUMMARY: Tento článek se zabývá příkazy ALTER DATABASE, RENAME DATABASE a DROP DATABASE a použitím příkazu CREATE DATABASE WITH TEMPLATE ke kopírování databáze.
1. Příkazy ALTER DATABASE
a. Změna vlastníka databáze
b. Nastavení databáze Template
c. Omezení nových připojení pro určitou databázi
d. Omezení limitu připojení pro určitou databázi
e. Omezení počtu připojení pro určitou databázi. Změna výchozího tabulkového prostoru pro databázi
2. Příkazy RENAME DATABASE
3. Příkazy DROP DATABASE
4. Kopírování struktury a dat databáze
Tento příspěvek se zabývá některými dostupnými příkazy pro správu databází PostgreSQL z příkazu PSQL. Projdeme si metody pro změnu, přejmenování, zrušení a kopírování databáze.
Připomeneme si některé základní příkazy PostgreSQL:
1. Syntaxe vytváření databází:
CREATE DATABASE name user_name ] template ] encoding ] lc_collate ] lc_ctype ] tablespace ] connlimit ] ]
2. Získání seznamu databází v současném clusteru:
a. \l+
b. select * from pg_database ;
- Příkazy ALTER databáze
- Změna vlastníka databáze
- Syntaxe
- Příklad
- Nastavení šablonové databáze
- Syntaxe
- Příklad
- Omezení nových připojení pro konkrétní databázi
- Syntaxe
- Příklad
- Omezení limitu připojení pro konkrétní databázi.
- Syntaxe
- Příklad
- Změna výchozího prostoru tabulek pro databázi
- Syntaxe
- Příklad
- Příkazy databáze RENAME
- Syntaxe
- Příklad
- DROP Příkazy databáze
- Syntaxe
- Příklad
Příkazy ALTER databáze
Příkazy ALTER databáze lze použít ke změně stávajících atributů cílové databáze.
Změna vlastníka databáze
Chcete-li změnit vlastníka databáze, připojený uživatel by měl být vlastníkem databáze a zároveň přímým nebo nepřímým členem nové vlastnické role a připojený uživatel musí mít oprávnění CREATEDB.
Syntaxe
ALTER DATABASE <database_name> OWNER TO <new_owner>;
Příklad
ALTER DATABASE test OWNER TO user;
Nastavení šablonové databáze
Ve výchozím nastavení máme v clusteru přítomny pouze dvě šablonové databáze – šablona0 a šablona1. Ostatní databáze nelze ve výchozím nastavení použít jako šablonu. V případě, že potřebujete vytvořit vlastní šablonu databáze pro své prostředí, můžete použít tuto možnost.
Syntaxe
ALTER DATABASE <database_name> WITH IS_TEMPLATE = true;
Příklad
ALTER DATABASE test WITH IS_TEMPLATE = true;
Omezení nových připojení pro konkrétní databázi
Tato možnost je velmi užitečná pro údržbu databáze. Během okna údržby databáze můžete omezit nová připojení ke konkrétní databázi. Chcete-li tuto možnost povolit, není k cílové databázi připojen žádný uživatel.
Syntaxe
ALTER DATABASE <database_name> WITH ALLOW_CONNECTIONS = false;
Příklad
ALTER DATABASE test2 WITH ALLOW_CONNECTIONS = false;
Omezení limitu připojení pro konkrétní databázi.
Pro zabezpečení a optimální výkon můžete omezit počet připojení, která se mohou připojit k cílové databázi. Ve výchozím nastavení je hodnota tohoto parametru neomezená – tj. -1 pro každou databázi.
Syntaxe
ALTER DATABASE <database_name> WITH CONNECTION LIMIT <max_number_of_connections>;
Příklad
ALTER DATABASE test2 WITH CONNECTION LIMIT 10;
Změna výchozího prostoru tabulek pro databázi
Fyzicky můžete přesunout výchozí objekty prostoru tabulek, jako jsou tabulky a indexy, z výchozího prostoru tabulek do nového vlastního prostoru tabulek. Nový výchozí prostor tabulek musí být pro tuto databázi prázdný a během této činnosti nesmí být k databázi nikdo připojen.
Poznámka: Tuto změnu musí provést vlastník databáze nebo superuživatel a uživatel musí mít práva CREATE pro nový prostor tabulek.
Syntaxe
ALTER DATABASE <database_name> SET TABLESPACE <custom_tablespace_name>;
Příklad
ALTER DATABASE test SET TABLESPACE custom_tblspc;
Příkazy databáze RENAME
Pomocí příkazu RENAME můžete změnit název aktuální databáze. Databázi však nemůžete přejmenovat, pokud k ní přistupují jiná připojení.
Poznámka: Tuto změnu musí provést vlastník databáze nebo superuživatel a uživatel musí mít práva CREATEDB.
Syntaxe
ALTER DATABASE <old_database_name> RENAME TO <new_database_name>;
Příklad
ALTER DATABASE test RENAME TO test123;
DROP Příkazy databáze
Cílovou databázi můžete DROP. Tím odstraníte katalogové záznamy databáze a smažete adresář obsahující data. Může jej provést pouze vlastník databáze. Také jej nelze provést, pokud jste vy nebo kdokoli jiný připojen k cílové databázi.
Poznámka: DROP DATABASE nelze vrátit zpět.
Syntaxe
DROP DATABASE <database_name>;
Příklad
DROP DATABASE test2;
.