What do you mean by the quotes ? online is pretty much online , eg
SQL> create table t as
2 select *
3 from dba_objects d;
Table created.
SQL>
SQL> create index t_ix on t ( object_id );
Index created.
--
-- lets do an uncommitted delete every 0.2 seconds
--
SQL>
SQL> set serverout on
SQL> begin
2 for i in 1 .. 100 loop
3 dbms_output.put_line('-------------------------');
4 dbms_output.put_line(systimestamp);
5 delete from t where owner != 'SYS' and rownum = 1;
6 dbms_output.put_line(systimestamp);
7 dbms_lock.sleep(0.2);
8 end loop;
9 end;
10 /
-------------------------
23-MAR-17 11.40.22.441000000 AM +08:00
23-MAR-17 11.40.22.442000000 AM +08:00
-------------------------
23-MAR-17 11.40.22.643000000 AM +08:00
23-MAR-17 11.40.22.643000000 AM +08:00
-------------------------
23-MAR-17 11.40.22.842000000 AM +08:00
23-MAR-17 11.40.22.854000000 AM +08:00
-------------------------
23-MAR-17 11.40.23.055000000 AM +08:00
23-MAR-17 11.40.23.055000000 AM +08:00
-------------------------
...
...
...
--
-- meanwhile in another session
--
SQL> alter index t_ix rebuild online;
--
-- meanwhile in another session again
--
SQL> delete from t where owner = 'SCOTT' and rownum = 1;
1 row deleted.
SQL> commit;
Commit complete.
So other sessions are not blocked, even though the rebuild is still running.
Now session one finishes
23-MAR-17 11.40.42.068000000 AM +08:00
23-MAR-17 11.40.42.068000000 AM +08:00
-------------------------
23-MAR-17 11.40.42.268000000 AM +08:00
23-MAR-17 11.40.42.268000000 AM +08:00
PL/SQL procedure successfully completed.
and then when I commit, the operations will complete as expected
SQL> commit;
Commit complete.
--
-- and the rebuild session shows
--
SQL> alter index t_ix rebuild online;
Index altered.
So the index rebuild did not block anyone