I cant reproduce your problem. Here's my setup
primary: np12
standby: np12s
On primary:
SQL> show parameter log_archive_dest_2
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2 string SERVICE=np12s ASYNC VALID_FOR=
(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=np12s
On secondary:
SQL> ALTER DATABASE OPEN READ ONLY;
Database altered.
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
Database altered.
I have standby logs in place. So now I'll create a table on the primary and immediately check the standby
--
-- primary
--
SQL> set time on
11:16:57 SQL> create table scott.new_tab as select * from scott.emp;
Table created.
--
-- secondary
--
SQL> set time on
11:17:00 SQL> desc scott.new_tab
Name Null? Type
----------------------------------------------------------------------- -------- ---------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
11:17:18 SQL> select count(*) from scott.new_tab;
COUNT(*)
----------
14
So check your alert logs - make sure that the standby logs are correctly being used. If nothing seems out of the ordinary, it could be time to have a chat to Support, but you can see from my example, your asserrtion is correct that changes should be applied "immediately".