Yes access table is populating by almost 60 persons ,.then at the end of month,we transfere it to oracle table for reporting on powerbi.
So I have no choice ...
This is somewhat backwards from the experience I had working with Oracle tables, but the situation is similar. We were pulling data from an Oracle data warehouse into local Access tables for weekly and monthly reports. You're pushing "warehouse" data into the Oracle table.
I do suspect that the Access data isn't available to your PowerBI report. Correct?
As suggested, linking Access to the Oracle table is an essential first step. From there, though, I'd approach the next step a little differently. Instead of a flag field for "UpdateData", I'd invest time in queries using left outer joins to identify NEW records that must be appended to the Oracle table,
E.g. "SELECT Field1, Field2 FROM AccessLocalTable LEFT OUTER JOIN OracleRemoteTable ON AccessLocalTable.PrimaryKey = OracleRemoteTable.PrimaryHey WHERE OracleRemoteTable.PrimaryKeyField Is Null;"
Turn that into an Append query to do the first step, i.e. add new records. I'll leave that to you to work out....
Then, to update the corresponding records in the OracleRemoteTable with changes made in the last work period to the AccessLocalTable records, create an Update query:
e.g. "UPDATE OracleRemoteTable INNER JOIN AccessLocalTable ON AccessLocalTable.PrimaryKey = OracleRemoteTable.PrimaryKey
SET Field1 = AccessLocalTable.Field1, Field2 = AccessLocalTable.Field2;"
That will ensure that ALL values in ALL fields in ALL records are the same in the Oracle table as they are at that moment in the Access table. That is fine logically if you want to synch them entirely. It may be time consuming, though, so you could apply criteria to restrict the records.
e.g. "UPDATE OracleRemoteTable INNER JOIN AccessLocalTable ON AccessLocalTable.PrimaryKey = OracleRemoteTable.PrimaryKey
SET Field1 = AccessLocalTable.Field1, Field2 = AccessLocalTable.Field2
WHERE AccessLocalTable.Field1 <> OracleRemoteTable.Field1 OR AccessLocalTable.Field2 <> OracleRemoteTable.Field2; "
If you really want to fine tune it, you could create a series of Update queries aimed only at single fields, and run them in transaction in a VBA function.