  In this paper we study the Steiner tree problem over a dynamic set of
terminals. We consider the model where we are given an $n$-vertex graph
$G=(V,E,w)$ with positive real edge weights, and our goal is to maintain a tree
which is a good approximation of the minimum Steiner tree spanning a terminal
set $S \subseteq V$, which changes over time. The changes applied to the
terminal set are either terminal additions (incremental scenario), terminal
removals (decremental scenario), or both (fully dynamic scenario). Our task
here is twofold. We want to support updates in sublinear $o(n)$ time, and keep
the approximation factor of the algorithm as small as possible. We show that we
can maintain a $(6+\varepsilon)$-approximate Steiner tree of a general graph in
$\tilde{O}(\sqrt{n} \log D)$ time per terminal addition or removal. Here, $D$
denotes the stretch of the metric induced by $G$. For planar graphs we achieve
the same running time and the approximation ratio of $(2+\varepsilon)$.
Moreover, we show faster algorithms for incremental and decremental scenarios.
Finally, we show that if we allow higher approximation ratio, even more
efficient algorithms are possible. In particular we show a polylogarithmic time
$(4+\varepsilon)$-approximate algorithm for planar graphs.
  One of the main building blocks of our algorithms are dynamic distance
oracles for vertex-labeled graphs, which are of independent interest. We also
improve and use the online algorithms for the Steiner tree problem.
