sql >> Database >  >> RDS >> Mysql

Hoe MySQL te beveiligen:deel twee

In het vorige bericht over MySQL-beveiliging hebben we een reeks opties besproken die kunnen worden gebruikt om uw MySQL-instantie(s) veiliger te maken. Ze omvatten:

  • Algemene MySQL-beveiligingsmaatregelen;
  • Toegang beheren in MySQL;
  • Gebruikers aanmaken, wijzigen en verwijderen in MySQL;
  • Toekennen en intrekken van rechten aan en van gebruikers in MySQL;
  • Controleren welke rechten zijn toegewezen aan gebruikers in MySQL.

In dit bericht zullen we ingaan op de rest van de opties, waaronder:

  • Accountcategorieën in MySQL;
  • Rollen in MySQL;
  • Gereserveerde accounts in MySQL;
  • Wachtwoordbeheer in MySQL;
  • Accountvergrendeling in MySQL;
  • Beveiligingsplug-ins aangeboden door MySQL;
  • MySQL-back-ups beveiligen.

Houd er rekening mee dat we nogmaals niet alles behandelen wat u moet weten, maar we zullen proberen goede uitgangspunten te bieden om uw eigen onderzoek te doen.

Accountcategorieën in MySQL

Accountcategorieën zijn geïntroduceerd in MySQL 8, met name in MySQL 8.0.16. Hier is de crux:

  • Er zijn twee afzonderlijke accountcategorieën:gewone gebruikers en systeemgebruikers;
  • Een gewone gebruiker is een gebruiker zonder het privilege SYSTEM_USER - een systeemgebruiker is een gebruiker met het privilege SYSTEM_USER;
  • Een gewone gebruiker kan gewone accounts wijzigen - zo'n gebruiker kan geen systeemaccounts wijzigen;
  • Een systeemgebruiker kan zowel systeem- als reguliere accounts wijzigen;
  • Gewone accounts kunnen worden gewijzigd door zowel gewone gebruikers als systeemgebruikers;
  • Systeemaccounts kunnen alleen worden gewijzigd door systeemgebruikers.

Om gebruik te maken van accountcategorieën in MySQL op het gebied van beveiliging, moet u er rekening mee houden dat het privilege SYSTEM_USER invloed heeft op zaken als accountmanipulatie en het beëindigen van sessies en verklaringen daarin - dit concept in MySQL maakt het mogelijk om bepaalde wijzigingen aan bepaalde accounts waardoor MySQL veiliger wordt. Accountcategorieën kunnen ook worden gebruikt om systeemaccounts te beschermen tegen manipulatie door reguliere accounts:verleen hiervoor geen mysql-schemawijzigingsrechten aan reguliere accounts.

Om een ​​account SYSTEM_USER privileges te verlenen, gebruikt u de volgende zoekopdracht op een aangemaakt account:

GRANT SYSTEM_USER ON *.* TO system_user;

Rollen in MySQL

In MySQL zijn rollen verzamelingen van privileges. Wanneer u een gebruikersaccount een rol toekent in MySQL, verleent u alle rechten die aan die rol zijn gekoppeld. Rollen kunnen worden aangemaakt met het CREATE ROLE statement:

CREATE ROLE ‘role_1’, ‘role_2’;

Rolnamen bestaan ​​uit een gebruikersgedeelte en een hostgedeelte - het gebruikersgedeelte mag niet leeg zijn en het hostgedeelte wordt standaard ingesteld op "%" als het niet is opgegeven.

Wanneer rollen zijn gemaakt, moet u er rechten aan toewijzen. Bevoegdheden kunnen worden toegewezen met behulp van de GRANT-instructie:

  • VERLENEN ALLES OP demo_database.* AAN 'demo_user'; zou alle rechten toekennen aan een gebruiker genaamd demo_user op een database genaamd demo_database;
  • SUBSIDIE INSERT, SELECT, UPDATE, DELETE ON database.* TO 'demo_user'; zou INSERT-, SELECT-, UPDATE- en DELETE-rechten toekennen aan een gebruiker met de naam demo_user op een database met de naam demo_database;
  • VERLENEN KIEZEN OP demo_database.* NAAR 'demo_user'; zou SELECT-privileges verlenen aan een gebruiker genaamd demo_user op een database genaamd demo_database.

Gebruik deze syntaxis om een ​​rol toe te wijzen aan een individuele gebruiker:
 

GRANT ‘role_name’ TO ‘user_name’@’localhost’;

Gebruik deze syntaxis om meerdere rollen toe te wijzen aan een individuele gebruiker:

GRANT ‘role_1’, ‘role_2’ TO ‘user_name’@’localhost’;

Gebruik deze syntaxis om rollen aan meerdere gebruikers tegelijk toe te wijzen:

GRANT ‘role_name’ TO ‘user1’@’localhost’, ‘user2’@’localhost’;

Rollen kunnen nuttig zijn bij het voorkomen van beveiligingsincidenten, want als een aanvaller het wachtwoord kent van een niet erg bevoorrechte gebruiker, ten onrechte ervan uitgaande dat de gebruiker erg "krachtig" is, kan uw toepassing (en uw database) zeer goed worden gered.

Gereserveerde accounts in MySQL

Als het om gereserveerde accounts gaat, houd er dan rekening mee dat MySQL accounts aanmaakt tijdens de initialisatie van de gegevensmap. Er zijn een paar accounts die in MySQL als gereserveerd moeten worden beschouwd:

  • 'root'@'localhost' - dit account is een superuser-account en het heeft goddelijke privileges voor alle MySQL-databases (het kan elke bewerking in elke MySQL-database uitvoeren). Het is vermeldenswaard dat de rootgebruiker ook kan worden hernoemd om te voorkomen dat een zeer geprivilegieerd account wordt onthuld. Voer de volgende query uit om de naam van het account te wijzigen:
RENAME USER ‘root’@’localhost’ TO ‘username’@’localhost’;
  • Zorg ervoor dat u een FLUSH PRIVILEGES verstrekt; verklaring na het hernoemen van de account om de wijzigingen door te voeren.
  • ‘mysql.sys’@’localhost’ - dit account is een systeemgebruiker die wordt gebruikt als de definitie voor weergave, procedures en functies in het sys-schema. Toegevoegd in MySQL 5.7.9 om problemen te voorkomen die kunnen optreden als de root-account wordt hernoemd.
  • ‘mysql.session’@’localhost’ - dit account wordt intern gebruikt door plug-ins om toegang te krijgen tot de server.

In dit geval kun je qua beveiliging niet veel doen, maar houd er rekening mee dat het root-account goddelijke privileges heeft, wat betekent dat het elke bewerking in elke MySQL-database kan uitvoeren en wees voorzichtig bij de beslissing aan wie de toegangsrechten voor het account worden verleend. Houd er ook rekening mee waar de andere MySQL-accounts voor worden gebruikt.

Wachtwoordbeheer in MySQL

MySQL ondersteunt ook functies voor wachtwoordbeheer. Sommigen van hen omvatten:

  • De mogelijkheid om wachtwoorden periodiek te laten verlopen;
  • De mogelijkheid om hergebruik van wachtwoorden te voorkomen;
  • De mogelijkheid om wachtwoorden te genereren;
  • De mogelijkheid om te controleren of het gebruikte wachtwoord sterk is;
  • De mogelijkheid om gebruikers tijdelijk buiten te sluiten na te veel mislukte inlogpogingen.

Nu gaan we deze opties verder onderzoeken.

Als u een wachtwoord handmatig wilt laten verlopen, gebruikt u de instructie ALTER USER als volgt:

ALTER USER ‘user’@’localhost’ PASSWORD EXPIRE;

Als u een algemeen beleid wilt instellen, moet u het bestand my.cnf zodanig wijzigen dat het de parameter default_password_lifetime bevat. De parameter kan worden gedefinieerd onder de sectie [mysqld] (in het volgende voorbeeld wordt de levensduur van het wachtwoord ingesteld op 3 maanden (90 dagen)):

default_password_lifetime=90

Als u wilt dat de wachtwoorden nooit verlopen, stelt u de parameter default_password_litetime in op 0.
U kunt ook de vervaldatum van wachtwoorden instellen voor specifieke gebruikers. Als u het interval voor het verlopen van het wachtwoord wilt instellen voor een gebruiker met de naam demo_user, kunt u het volgende voorbeeld gebruiken:

ALTER USER ‘demo_user’@’localhost’ PASSWORD EXPIRE INTERVAL 90 DAY;

Het verlopen van het wachtwoord uitschakelen:

ALTER USER ‘demo_user’@’localhost’ PASSWORD EXPIRE NEVER;

Het algemene beleid voor het verlopen van wachtwoorden opnieuw instellen:

ALTER USER ‘demo_user’@’localhost’ PASSWORD EXPIRE DEFAULT;

​​Restricties voor hergebruik van wachtwoorden staan ​​niet toe dat wachtwoorden opnieuw worden gebruikt. Gebruik de variabelen password_history en password_reuse_interval om gebruik te maken van deze functie. U kunt deze variabelen in my.cnf plaatsen door naar het onderstaande voorbeeld te kijken of ze tijdens runtime instellen door SET PERSIST toe te voegen vóór de onderstaande instructies.

Om hergebruik van een van de 5 eerder gebruikte wachtwoorden die nieuwer zijn dan 365 dagen te verbieden, gebruikt u:

password_history=5
password_reuse_interval=365

Minimaal 5 wachtwoordwijzigingen vereisen voordat hergebruik wordt toegestaan:

ALTER USER ‘demo_user’@’localhost’ PASSWORD HISTORY 5;

Hetzelfde kan worden gedaan bij het maken van een gebruiker - vervang ALTER USER door CREATE USER.

Als u een willekeurig wachtwoord wilt genereren bij het maken van een gebruiker, voert u het volgende uit:

CREATE USER [email protected] IDENTIFIED BY RANDOM PASSWORD;

Het wachtwoord van een gebruiker wijzigen in een willekeurig gegenereerd wachtwoord:

SET PASSWORD FOR [email protected] TO RANDOM;

Uw willekeurig wachtwoord wordt hieronder weergegeven.

Houd er rekening mee dat de standaard willekeurige wachtwoorden een lengte hebben van 20 tekens. De lengte kan worden bepaald door de variabele generated_random_password_length die een bereik heeft van 5 tot 255.

Om te controleren of een gebruikt wachtwoord sterk is, kun je de VALIDATE_PASSWORD_STRENGTH variabele gebruiken - de functie geeft een getal weer van 0 tot 100 waarbij 0 het zwakste is en 100 het sterkste:

br />SELECT VALIDATE_PASSWORD_STRENGTH('wachtwoord');

Accountvergrendeling in MySQL

MySQL 8.0.19 introduceerde ook de mogelijkheid om gebruikersaccounts tijdelijk te vergrendelen. Dit kan worden bereikt met behulp van de variabelen FAILED_LOGIN_ATTEMPTS en PASSWORD_LOCK_TIME.

Als u accountvergrendeling wilt inschakelen bij het maken van een gebruiker, voert u het volgende uit:

CREATE USER ‘demo_user’@’localhost’ IDENTIFIED BY ‘password’ FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 5;

De waarde na FAILED_LOGIN_ATTEMPTS geeft aan na hoeveel mislukte pogingen het account wordt vergrendeld, de waarde na PASSWORD_LOCK_TIME geeft de vergrendelingstijd van het account in dagen aan. Het is ook mogelijk om een ​​waarde op te geven die niet eindigt totdat het account is ontgrendeld door PASSWORD_LOCK_TIME op te geven als ONBONDEN.

Beveiligingsplug-ins aangeboden door MySQL

MySQL biedt ook een aantal plug-ins die de beveiligingsmogelijkheden verder kunnen verbeteren. MySQL biedt:

  • Verificatieplug-ins;
  • Verbindingsbeheer plug-ins;
  • Invoegtoepassingen voor wachtwoordvalidatie;
  • Audit-plug-ins;
  • Firewall-plug-ins;

Deze plug-ins kunnen qua beveiliging voor een aantal zaken worden gebruikt:

Verificatieplug-ins

Verificatieplug-ins kunnen gebruikers in staat stellen te kiezen tussen meerdere pluggable authenticatiemethoden die beschikbaar zijn in MySQL. Ze kunnen samen met CREATE USER- of ALTER USER-instructies worden gebruikt. Hier is een voorbeeld: 

CREATE USER ‘user_1’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;

Deze query zou authenticatie implementeren met behulp van de systeemeigen methode voor het hashen van wachtwoorden.

Connection-Control Plugins

Verbindingsbeheer-plug-ins kunnen een toenemende vertraging veroorzaken in de serverreacties op verbindingspogingen als de verbindingspogingen een bepaald aantal overschrijden - ze kunnen potentiële brute-force-aanvallen stoppen. Deze plug-inbibliotheek is geïntroduceerd in MySQL in versie 5.7.17 en kan aan MySQL worden toegevoegd via my.cnf of door de plug-ins tijdens runtime in de server te laden.
Om de plug-ins toe te voegen aan my.cnf , voeg de volgende regel toe onder [mysqld]:

plugin-load-add=connection_control.so

Na het wijzigen van het bestand, slaat u uw wijzigingen op en start u MySQL opnieuw.
Als u de plug-ins tijdens runtime op de server wilt laden, voert u het volgende uit:

INSTALL PLUGIN CONNECTION_CONTROL SONAME ‘connection_control.so’;
INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME ‘connection_control.so’;

Pas zo nodig het .so-achtervoegsel aan. Als je alles goed hebt gedaan, moet de tabel CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS alle mislukte pogingen om verbinding te maken bevatten.

Plug-ins voor wachtwoordvalidatie

Invoegtoepassingen voor wachtwoordvalidatie kunnen gebruikers in staat stellen sterkere wachtwoorden te gebruiken als ze op de juiste manier worden gebruikt. De plug-in voor wachtwoordvalidatie kan worden geïnstalleerd via my.cnf of door de plug-in tijdens runtime op de server te laden. Om de plug-in via my.cnf te installeren, voegt u de volgende regel toe onder [mysqld] en start u de server opnieuw op:

plugin-load-add=validate_password.so

Voer de volgende instructie uit om de plug-in tijdens runtime te laden:

INSTALL PLUGIN validate_password SONAME ‘validate_password.so’;

Om de plug-in tijdens runtime te laden en te voorkomen dat deze wordt verwijderd, voegt u valideren-password=FORCE_PLUS_PERMANENT toe aan my.cnf.

Om te voorkomen dat de server wordt uitgevoerd als de plug-in niet is geïnitialiseerd, gebruikt u de optie --validate-password met de waarde FORCE of FORCE_PLUS_PERMANENT.

Het beleid voor wachtwoordsterkte kan ook worden gewijzigd:om dit te doen, wijzigt u de waarde Valid_password_policy in LAAG, MEDIUM of STRONG. De waarde van LOW controleert alleen de wachtwoordlengte, MEDIUM-beleid voegt enkele voorwaarden toe en STRONG-beleid voegt de voorwaarde toe dat wachtwoordsubstrings die uit 4 of meer tekens bestaan, niet overeenkomen met woorden in een woordenboekbestand dat kan worden opgegeven door de variabele valid_password_dictionary_file te wijzigen.

Sleutelhanger-plug-ins

Keyring-plug-ins kunnen servercomponenten en plug-ins in staat stellen om gevoelige informatie veilig op te slaan voor ophalen. Om de plug-in in MySQL te laden, voegt u het volgende toe onder [mysqld]:

early-plugin-load=keyring_file.so

Als u het sleutelringkluisbestand wilt specificeren, voegt u het volgende toe (de variabele keyring_vault_config moet naar het configuratiebestand verwijzen):

loose-keyring_vault_config=”/var/lib/mysql_keyring/keyring_vault.conf”

Het sleutelringbestand moet de variabele kluis_url bevatten die het adres van de kluisserver definieert, de variabele secret_mount_point die de naam van het aankoppelpunt definieert waar de sleutelringkluis de sleutels opslaat, en een token dat worden gedefinieerd door de kluisserver. Optioneel kan de variabele kluis_ca ook worden gedefinieerd (deze moet verwijzen naar het CA-certificaat dat wordt gebruikt om de certificaten van de kluis te ondertekenen).

Start de server opnieuw op om de wijzigingen door te voeren;

Audit-plug-ins

Audit-plug-ins kunnen monitoring, logboekregistratie en blokkering van activiteiten op MySQL-servers inschakelen. Om MySQL Enterprise Audit te installeren, voert u een script uit dat zich in de gedeelde map van uw MySQL-instantie bevindt (vermijd het invoeren van uw MySQL-instantiewachtwoord in de terminal - gebruik my.cnf):

mysql < /path/to/audit_log_filter_linux_install.sql

U kunt ook voorkomen dat de plug-in tijdens runtime wordt verwijderd - voeg het volgende toe in de sectie [mysqld]:

audit_log=FORCE_PLUS_PERMANENT

Start de server opnieuw op om de wijzigingen toe te passen. Houd er rekening mee dat de op regels gebaseerde logboekregistratie standaard geen controleerbare gebeurtenissen registreert, dus om alles te laten registreren, maakt u een filter:

SELECT audit_log_filter_set_filter(‘log_filter’, ‘{ “filter”: { “log”: true } }’);

Wijs het vervolgens toe aan een account:

SELECT audit_log_filter_set_user(‘%’, ‘log_filter’);

Houd er rekening mee dat audit-plug-ins alleen beschikbaar zijn in MySQL Enterprise Edition;

Firewall-plug-ins

Firewall-plug-ins kunnen gebruikers in staat stellen de uitvoering van specifieke SQL-instructies toe te staan ​​of te weigeren op basis van specifieke patronen. MySQL Enterprise Firewall is geïntroduceerd in MySQL 5.6.24 - het is in staat om gegevens te beschermen door ongeautoriseerde activiteiten te bewaken, te waarschuwen en te blokkeren:het kan SQL-injectie-aanvallen blokkeren, bedreigingen bewaken en verdacht verkeer blokkeren, evenals inbraken in de databank. De firewall kan ook geblokkeerde verklaringen registreren - ze kunnen worden geïnspecteerd en een realtime telling van goedgekeurde en afgewezen verklaringen kan ook worden waargenomen.

Om MySQL Enterprise Firewall te installeren, hoeft u het alleen maar in te schakelen bij het installeren van MySQL Server op Windows, het kan ook worden geïnstalleerd, uitgeschakeld of verwijderd met behulp van MySQL Workbench 6.3.4. De firewall kan ook handmatig worden geïnstalleerd door een script uit te voeren in de gedeelde map van uw MySQL-installatie. Om de firewall in te schakelen, voegt u de volgende regel toe onder [mysqld] en start u de server opnieuw op:

mysql_firewall_mode=ON

De firewall kan ook tijdens runtime worden ingeschakeld:

SET GLOBAL mysql_firewall_mode = ON;

Als alternatief, om de firewall te behouden (wat betekent dat de firewall niet opnieuw hoeft te worden ingeschakeld bij elke volgende herstart van de server):

SET PERSIST mysql_firewall_mode = ON;

Verleen vervolgens een FIREWALL_ADMIN-recht aan elk account dat de firewall beheert en het FIREWALL_USER-recht aan elk account dat alleen toegang zou moeten hebben tot zijn eigen firewallregels. Verleen ook het EXECUTE-recht voor de opgeslagen procedures van de firewall in de mysql-database. Om de firewall te laten functioneren, registreert u er profielen mee, traint u de firewall om de toegestane instructies te kennen die de database kan uitvoeren en vertelt u daarna de firewall om binnenkomende instructies te vergelijken met de ingestelde witte lijst. Elk profiel heeft een operationele modus - UIT, OPNAME, BESCHERMING of DETECTIE. UIT schakelt het profiel uit, RECORDING traint de firewall, PROTECTING staat de uitvoering van instructies toe of weigert en DETECTING detecteert (maar blokkeert niet) inbraakpogingen. Regels voor een opgegeven profiel kunnen worden gereset door de waarde ervan in te stellen op RESET. UIT schakelt het profiel uit. Gebruik de volgende zoekopdracht om de modus in te stellen, waarbij naam de profielnaam is en UIT de operationele modus: 

CALL mysql.sp_set_firewall_mode(name, ‘OFF’);

De firewall-plug-in is ook alleen beschikbaar in MySQL Enterprise Edition.

MySQL-back-ups beveiligen

Wat MySQL-back-ups betreft, heb je een aantal opties.

  • Als je mysqldump gebruikt, kun je je gebruikersnaam en wachtwoord opslaan in my.cnf en mysqldump als volgt aanroepen (met het volgende commando worden alle databases in een bestand /home/backup.sql gedumpt):
$ mysqldump --defaults-extra-file=/var/lib/my.cnf --single-transaction --all-databases > /home/backup.sql
  • ​Door uw gebruikersnaam en wachtwoord in my.cnf op te slaan, schrijft u uw wachtwoord niet in de terminal - een dergelijke methode voor het maken van back-ups is veiliger omdat terwijl de dump wordt uitgevoerd, de opdracht kan worden bekeken via de ps axe commando.
  • U kunt ook overwegen mysqldump-secure te gebruiken, een POSIX-compatibel wrapper-script dat back-ups kan comprimeren en versleutelen met sterke beveiliging in gedachten .

  • Back-ups kunnen worden versleuteld met OpenSSL - neem gewoon uw back-up en versleutel deze met het volgende commando:

    $ openssl enc -aes-256-cbc -salt -in backup.tar.gz -out backup.tar.gz.enc -k password

    De bovenstaande opdracht maakt een nieuw versleuteld bestand backup.tar.gz.enc aan in de huidige map. Het bestand wordt versleuteld met het door u gekozen wachtwoord (vervang wachtwoord door uw gewenste wachtwoord). Het bestand kan later worden gedecodeerd door het volgende commando uit te voeren:

    $ openssl aes-256-cbc -d -in backup.tar.gz.enc -out backup.tar.gz -k password

    Vervang wachtwoord door uw wachtwoord.

  • mysqldump heeft een andere optie om uw back-ups te versleutelen (in het volgende voorbeeld worden ze ook gecomprimeerd met gzip):

    $ mysqldump --all-databases --single-transaction --triggers --routines | gzip | openssl  enc -aes-256-cbc -k password > backup.xb.enc

    Vervang het wachtwoord door het gewenste wachtwoord.

  • Je kunt je back-ups ook versleutelen met mariabackup of xtrabackup. Hier is een voorbeeld uit de MariaDB-documentatie:

    $ mariabackup --user=root --backup --stream=xbstream  | openssl  enc -aes-256-cbc -k password > backup.xb.enc

    Vervang het wachtwoord door het gewenste wachtwoord.

  • Back-ups kunnen ook worden versleuteld met ClusterControl - als de versleutelingsoptie is ingeschakeld voor een bepaalde back-up, versleutelt ClusterControl de back-up met AES-256 CBC (codering gebeurt op het back-upknooppunt). Als de back-up is opgeslagen op een controllerknooppunt, worden de back-upbestanden gestreamd in een versleuteld formaat met behulp van socat of netcat. Als compressie is ingeschakeld, comprimeert ClusterControl eerst de back-up en versleutelt deze daarna. De coderingssleutel wordt automatisch gegenereerd als deze niet bestaat, en vervolgens opgeslagen in de CMON-configuratie in de optie backup_encryption_key. Houd er rekening mee dat deze sleutel gecodeerd is en eerst moet worden gedecodeerd. Voer hiervoor de volgende opdracht uit:

    $ cat /etc/cmon.d/cmon_ClusterID.cnf | grep ^backup_encryption_key | cut -d"'" -f2 | base64 -d > keyfile.key

    De opdracht leest de backup_encryption_key en decodeert zijn waarde naar een binaire uitvoer. Het sleutelbestand kan worden gebruikt om de back-up als volgt te decoderen:

    $ cat backup.aes256 | openssl enc -d -aes-256-cbc -pass file:/path/to/keyfile.key > backup_file.xbstream.gz

    Raadpleeg de ClusterControl-documentatie voor meer voorbeelden.

Conclusie

In deze berichten over MySQL-beveiliging hebben we enkele beveiligingsmaatregelen besproken die van pas kunnen komen als u de behoefte voelt om de beveiliging van uw MySQL-instantie(s) aan te scherpen. Hoewel we niet absoluut alles hebben behandeld, zijn we van mening dat deze punten een goed startpunt kunnen zijn bij het aanscherpen van de beveiliging van uw MySQL-installatie. Haal uit deze berichten wat je wilt, doe je eigen onderzoek en pas de beveiligingsmaatregelen toe die het meest van toepassing zijn in jouw situatie.


  1. Sleutelwoord 'DOORGAAN' in Oracle 10g PL/SQL

  2. Tips voor het afstemmen van PostgreSQL-prestaties

  3. CLOB invoegen in Oracle-database

  4. De APPEND_ONLY_STORAGE_INSERT_POINT-vergrendeling