A computer implemented method being performed within a high availability and disaster recovery system including a primary database system (405a; 505) and a secondary database system (405b; 510), the secondary database system being a hot-standby and being an identical physical system as the primary database system, the method comprising: initializing a first database image (540; 750; 850) of a first database being the secondary database system from a recovery image (720; 820), wherein the first database image (540; 750; 850) is an image of a database being held in a main memory; modifying the first database image (540; 750; 850) of the first database by replaying transaction logs of a second database being the primary database system; establishing a connection (525; 528) with a client (515; 916), wherein the client maintains a read/write connection with each of the primary system and the secondary system; receiving a query via the connection (525; 528), the query including a transaction to be executed on the first database and including a write transaction; and rejecting the query if the query involves a prohibited transaction, wherein a transaction is prohibited when the transaction would cause any one of: updating of the first database image (540; 750; 850) of the first database; generating a new transaction log; and modifying the recovery image (720; 820); executing the query on the first database if the query does not require any prohibited transactions; the method further comprising when the query is not rejected: executing the query, wherein when the query includes the write transaction executing the query causes one of: creating one or more temporary tables in the first database associated with the connection; modifying one or more temporary tables of the first database associated with the connection; and modifying the data contained within one or more temporary tables of the first database; and assigning, when the write transaction is executed on one or more temporary tables, a small value to the transaction commit timestamp associated with the write transaction, wherein the small number is guaranteed to be smaller than a global commit timestamp, wherein visibility of the write transaction to a later executed query in the first database is at least in part determined by whether a transaction commit timestamp associated with the write transaction is less than a global commit timestamp of the first database. initializing a first database image (540; 750; 850) of a first database being the secondary database system from a recovery image (720; 820), wherein the first database image (540; 750; 850) is an image of a database being held in a main memory; modifying the first database image (540; 750; 850) of the first database by replaying transaction logs of a second database being the primary database system; establishing a connection (525; 528) with a client (515; 916), wherein the client maintains a read/write connection with each of the primary system and the secondary system; receiving a query via the connection (525; 528), the query including a transaction to be executed on the first database and including a write transaction; and rejecting the query if the query involves a prohibited transaction, wherein a transaction is prohibited when the transaction would cause any one of: updating of the first database image (540; 750; 850) of the first database; generating a new transaction log; and modifying the recovery image (720; 820); updating of the first database image (540; 750; 850) of the first database; generating a new transaction log; and modifying the recovery image (720; 820); executing the query on the first database if the query does not require any prohibited transactions; executing the query, wherein when the query includes the write transaction executing the query causes one of: creating one or more temporary tables in the first database associated with the connection; modifying one or more temporary tables of the first database associated with the connection; and modifying the data contained within one or more temporary tables of the first database; and creating one or more temporary tables in the first database associated with the connection; modifying one or more temporary tables of the first database associated with the connection; and modifying the data contained within one or more temporary tables of the first database; and assigning, when the write transaction is executed on one or more temporary tables, a small value to the transaction commit timestamp associated with the write transaction, wherein the small number is guaranteed to be smaller than a global commit timestamp,