Why create a Materialized View Log with Primary Key or RowID, etc?
A MView Log table is with the name MLOG$_BASE_TABLE_NAME. Check this log table which show the changes being tracked. For eg, Primary key, ROWID, columns, OLD/NEW, DML Type, etc.

I had a similar challenge when designing a MView. I could try out following 3 to create the MView


WITH ROWID 
WITH PRIMARY KEY 
WITH (columns...)


When using ROWID and PRIMARY KEY, base table's record identification is present on the LOG table. In this case a query on the MView will have to fetch data from its MView storage and MView Log and the base table.
In the last approach, the columns specified in the list is stored on LOG table itself. In this case does oracle refer to the base table again or will it use the values available from the MView Log?

Further, the view log you have created, must specify INCLUDING NEW VALUES like below
CREATE MATERIALIZED VIEW LOG ON LLATTRDATA WITH PRIMARY KEY INCLUDING NEW VALUES
This will ensure you have fast refresh working. 

These are the oracle pages i have gone through
https://docs.oracle.com/database/121/SQLRF/statements_6002.htm#SQLRF01302
https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6003.htm