Skip to content
Matthijs edited this page Jun 10, 2022 · 8 revisions

BAG 2.0 laden

Vanaf versie 2.2.0

De BAG 2.0 wordt in een apart schema ingeladen. Voor Oracle betekent een apart schema een aparte database-gebruiker. Voor PostgreSQL wordt automatisch een schema genaamd bag gemaakt.

Database configuratie

De BAG 2.0 wordt via een aparte JNDI resource geladen. Deze moet dus geconfigureerd worden in conf/server.xml van Tomcat.

PostgreSQL

De JNDI resource moet jdbc/brmo/rsgbbag heten, maar kan verder exact hetzelfde zijn als jdbc/brmo/rsgb, aangezien automatisch het schema bag wordt aangemaakt waarin de BAG 2.0 wordt ingeladen. De BAG 2.0 in een aparte database laden is ook mogelijk door andere database-verbindingsgegevens op te geven. Voorbeeld:

<Resource name="jdbc/brmo/rsgbbag"
        auth="Container"
        type="javax.sql.DataSource"
        username="brmo"
        password="****"
        driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://HOSTNAME/brmo_rsgb"
        maxTotal="40"
        validationQuery="select 1"
        timeBetweenEvictionRunsMillis="30000"
        minEvictableIdleTimeMillis="5000"
        testOnBorrow="true"
/>

Oracle

Aangezien een apart schema in Oracle betekent dat een aparte gebruiker moet worden aangemaakt, moet als SYSDBA een eigen gebruiker voor de BAG aangemaakt worden. Deze gebruikersnaam moet voor de duidelijkheid de tekst "BAG" bevatten, zodat niet per ongeluk de tabellen in het RSGB schema overschreven worden. De gebruiker moet voldoende quota en rechten hebben, zie onder. Het is wel mogelijk om een gebruiker als C##BAG aan te maken, bijvoorbeeld:

sqlplus -l system/****@//HOSTNAME:1521/orcl
create user c##bag identified by bag default tablespace users temporary tablespace temp;
alter user c##bag quota unlimited on users;
grant connect, resource, create view to c##bag;
alter user c##bag default role connect, resource;

Let op: als je deze SQL commando's aanpast, bewaar de aanpassingen. Als je de stand later een keer opnieuw wilt inladen, heb je ze opnieuw nodig.

En in conf/server.xml van Tomcat:

<Resource name="jdbc/brmo/rsgbbag"
        auth="Container"
        type="javax.sql.DataSource"
        driverClassName="oracle.jdbc.OracleDriver"
        url="jdbc:oracle:thin:@HOSTNAME:1521:orcl"
        username="c##bag"
        password="****"
        maxTotal="100"
        maxIdle="30"
        maxWaitMillis="8000"
        validationQuery="select 1 from dual"
        timeBetweenEvictionRunsMillis="30000"
        minEvictableIdleTimeMillis="5000"
        testOnBorrow="true"
/>

Inladen via de BRMO service

Klik op het menu "Bestand inladen" en dan onderaan op de link om een BAG 2.0 bestand in te laden. Gebruik niet de formulieren op de "Bestand inladen" pagina zelf.

De aparte "BAG 2.0 bestand inladen" pagina geeft verder uitleg.

Automatisch verwerken mutaties

Om automatisch mutaties te verwerken kan een BAG2MutatieProces worden aangemaakt.

Inladen via de command-line

Zie de README van de brmo-bag2-loader command-line tool voor meer informatie. Deze tool is beschikbaar als docker image.

Opnieuw inladen van een stand

Het is altijd mogelijk om een stand opnieuw in te laden. Een BAG 2.0 stand bevat altijd de volledige historie, dus er gaat geen historie verloren.

Het BAG 2.0 schema moet dan wel eerst leeggemaakt worden. Gebruik daarvoor de volgende SQL-statements:

PostgreSQL

Voer eerst het volgende SQL statement uit:

drop schema bag;

Je krijgt nu te zien welke objecten in het bag schema zitten of er van afhankelijk zijn. Ook views die gebruik maken van views of tabellen in het bag schema moeten namelijk verwijderd worden en opnieuw aangemaakt worden.

De standaardobjecten die bij het inladen van een stand worden aangemaakt zijn als volgt. Alle andere objecten moeten handmatig opnieuw worden aangemaakt:

brmo_rsgb=# drop schema bag;
ERROR:  cannot drop schema bag because other objects depend on it
DETAIL:  table bag.openbareruimte depends on schema bag
table bag.nummeraanduiding depends on schema bag
table bag.standplaats_nevenadres depends on schema bag
table bag.standplaats depends on schema bag
table bag.pand depends on schema bag
table bag.ligplaats_nevenadres depends on schema bag
table bag.ligplaats depends on schema bag
table bag.woonplaats depends on schema bag
table bag.verblijfsobject_gebruiksdoel depends on schema bag
table bag.verblijfsobject_nevenadres depends on schema bag
table bag.verblijfsobject_maaktdeeluitvan depends on schema bag
table bag.verblijfsobject depends on schema bag
view bag.v_woonplaats_actueel depends on schema bag
view bag.v_pand_actueel depends on schema bag
view bag.v_ligplaats_actueel depends on schema bag
view bag.v_nummeraanduiding_actueel depends on schema bag
view bag.v_standplaats_actueel depends on schema bag
view bag.v_openbareruimte_actueel depends on schema bag
view bag.v_verblijfsobject_actueel depends on schema bag
HINT:  Use DROP ... CASCADE to drop the dependent objects too.

Als je de definities van alle extra views hebt zekergesteld en opnieuw kan aanmaken, voer dan uit:

drop schema bag cascade;

Het bag schema wordt bij het inladen van een stand automatisch opnieuw aangemaakt.

Oracle

Het is het makkelijkst om de gebruiker voor het BAG schema te verwijderen en opnieuw aan te maken:

sqlplus -l system/****@//HOSTNAME:1521/orcl
drop user c##bag cascade;
create user c##bag ...

Voer de SQL commando's bij van de initiele setup opnieuw uit (zie hierboven).

Views

Actuele BAG voorkomens

Standaard worden views voor actuele gegevens ("voorkomen") (zoals v_pand_actueel) aangemaakt. Let op! Deze bevatten nog wel BAG objecten met een status die bijvoorbeeld aangeven dat een pand is gesloopt of een nummeraanduiding is ingetrokken. Soms worden ook objecten met overduidelijk verkeerde geometrie (een pand van honderden kilometers breed) op de laatste actuele versie gehouden maar met een status dat deze niet meer bestaat. In de *_actueel views worden deze statussen er niet uitgefilterd (in tegenstelling tot de "actueelbestaand" views in NLExtract).

Extra BAG views

Er is een script om extra BAG views aan te maken. Deze combineren vooral de verschillende BAG tabellen. Deze kunnen pas na het inladen van de BAG worden aangemaakt. Deze views staan in de volgende scripts:

PostgreSQL: 208_bag2_views.sql en 209_bag2_rsgb_views.sql
Oracle: 208_bag2_views.sql en 209_bag2_rsgb_views.sql

Clone this wiki locally