Du indsætter ikke et tidsstempel i et bestemt format. Tidsstempler (og datoer) gemmes i databasen ved hjælp af en intern repræsentation, som er mellem 7 og 11 bytes afhængig af type og præcision. Der er mere om det i dette spørgsmål blandt andre.
Din klient eller applikation bestemmer, hvordan værdien skal vises i en strengform, der kan læses af mennesker.
Når du gør:
to_timestamp(localtimestamp,'YYYY/MM/DD')
du konverterer implicit localtimestamp
til en streng ved at bruge din sessions NLS-indstillinger og derefter konvertere den tilbage til et tidsstempel. Det kan i øvrigt ændre værdien - miste præcision - men vil ikke ændre, hvordan værdien lagres internt. I dit tilfælde fører misforholdet mellem NLS-indstillingen og det format, du angiver, til en ORA-01830-fejl.
Så din første indsættelse er korrekt (forudsat at du virkelig vil have sessionstiden, ikke servertiden). Hvis du vil se de lagrede værdier i et bestemt format, så ændrer du enten din klientsessions NLS-indstillinger, eller formaterer det helst eksplicit, når du forespørger på det, f.eks.:
select to_char(time, 'YYYY-MM-DD HH24:MI:SS.FF3') from activity_log