{"id":19831188,"url":"https://github.com/reactive-stack-js/reactive-stack-js-oracle-poc","last_synced_at":"2025-10-09T21:03:03.283Z","repository":{"id":128837068,"uuid":"313233082","full_name":"reactive-stack-js/reactive-stack-js-oracle-poc","owner":"reactive-stack-js","description":"reactive-stack-js oracle poc","archived":false,"fork":false,"pushed_at":"2021-11-10T09:33:37.000Z","size":16,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-28T21:25:07.418Z","etag":null,"topics":["nodejs","oracle","reactive-stack-js"],"latest_commit_sha":null,"homepage":"https://reactive-stack-js.github.io/reactive-stack-js-oracle-poc/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/reactive-stack-js.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-16T08:17:01.000Z","updated_at":"2021-11-10T09:33:40.000Z","dependencies_parsed_at":"2023-04-16T07:48:37.740Z","dependency_job_id":null,"html_url":"https://github.com/reactive-stack-js/reactive-stack-js-oracle-poc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/reactive-stack-js/reactive-stack-js-oracle-poc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactive-stack-js%2Freactive-stack-js-oracle-poc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactive-stack-js%2Freactive-stack-js-oracle-poc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactive-stack-js%2Freactive-stack-js-oracle-poc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactive-stack-js%2Freactive-stack-js-oracle-poc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reactive-stack-js","download_url":"https://codeload.github.com/reactive-stack-js/reactive-stack-js-oracle-poc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactive-stack-js%2Freactive-stack-js-oracle-poc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002012,"owners_count":26083285,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nodejs","oracle","reactive-stack-js"],"created_at":"2024-11-12T11:29:03.003Z","updated_at":"2025-10-09T21:03:03.264Z","avatar_url":"https://github.com/reactive-stack-js.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![reactive-stack-js](https://avatars0.githubusercontent.com/u/72337471?s=75)\n## reactive-stack-js-oracle-poc\n\nSee [reactive-stack-js](https://github.com/reactive-stack-js) for more info.\n\nThis is an attempt at Oracle Change Data Capture (CDC) POC for those who may want to use Oracle instead of MongoDB, which is used in all reactive-stack-js packages.\n\nIn this POC, I am using [Docker](https://www.docker.com/) to run Oracle because... well, why not?\n\nYou can, of course, still use your own Oracle installation instead. Just skip all the Docker stuff below.\n\n## Problem\n__I am still unable to get this to work!__ :(\n\n### Requirements\nWell, [Docker](https://www.docker.com/).\n\nAnd [NodeJS](https://nodejs.org/)\n\n### Docker stuff\n\nGo to [Oracle Database Enterprise Edition](https://hub.docker.com/_/oracle-database-enterprise-edition) and complete the \"checkout\". It's just a registration, it's free.\n\nOnce completed, you should be at the __Oracle Database Server Docker Image Documentation__ page.\n\n```cmd\ndocker pull store/oracle/database-enterprise:12.2.0.1\ndocker run -p 1521:1521 -v C:/git/github/reactive-stack-js-oracle-poc/oraclevolume:/ORCL -d -it --name oracle store/oracle/database-enterprise:12.2.0.1\n```\n\nDefault pwd is: Oradoc_db1\n\n```cmd\ndocker exec -it oracle bash\n```\n```bash\n/u01/app/oracle/product/12.2.0/dbhome_1/bin/sqlplus / as sysdba\n```\n\nFollow the [Oracle CDC Client](https://streamsets.com/documentation/controlhub/latest/help/datacollector/UserGuide/Origins/OracleCDC.html) instructions.\n\n```oracle\nselect name, open_mode from v$database;\n```\n\nIf the command returns NOARCHIVELOG, continue with the following steps:\n```oracle\nshutdown immediate;\n```\nwait...\n\n```oracle\nstartup mount;\n```\nwait...\n\n```oracle\nalter database archivelog;\nalter database open read write;\n```\n\nThen:\n```oracle\nSELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_all FROM v$database;\n```\n\nIf the command returns Yes or Implicit for all three columns, then supplemental logging is enabled.\nOtherwise:\n```oracle\nALTER SESSION SET CONTAINER=cdb$root;\nALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;\nALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;\nALTER SYSTEM ARCHIVE LOG CURRENT;\n```\n\nThen:\n```oracle\nalter session set \"_ORACLE_SCRIPT\"=true;\nCREATE USER root IDENTIFIED BY root;\nGRANT create session, alter session, logmining, execute_catalog_role TO root;\nGRANT select on GV_$DATABASE to root;\nGRANT select on V_$LOGMNR_CONTENTS to root;\nGRANT select on GV_$ARCHIVED_LOG to root;\nGRANT select on \"ROOT\".\"GLOB_LOCKS\" TO root;\n\nEXECUTE DBMS_LOGMNR_D.BUILD(OPTIONS=\u003e DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);\n\nALTER SESSION SET CONTAINER=cdb$root;\nEXECUTE DBMS_LOGMNR_D.BUILD(OPTIONS=\u003e DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);\n\nGRANT CONNECT, RESOURCE, DBA TO root;\nGRANT CREATE SESSION TO root;\nGRANT UNLIMITED TABLESPACE TO root;\nGRANT CHANGE NOTIFICATION TO root;\n\nGRANT SELECT ANY TRANSACTION TO root;\nGRANT SELECT ANY DICTIONARY TO root;\nGRANT CREATE SESSION TO root;\nGRANT EXECUTE_CATALOG_ROLE TO root;\n\nALTER SYSTEM SET JOB_QUEUE_PROCESSES = 20;\n\nCREATE TABLE \"GLOB_LOCKS\" (\n\t\"GLOB_LOCK_ID\" NUMBER NOT NULL ENABLE,\n\t\"RES_NAME\" VARCHAR2(40 BYTE),\n\t\"MESSAGE\" VARCHAR2(128 BYTE),\n\tCONSTRAINT \"GLOB_LOCKS_PK\" PRIMARY KEY (\"GLOB_LOCK_ID\")\n);\nINSERT INTO GLOB_LOCKS VALUES (1, 'yei', 'msg' );\n```\n\n### Oracle CDC\n```cmd\nyarn cdc\n```\nor\n```cmd\nnode oracle.js\n```\nThen do something in your MySQL instance, create, modify or delete a row and you _should_ see messages describing those changes.\n\n_But I still cannot get it to work!_ :(","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactive-stack-js%2Freactive-stack-js-oracle-poc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freactive-stack-js%2Freactive-stack-js-oracle-poc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactive-stack-js%2Freactive-stack-js-oracle-poc/lists"}