The database cannot make intelligent decisions to merge data. A distributed database will enforce the inherent concurrency control mechanisms you require. You will need to look at Oracle documentation on implementing distributed architecture, or rethink your current (or proposed) architecture.
If you simply want to link the databases, you will need to do this for each database:
create database link "LINK_NAME"
connect to USERNAME
identified by "PASS"
using 'OTHER_DB_NAME'
You can perform CRUD operations on tables in the remote database, just like you would locally, by using the @ symbol. For example:
INSERT INTO table_name@link_name VALUES('x');
will insert a row with one column into the remote database. You do not need to worry about concurrency in this instance.
You can use materialized views, but you will have out-of-date data. The basic syntax to create a materialized view:
CREATE MATERIALIZED VIEW HR.MY_MATERIALIZED_VIEW
NOCACHE
NOCOMPRESS
NOPARALLEL
BUILD IMMEDIATE
REFRESH COMPLETE
AS
SELECT * FROM table_name;
/