Snapshot Isolation (SI),is a multi-version concurrency control algorithm introduced in and later implemented by Oracle.Note that  if you eliminate dirty reads, non-repeatable reads, and phantom reads, you’re  NOT serializable. It turns out if you eliminate these three anomalies, what you have is a new isolation level which they called Snapshot Isolation. This is becuase there are other isolation anamolies like READ SKEW, WRITE SKEW, LOST UPDATES

Snapshot isolation reads return values from a single instant of time when all committed transactions have completed their writes and no writes of non-committed transactions are visible.

Advantages of snapshot isolation

Disadvantages of snapshot isolation

While In general, snapshot isolation performs all reads of data as of a particular snapshot of the database state which contains only committed data. This snapshot remains constant throughout the lifetime of the transaction, so all reads are guaranteed to be repeatable (in addition to being only of committed data). Furthermore, concurrent transactions that write the same data detect conflicts with each other and typically resolve this conflict via aborting one of the conflicting transactions. This prevents the lost-update anomaly. However, conflicts are only detected if conflicting transactions write an overlapping set of data. If the write sets are disjoint, these conflicts will not be detected. Therefore snapshot isolation is vulnerable to the write skew anomaly. Some implementations are also vulnerable to the phantom read anomaly. Here is how write skew can happen.