SAMENVATTING: Dit artikel behandelt de ALTER DATABASE, RENAME DATABASE, en DROP DATABASE statements en het gebruik van de CREATE DATABASE WITH TEMPLATE statement om een database te kopiëren.
1. ALTER DATABASE verklaringen
a. De eigenaar van de database wijzigen
b. De Template database instellen
c. Nieuwe verbindingen voor een specifieke database beperken
d. De verbindingslimiet voor een specifieke database beperken
e. Wijzigen van de Standaard Tablespace voor de database
2. RENAME DATABASE statements
3. DROP DATABASE statements
4. Kopiëren van database structuur en data
Deze post kijkt naar enkele van de beschikbare commando’s voor het beheren van PostgreSQL databases vanaf PSQL prompt. We zullen methodes bespreken voor het wijzigen, hernoemen, verwijderen en kopiëren van een database.
Laten we een aantal basis PostgreSQL commando’s herhalen:
1. Database creatie syntaxis:
CREATE DATABASE name user_name ] template ] encoding ] lc_collate ] lc_ctype ] tablespace ] connlimit ] ]
2. Om een lijst van databases in de huidige cluster te krijgen:
a.
b. select * from pg_database ;
- ALTER database statements
- De eigenaar van de database wijzigen
- Syntax
- Voorbeeld
- De template-database instellen
- Syntax
- Voorbeeld
- Beperking van nieuwe verbindingen voor een specifieke database
- Syntax
- Voorbeeld
- Beperking van de verbindingslimiet voor een specifieke database.
- Syntax
- Voorbeeld
- De standaard tablespace voor de database wijzigen
- Syntax
- Voorbeeld
- RENAME database statements
- Syntax
- Voorbeeld
- Databasestatements DROP
- Syntax
- Exemplaar
ALTER database statements
ALTER database statements kunnen worden gebruikt om de bestaande attributen van de doel-database te wijzigen.
De eigenaar van de database wijzigen
Om de eigenaar van de database te wijzigen, moet de verbonden gebruiker de eigenaar van de database zijn en ook een direct of indirect lid van de nieuwe eigenaarrol zijn, en de verbonden gebruiker moet het privilege CREATEDB hebben.
Syntax
ALTER DATABASE <database_name> OWNER TO <new_owner>;
Voorbeeld
ALTER DATABASE test OWNER TO user;
De template-database instellen
Standaard zijn er slechts twee template-databases aanwezig in een cluster-template0 en template1. Andere databases kunnen standaard niet als sjabloon worden gebruikt. Als u een aangepaste databasesjabloon voor uw omgeving wilt maken, kunt u deze optie gebruiken.
Syntax
ALTER DATABASE <database_name> WITH IS_TEMPLATE = true;
Voorbeeld
ALTER DATABASE test WITH IS_TEMPLATE = true;
Beperking van nieuwe verbindingen voor een specifieke database
Deze optie is zeer nuttig voor het onderhoud van de database. U kunt nieuwe verbindingen voor een specifieke database beperken tijdens het database-onderhoudsvenster. Om deze optie in te schakelen, is er geen gebruiker verbonden met de doel database.
Syntax
ALTER DATABASE <database_name> WITH ALLOW_CONNECTIONS = false;
Voorbeeld
ALTER DATABASE test2 WITH ALLOW_CONNECTIONS = false;
Beperking van de verbindingslimiet voor een specifieke database.
Voor de veiligheid en optimale prestaties kunt u het aantal verbindingen beperken dat verbinding kan maken met de doel-database. Standaard is de waarde voor deze parameter onbeperkt, d.w.z. -1 voor elke database.
Syntax
ALTER DATABASE <database_name> WITH CONNECTION LIMIT <max_number_of_connections>;
Voorbeeld
ALTER DATABASE test2 WITH CONNECTION LIMIT 10;
De standaard tablespace voor de database wijzigen
U kunt standaard tablespace-objecten zoals tabellen en indexen fysiek verplaatsen van de standaard tablespace naar een nieuwe aangepaste tablespace. De nieuwe standaard tablespace moet leeg zijn voor deze database, en niemand kan verbonden zijn met de database tijdens deze activiteit.
Note: De eigenaar van de database of een superuser moet deze wijziging doorvoeren, en de gebruiker moet CREATE privileges hebben voor de nieuwe tablespace.
Syntax
ALTER DATABASE <database_name> SET TABLESPACE <custom_tablespace_name>;
Voorbeeld
ALTER DATABASE test SET TABLESPACE custom_tblspc;
RENAME database statements
U kunt de naam van de huidige database wijzigen met RENAME. U kunt de naam van de database echter niet wijzigen terwijl deze door andere verbindingen wordt benaderd.
Opmerking: de eigenaar van de database of de supergebruiker moet deze wijziging doorvoeren, en de gebruiker moet CREATEDB-rechten hebben.
Syntax
ALTER DATABASE <old_database_name> RENAME TO <new_database_name>;
Voorbeeld
ALTER DATABASE test RENAME TO test123;
Databasestatements DROP
U kunt de doeldatabase DROPPEN. Dit verwijdert de catalogusitems voor de database en verwijdert de directory die de gegevens bevat. Het kan alleen worden uitgevoerd door de eigenaar van de database. Het kan ook niet worden uitgevoerd terwijl u of iemand anders met de doel-database is verbonden.
Opmerking: DROP DATABASE kan niet ongedaan worden gemaakt.
Syntax
DROP DATABASE <database_name>;
Exemplaar
DROP DATABASE test2;