Gå til hovedinnhold

Jobbe med lokal database

Lokal database?

forsiktig

Forutsetning for denne veilederen er at du har en lokal database.

Dersom det IKKE er tilfellet, må du installere Docker og Docker Desktop, laste ned et db-image og starte den lokale FS-basen. Følg da veilederne:

Start lokal database

Den lokale FS-databasen som er installert som et docker-image, startes fra

  1. Docker Desktop applikasjonen
  2. kommandolinje på roten i FS-plattform prosjektet ved å kjøre kommandoen docker compose up
PS C:\Users\ditt_brukernavn\dev\fs-plattform> docker compose up 
[+] Running 1/0
✔ Container fs-plattform-oracle-1 Running 0.0s
Attaching to oracle-1
oracle-1 | 2023-12-12T08:56:10.478842+00:00
oracle-1 | Thread 1 advanced to log sequence 45 (LGWR switch)
...
  1. I et nytt terminalvindu kjører du på roten kommandoen mvn clean install slik at hele prosjektet bygges

Det tredje punktet er kun nødvendig dersom mvn clean install ikke har vært kjørt siden siste restart av PCen. Dette punktet er nødvendig dersom har gjort endringer som påvirker databasen.

docker-compose

'docker-compose' dokumentasjon

Aktuelle kommandoer:

(som jobber mot konfigurasjon i docker-compose.yml på roten av FS-plattform prosjektet)

  • docker compose up (Dette oppretter og starter containeren på nytt)
  • docker compose down (Dette stopper og sletter containeren)

Dersom man kjører docker compose down og så docker compose up vil man slette og så opprette containeren på nytt.

Databasebrukere

  • Bruker FS inneholder skjema FS - som i f.eks FSUTV. Kun lesetilgang.
  • Bruker KJERNEAPI eier alle View'ene som vi bruker, men har ikke adgang til å se data
  • Bruker I1234_FS_WS er brukeren som er logget inn i databasen fra APIet. Den har adgang til å se data i KJERNEAPI'ets Views og har lese-, skrive-, oppdatere og sletterettigheter i FS via synonyms.

Databaseverktøy - DataGrip

Hva er DataGrip?

Jetbrains DataGrip er et verktøy for å administrere SQL-databaser.

DataGrip finnes som

Frittstående JetBrains IDE for databaser

JetBrains DataGrip IDE

Database tools and SQL plugin som gir alle de samme funksjonene som DataGrip IDE. Den er installert og aktivert i IntelliJ IDEA Ultimate som standard.

Denne plugin er kun tilgjengelig i Ultimate versjonen av IntelliJ.

Dersom du ikke finner Database Tool vinduet i IntelliJ, gå da til File | Settings og søk på "datagrip" og sjekk om Database tools and SQL plugin er installert og aktivert.

JetBrains DataGrip IDE

DataGrip lar deg spørre, opprette og administrere databaser og gir full støtte for SQL. Det er et databasemiljø med flere motorer. Hvis databasen du bruker har en JDBC-driver, kan du koble til den via The Database tools and SQL plugin i IntelliJ eller DataGrip IDE.

Følgende databaser støttes:

MySQL, PostgreSQL, Oracle, Microsoft SQL Server, Microsoft Azure, MongoDB, Redis, Apache Derby, Apache Hive, Cassandra, ClickHouse, Exasol, Greenplum, DB2, H2, HyperSQL, MariaDB, Redshift, Snowflake, Sybase , SQLite, CockroachDB, Couchbase, BigQuery og Vertica.

Hovedfunksjoner:

  • Databaseutforsker
  • Utføre spørringer
  • Redigerbart dataregneark
  • Syntaksutheving og kodingshjelp for SQL
  • Refaktoreringer
  • Import/eksportalternativer
  • Diagrammer

Bruke DataGrip

Koble til en database

JetBrains dokumentasjon

Opprette ny Oracle Data Source

I IntelliJ sitt Database-vindu

  • Klikk på + symbolet øverst til venstre i Database-vindu

  • Velg Data Source og klikk på Oracle

    IntelliJ - ny database connection

  • Dialogboksen Data Sources and Drivers åpnes

JDBC-detaljer

  • Fyll inn feltene
    Name: @localhost_I1234_FS_WS
    Comment: FS GraphQL API brukeren

  • Under General velger du først
    Connection type: Service Name

  • Fyll inn feltene under General
    Host: localhost
    Port: 1521
    Service: XEPDB1
    Driver: Thin
    Authentication: User & Password
    User: I1234_FS_WS
    Password: [spør tech lead om passordet]
    Save: Forever

  • URL: [Fylles ut når verdiene over fylles inn]
    Man kan lime inn denne tekststrengen
    jdbc:oracle:thin:@//localhost:1521/XEPDB1
    og så blir de fleste feltene fylt ut av seg selv.

IntelliJ - ny database connection

Databaseskjema

Under tab Schemas velger du hvilke databaseskjemaer du vil ha tilgang til.

Default skjema for brukeren I1234_FS_WS er allede valgt (skjema I1234_FS_WS).

Her har vi valgt å legge til:

  • Skjema FS
  • Skjema KJERNEAPI

Dersom du får en melding om oppdatering av JDBC-driver, gjør du det ved å klikke på lenke i meldingen.

Klikk på OK-knappen, så er Data Source konfigurasjonen satt opp.

IntelliJ Database Tool Window Schemas

Da har du tilgang til de skjemaene du trenger for å arbeide i FS-plattform med de rettigheter
som brukeren I1234_FS_WS har.

IntelliJ Database Tool Window

Databaseverktøy - SQL Developer

Oracle SQL Developer

Oracle SQL Developer er et gratis databaseverktøy som øker produktiviteten og forenkler databaseutviklingsoppgaver. Med SQL Developer kan du bla gjennom databaseobjekter, kjøre SQL-setninger og SQL-skript, redigere og feilsøke PL/SQL-setninger, manipulere og eksportere data og vise og lage rapporter. Du kan koble til Oracle-databaser og du kan koble til utvalgte tredjepartsdatabaser, se metadata og data, og migrere disse databasene til Oracle.

Last ned Sql Developer og pakk ut filene i en passende mappe (f.eks. C:\Apps\sqldeveloper). Du starter Sql Developer ved å dobbelklikke på sqldeveloper.exe som ligger på roten av utpakkingsmappen. Ved å lage en snarvei til sqldeveloper.exe og legge den på Windows Oppgavelinje, kan du starte opp Sql Developer derfra.

Lær mer her: SQL Developer dokumentasjon

Oracle SQL Developer

Koble til en database

For å opprette en ny databasetilkobling, klikk på det grønne pluss-ikonet New Connection. Pass på at du ikke får opp New Database Schema Service Connection dialogboksen. Du skal bruke New / Select Database Connection dialogboksen. Bruk dialogboksen for å angi informasjon om tilkoblingen.

SQL Developer database connection

JDBC-detaljer

  • Fyll inn feltene med disse verdiene

    Name: @localhost_I1234_FS_WS
    Database type: Oracle

  • Under User Info er verdiene
    Authentication Type: Default Username: I1234_FS_WS
    Password: [spør tech lead om passordet] Role: default Saver Password: true

  • Connection Type: Basic

  • Under Details er verdiene
    Hostname: localhost
    Port: 1521
    SID: [blank]
    Service name: XEPDB1

Nå kan du teste denne databasetilkoblingen ved å klikke på Test knappen. Dette oppsettet burde gi Status : Success

Databaseskjema

Db-brukeren @localhost_I1234_FS_WS gir også tilgang til schema FS og KJERNAPI. Disse kan du finne under noden Other users.

Se Databasebrukere lenger opp i dette dokumentet.

Kjente problemer

Har du en løsning på et problem som ennå ikke er dokumentert?

Bli med på dokumentasjonsdugnaden ved å dokumentere løsningen på et passende sted i denne veilederen.

PROBLEM: Logget inn i lokal db med feil bruker utløser 'ORA-28112'

Symptom

Hvis du prøver å se data når du er logget inn i databasen som KJERNEAPI  
får du feilen "ORA-28112: kan ikke utføre retningslinjefunksjon".

Løsning:

  • Logg inn i databasen som I1234_FS_WS
  • Prøv på nytt

Kommentar

ORA-28112
Failed to execute policy function occurs when the policy function encounters some run time errors, typically unhanded exceptions. Fortunately, the error will produce a trace file in the user_dump_dest directory that can be examined and the error can be corrected. Action: Check the trace file and correct the errors.

PROBLEM: Docker Desktop blir plutselig borte

Symptom

Docker Desktop, som var installert via Firmaportalen,  
ble plutselig borte fra PCen og det finnes ikke spor av den.

Forklaring på problemet

Dersom man har installert Docker Desktop via Firmaportalen kan problemet oppstå når Firmaportalen prøver å oppdatere til en nyere versjon. Den installerte versjonen blir avinstallert uten forvarsel og dersom installasjonen av den nye versjonen feiler, vil det se ut som om Docker Desktop er avinstallert. Det gis ingen melding om at installasjonen feilet.

Dette problemet også kan oppstå dersom man prøver å starte oppgradering av Docker Desktop selv.

Forventet oppførsel

Forventet oppførsel ved feilende installasjon er at den tidligere versjon vil fortsette å fungere.

Problembeskrivelse på nettet

  • GitHub sak: Docker gone if problem during update occurs
    I denne tråden diskuteres dette problemet, men det ser ikke ut til at det grunnleggende problemet er løst ennå.
  • Innlegg på Docker Forum: Docker gone after failed upgrade attempt
    I dette innlegget vises det til at dette problemet også kan oppstå dersom man prøver å starte oppgradering av Docker Desktop selv. I tillegg omtales det hvordan man finne filene/data man hadde.

Løsningsforslag

Selv om GitHub-saken over er fra 10.11.2017 (!) så er problemet fortsatt ikke løst.

For å få Docker Desktop tilbake kan man prøve å installere Docker Desktop på nytt via Firmaportalen eller man kan laste ned Docker Desktop og installere selv.

Dersom det ser ut som om Docker Desktop fortsatt er installert selv om den er borte, kan man prøve å redigere Windows Registry slik det er beskrevet i GitHub-saken i denne kommentaren. Spør noen som har erfaring, om hvordan man kan redigere Windows Registry på en trygg måte.