-
Notifications
You must be signed in to change notification settings - Fork 1
Integrate/Oracle: Add section with starter tutorial #261
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughAdds Oracle Database references in ETL docs, inserts Oracle into the integrations index, and adds a new Oracle integration landing page plus an end-to-end tutorial showing how to load data from Oracle into CrateDB using the CrateDB Toolkit. No code or API changes. Changes
Sequence Diagram(s)sequenceDiagram
actor User
participant Toolkit as CrateDB Toolkit (ctk-ingest)
participant Oracle as Oracle Database
participant CrateDB as CrateDB Cluster
User->>Toolkit: Run "ctk-ingest load table" with Oracle DSN and CrateDB URL
Toolkit->>Oracle: Connect and read table data
Toolkit->>CrateDB: Write data into target schema/table
User->>CrateDB: Query to verify loaded data
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Tip 🔌 Remote MCP (Model Context Protocol) integration is now available!Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats. ✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
🧹 Nitpick comments (3)
docs/integrate/oracle/tutorial.md (2)
27-33
: Optional: Add readiness check for Oracle before connecting.Oracle startup can take a while; without a wait, sqlplus/ingest may fail intermittently.
Add this snippet after starting Oracle and before running sqlplus/ingest:
# Wait for Oracle listener to accept connections until docker exec oracle /bin/bash -lc 'echo | sqlplus -L -s / as sysdba' 2>/dev/null | grep -q 'Connected to'; do echo "Waiting for Oracle to become ready..." sleep 3 done
20-25
: Optional: Make network creation idempotent.Re-running the tutorial currently errors if the network exists.
Use a tolerant create:
docker network create cratedb-demo >/dev/null 2>&1 || truedocs/integrate/oracle/index.md (1)
4-6
: Optional: Avoid hotlinking external logos.Hotlinking to Wikipedia can break or change without notice; consider vendoring the logo into the docs’ assets with proper attribution.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (4)
docs/ingest/etl/index.md
(2 hunks)docs/integrate/index.md
(1 hunks)docs/integrate/oracle/index.md
(1 hunks)docs/integrate/oracle/tutorial.md
(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-08-09T16:19:43.966Z
Learnt from: amotl
PR: crate/cratedb-guide#238
File: docs/integrate/azure-functions/learn.rst:1-1
Timestamp: 2025-08-09T16:19:43.966Z
Learning: In the CrateDB Guide documentation, main integration anchors (e.g., `azure-functions`) are intentionally placed in the `index.md` files of their respective integration folders, while detailed tutorials use the `-learn` suffix (e.g., `azure-functions-learn`) in their `learn.rst` or `learn.md` files. This is a deliberate architectural pattern for the documentation restructuring.
Applied to files:
docs/integrate/oracle/tutorial.md
📚 Learning: 2025-08-15T18:56:11.233Z
Learnt from: amotl
PR: crate/cratedb-guide#255
File: docs/integrate/influxdb/tutorial.md:120-123
Timestamp: 2025-08-15T18:56:11.233Z
Learning: In CrateDB integration tutorials, when using `ctk load table` with `--cluster-url="crate://userhost:port/schema/table"`, the verification query should reference the target schema.table combination specified in the cluster URL, not derive it from the source system's naming. For example, if loading from InfluxDB bucket/measurement `testdrive/demo` to CrateDB `doc/testdrive`, the verification query should be `SELECT * FROM doc.testdrive`.
Applied to files:
docs/integrate/oracle/tutorial.md
🪛 LanguageTool
docs/integrate/oracle/index.md
[grammar] ~1-~1: There might be a mistake here.
Context: (oracle)= # Oracle ```{div} .float-right [![oracle-...
(QB_NEW_EN)
[grammar] ~10-~10: There might be a mistake here.
Context: ...``{div} .clearfix ``` :::{rubric} About ::: [Oracle Database] (Oracle DBMS, or ...
(QB_NEW_EN)
[grammar] ~13-~13: There might be a mistake here.
Context: ... as Oracle) is a proprietary multi-model database management system produced and ...
(QB_NEW_EN)
[grammar] ~16-~16: There might be a mistake here.
Context: ...line transaction processing (OLTP), data warehousing (DW) and mixed (OLTP & DW) d...
(QB_NEW_EN)
[grammar] ~19-~19: There might be a mistake here.
Context: ...atabase workloads. :::{rubric} Synopsis ::: ```shell uvx 'cratedb-toolkit[io-in...
(QB_NEW_EN)
[grammar] ~28-~28: There might be a mistake here.
Context: .../doc/oracle_demo" ``` :::{rubric} Learn ::: ::::{grid} :::{grid-item-card} Tut...
(QB_NEW_EN)
[grammar] ~42-~42: There might be a mistake here.
Context: ...rateDB Toolkit. ::: :::: :::{toctree} :maxdepth: 1 :hidden: Tutorial <tutorial...
(QB_NEW_EN)
[grammar] ~43-~43: There might be a mistake here.
Context: ...t. ::: :::: :::{toctree} :maxdepth: 1 :hidden: Tutorial ::: [Orac...
(QB_NEW_EN)
[grammar] ~44-~44: There might be a mistake here.
Context: ...::: :::{toctree} :maxdepth: 1 :hidden: Tutorial ::: [Oracle Databa...
(QB_NEW_EN)
[grammar] ~45-~45: There might be a mistake here.
Context: ...maxdepth: 1 :hidden: Tutorial ::: [Oracle Database]: https://www.ora...
(QB_NEW_EN)
docs/integrate/oracle/tutorial.md
[grammar] ~1-~1: There might be a mistake here.
Context: (oracle-tutorial)= # Load data from Oracle into CrateDB The ...
(QB_NEW_EN)
[grammar] ~7-~7: There might be a mistake here.
Context: ...y. The data transfer is supported by the {ref}`CrateDB Toolkit Ingestr I/O <ctk:i...
(QB_NEW_EN)
[grammar] ~35-~35: There might be a mistake here.
Context: ..., CrateDB Toolkit, and the Oracle client programs. ::::{tab-set} :::{tab-item} ...
(QB_NEW_EN)
[grammar] ~40-~40: There might be a mistake here.
Context: ...{tab-set} :::{tab-item} Linux and macOS To make the settings persistent, add the...
(QB_NEW_EN)
[grammar] ~47-~47: There might be a mistake here.
Context: ...nzl/oracle-free:23-slim sqlplus" ``` ::: :::{tab-item} Windows PowerShell To make...
(QB_NEW_EN)
[grammar] ~48-~48: There might be a mistake here.
Context: ...``` ::: :::{tab-item} Windows PowerShell To make the settings persistent, add the...
(QB_NEW_EN)
[grammar] ~55-~55: There might be a mistake here.
Context: ...cle-free:23-slim sqlplus @Args } ::: :::{tab-item} Windows Command
shell d...
(QB_NEW_EN)
docs/ingest/etl/index.md
[grammar] ~249-~249: There might be a mistake here.
Context: ... - {ref}nifi
- {ref}node-red
- {ref}oracle
- {ref}postgresql
- {ref}risingwave
- ...
(QB_NEW_EN)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Build docs
🔇 Additional comments (7)
docs/integrate/oracle/tutorial.md (2)
89-92
: LGTM: Verification query matches the target schema.table.This aligns with our tutorial convention: you set --cluster-url to doc/oracle_demo and verify via SELECT * FROM doc.oracle_demo.
79-80
: Ensure Oracle EZCONNECT Specifies Service/SIDMost Oracle Docker images require an explicit service (PDB) or SID in the EZCONNECT URL; the gvenzl/oracle-free:23-slim default PDB is typically
FREEPDB1
. Omitting it may causesqlplus
to fail.
- File: docs/integrate/oracle/tutorial.md (lines 79–80)
Apply this change:
- sqlplus sys/secret@oracle as sysdba @/demo/init.sql + sqlplus sys/secret@//oracle:1521/FREEPDB1 as sysdba @/demo/init.sqlIf your image is configured with a different service/SID (e.g.,
FREE
), replaceFREEPDB1
accordingly.docs/integrate/index.md (1)
54-54
: Add Oracle to integrations: looks good.Placement is alphabetically consistent and follows existing structure.
docs/ingest/etl/index.md (2)
124-128
: Oracle entry added to Databases: looks good.Text mirrors the About blurb on the integration page and uses the oracle anchor.
249-249
: Alphabetical list update includes Oracle: looks good.Anchor {ref}
oracle
resolves to the new integration page.docs/integrate/oracle/index.md (2)
33-37
: LGTM: Learn card links to oracle-tutorial anchor.Anchor and caption are consistent with the tutorial page.
1-3
: No changes needed for anchor namingAll integration index pages use
(integration)
and their tutorials use(integration-tutorial)
, and this pattern is consistent across everydocs/integrate/*
folder.
From https://github.com/oracle/docker-images/tree/main/OracleDatabase/SingleInstance it looks like it is good to be complex to test this. |
We have been so happy to discover ready-made OCI images elsewhere ;], otherwise surfacing this guide would have been an unfeasible operation. Thank you so much, @gvenzl. 💯 -- https://hub.docker.com/r/gvenzl/oracle-free OT: We see you are also working on MCP. Cheers! |
The goal is to present concise walkthroughs without many bells and whistles, which get to the point of getting you started quickly. Use the canonical template to present another data nozzle based on the CTK Ingestr I/O subsystem.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
♻️ Duplicate comments (3)
docs/integrate/oracle/tutorial.md (2)
84-86
: Include Oracle service/SID in URL and uppercase schema.table.Most setups require a service (e.g., FREEPDB1). This has been raised earlier; mirroring here for consistency.
ctk-ingest load table \ - "oracle://sys:secret@oracle:1521/?table=sys.demo&mode=SYSDBA" \ + "oracle://sys:secret@oracle:1521/FREEPDB1?table=SYS.DEMO&mode=SYSDBA" \ --cluster-url="crate://crate:crate@cratedb:4200/doc/oracle_demo"Replace FREEPDB1 with the actual service if different.
40-46
: Fix sqlplus alias: use $PWD and set a concrete entrypoint.Two issues:
- Use
$PWD (or $ (pwd)) instead of $(PWD) to mount the current directory.--entrypoint=
is empty; set it to sqlplus to run the client reliably.alias crash="docker run --rm -it --network=cratedb-demo ghcr.io/crate/cratedb-toolkit crash" alias ctk-ingest="docker run --rm -i --network=cratedb-demo ghcr.io/crate/cratedb-toolkit-ingest ctk" -alias sqlplus="docker run --rm -it --network=cratedb-demo --volume=$(PWD):/demo --env=ORACLE_PASSWORD=secret --entrypoint= docker.io/gvenzl/oracle-free:23-slim sqlplus" +alias sqlplus="docker run --rm -it --network=cratedb-demo --volume=$PWD:/demo --env=ORACLE_PASSWORD=secret --entrypoint=sqlplus docker.io/gvenzl/oracle-free:23-slim"docs/integrate/oracle/index.md (1)
22-26
: Add service/SID to Oracle URL and uppercase schema.table.For copy-paste reliability with PDBs, include the service/SID and use
SYS.DEMO
. This mirrors the tutorial note.uvx 'cratedb-toolkit[io-ingestr]' load table \ - "oracle://sys:secret@localhost:1521/?table=sys.demo&mode=SYSDBA" \ + "oracle://sys:secret@localhost:1521/FREEPDB1?table=SYS.DEMO&mode=SYSDBA" \ --cluster-url="crate://crate:crate@localhost:4200/doc/oracle_demo"Adjust FREEPDB1 as appropriate for your image.
🧹 Nitpick comments (2)
docs/ingest/etl/index.md (1)
124-128
: Wording nit: “or simply as Oracle” → “or simply Oracle”.Minor grammar polish for clarity/consistency with the index page.
- Oracle Database (Oracle DBMS, or simply as Oracle) is a proprietary multi-model + Oracle Database (Oracle DBMS, or simply Oracle) is a proprietary multi-modeldocs/integrate/oracle/index.md (1)
13-15
: Wording nit: “or simply as Oracle” → “or simply Oracle”.Minor grammar cleanup.
-[Oracle Database] (Oracle DBMS, or simply as Oracle) is a proprietary multi-model +[Oracle Database] (Oracle DBMS, or simply Oracle) is a proprietary multi-model
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (4)
docs/ingest/etl/index.md
(2 hunks)docs/integrate/index.md
(1 hunks)docs/integrate/oracle/index.md
(1 hunks)docs/integrate/oracle/tutorial.md
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- docs/integrate/index.md
🧰 Additional context used
🧠 Learnings (3)
📚 Learning: 2025-08-15T18:56:11.508Z
Learnt from: amotl
PR: crate/cratedb-guide#255
File: docs/integrate/influxdb/tutorial.md:120-123
Timestamp: 2025-08-15T18:56:11.508Z
Learning: In CrateDB integration tutorials, when using `ctk load table` with `--cluster-url="crate://userhost:port/schema/table"`, the verification query should reference the target schema.table combination specified in the cluster URL, not derive it from the source system's naming. For example, if loading from InfluxDB bucket/measurement `testdrive/demo` to CrateDB `doc/testdrive`, the verification query should be `SELECT * FROM doc.testdrive`.
Applied to files:
docs/integrate/oracle/index.md
docs/integrate/oracle/tutorial.md
📚 Learning: 2025-08-09T16:19:43.966Z
Learnt from: amotl
PR: crate/cratedb-guide#238
File: docs/integrate/azure-functions/learn.rst:1-1
Timestamp: 2025-08-09T16:19:43.966Z
Learning: In the CrateDB Guide documentation, main integration anchors (e.g., `azure-functions`) are intentionally placed in the `index.md` files of their respective integration folders, while detailed tutorials use the `-learn` suffix (e.g., `azure-functions-learn`) in their `learn.rst` or `learn.md` files. This is a deliberate architectural pattern for the documentation restructuring.
Applied to files:
docs/integrate/oracle/tutorial.md
📚 Learning: 2025-08-14T12:42:12.744Z
Learnt from: amotl
PR: crate/cratedb-guide#248
File: docs/integrate/amqp/tutorial.md:36-41
Timestamp: 2025-08-14T12:42:12.744Z
Learning: In the cratedb-guide repository, code examples and tutorials prioritize simplicity and ease of following over security hardening. Security recommendations should be more lenient in tutorial/demo contexts to avoid distracting from the main learning objectives.
Applied to files:
docs/integrate/oracle/tutorial.md
🪛 LanguageTool
docs/ingest/etl/index.md
[grammar] ~249-~249: There might be a mistake here.
Context: ... - {ref}nifi
- {ref}node-red
- {ref}oracle
- {ref}postgresql
- {ref}risingwave
- ...
(QB_NEW_EN)
docs/integrate/oracle/index.md
[grammar] ~1-~1: There might be a mistake here.
Context: (oracle)= # Oracle ```{div} .float-right [![oracle-...
(QB_NEW_EN)
[grammar] ~10-~10: There might be a mistake here.
Context: ...``{div} .clearfix ``` :::{rubric} About ::: [Oracle Database] (Oracle DBMS, or ...
(QB_NEW_EN)
[grammar] ~13-~13: There might be a mistake here.
Context: ... as Oracle) is a proprietary multi-model database management system produced and ...
(QB_NEW_EN)
[grammar] ~16-~16: There might be a mistake here.
Context: ...line transaction processing (OLTP), data warehousing (DW) and mixed (OLTP & DW) d...
(QB_NEW_EN)
[grammar] ~28-~28: There might be a mistake here.
Context: .../doc/oracle_demo" ``` :::{rubric} Learn ::: ::::{grid} :::{grid-item-card} Tut...
(QB_NEW_EN)
[grammar] ~42-~42: There might be a mistake here.
Context: ...rateDB Toolkit. ::: :::: :::{toctree} :maxdepth: 1 :hidden: Tutorial <tutorial...
(QB_NEW_EN)
[grammar] ~43-~43: There might be a mistake here.
Context: ...t. ::: :::: :::{toctree} :maxdepth: 1 :hidden: Tutorial ::: [Orac...
(QB_NEW_EN)
[grammar] ~44-~44: There might be a mistake here.
Context: ...::: :::{toctree} :maxdepth: 1 :hidden: Tutorial ::: [Oracle Databa...
(QB_NEW_EN)
[grammar] ~45-~45: There might be a mistake here.
Context: ...maxdepth: 1 :hidden: Tutorial ::: [Oracle Database]: https://www.ora...
(QB_NEW_EN)
docs/integrate/oracle/tutorial.md
[grammar] ~1-~1: There might be a mistake here.
Context: (oracle-tutorial)= # Load data from Oracle into CrateDB The ...
(QB_NEW_EN)
[grammar] ~7-~7: There might be a mistake here.
Context: ...y. The data transfer is supported by the {ref}`CrateDB Toolkit Ingestr I/O <ctk:i...
(QB_NEW_EN)
[grammar] ~35-~35: There might be a mistake here.
Context: ..., CrateDB Toolkit, and the Oracle client programs. ::::{tab-set} :::{tab-item} ...
(QB_NEW_EN)
[grammar] ~40-~40: There might be a mistake here.
Context: ...{tab-set} :::{tab-item} Linux and macOS To make the settings persistent, add the...
(QB_NEW_EN)
[grammar] ~47-~47: There might be a mistake here.
Context: ...nzl/oracle-free:23-slim sqlplus" ``` ::: :::{tab-item} Windows PowerShell To make...
(QB_NEW_EN)
[grammar] ~48-~48: There might be a mistake here.
Context: ...``` ::: :::{tab-item} Windows PowerShell To make the settings persistent, add the...
(QB_NEW_EN)
[grammar] ~55-~55: There might be a mistake here.
Context: ...cle-free:23-slim sqlplus @Args } ::: :::{tab-item} Windows Command
shell d...
(QB_NEW_EN)
🔇 Additional comments (3)
docs/ingest/etl/index.md (1)
249-249
: LGTM: Alphabetical list entry is correctly placed.The new
{ref}
oracle` entry is alphabetically positioned between node-red and postgresql.docs/integrate/oracle/tutorial.md (2)
70-77
: Starter DDL is acceptable for the tutorial’s simplicity goal.Given the “quick start” intent, keeping the DDL minimal is fine.
91-92
: LGTM: Verification query matches the target schema.table.The SELECT aligns with the cluster URL (doc/oracle_demo), per prior tutorial conventions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
♻️ Duplicate comments (3)
docs/integrate/oracle/index.md (1)
22-26
: Include Oracle service/SID and uppercase schema.table in connection URLWithout the service/SID segment, connections to PDBs typically fail. Also align schema.table casing for consistency.
Apply this diff:
uvx 'cratedb-toolkit[io-ingestr]' load table \ - "oracle://sys:secret@localhost:1521/?table=sys.demo&mode=SYSDBA" \ + "oracle://sys:secret@localhost:1521/<SERVICE_NAME>?table=SYS.DEMO&mode=SYSDBA" \ --cluster-url="crate://crate:crate@localhost:4200/doc/oracle_demo"Replace <SERVICE_NAME> with your PDB service (e.g., FREEPDB1).
docs/integrate/oracle/tutorial.md (2)
43-46
: Fix Linux/macOS volume mount: use$PWD instead of $ (PWD)$(PWD) performs command substitution and will fail; use the env var.
Apply this diff:
-alias sqlplus="docker run --rm -it --network=cratedb-demo --volume=$(PWD):/demo --env=ORACLE_PASSWORD=secret --entrypoint=sqlplus docker.io/gvenzl/oracle-free:23-slim" +alias sqlplus="docker run --rm -it --network=cratedb-demo --volume=$PWD:/demo --env=ORACLE_PASSWORD=secret --entrypoint=sqlplus docker.io/gvenzl/oracle-free:23-slim"Note: This was discussed and tracked for broader follow-up; fixing here improves copy-paste UX.
84-87
: Include Oracle service/SID and uppercase schema.table in ingest URLAlign with the SQL*Plus connection and ensure the connector reaches the intended PDB/schema.
Apply this diff:
ctk-ingest load table \ - "oracle://sys:secret@oracle:1521/?table=sys.demo&mode=SYSDBA" \ + "oracle://sys:secret@oracle:1521/FREEPDB1?table=SYS.DEMO&mode=SYSDBA" \ --cluster-url="crate://crate:crate@cratedb:4200/doc/oracle_demo"Replace FREEPDB1 with the actual service name for your Oracle container.
🧹 Nitpick comments (1)
docs/integrate/oracle/tutorial.md (1)
70-77
: Prefer NUMBER over LONG for id; optionally avoid 23c-specific IF NOT EXISTSLONG is deprecated and awkward for ids; a simple swap to NUMBER keeps the snippet approachable. If you want idempotence across reruns, see alternative below.
Apply this minimal diff:
-cat >init.sql <<SQL -CREATE TABLE IF NOT EXISTS demo (id LONG, temperature FLOAT, humidity FLOAT); +cat >init.sql <<SQL +CREATE TABLE IF NOT EXISTS demo (id NUMBER, temperature FLOAT, humidity FLOAT); INSERT INTO demo (id, temperature, humidity) VALUES (1, 42.84, 83.1); INSERT INTO demo (id, temperature, humidity) VALUES (2, 84.84, 56.99); SELECT * FROM demo; exit; SQLOptional (more robust across Oracle versions): replace the CREATE with a small PL/SQL block to drop-if-exists before CREATE; happy to provide if you want it.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (2)
docs/integrate/oracle/index.md
(1 hunks)docs/integrate/oracle/tutorial.md
(1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📚 Learning: 2025-08-15T18:56:11.508Z
Learnt from: amotl
PR: crate/cratedb-guide#255
File: docs/integrate/influxdb/tutorial.md:120-123
Timestamp: 2025-08-15T18:56:11.508Z
Learning: In CrateDB integration tutorials, when using `ctk load table` with `--cluster-url="crate://userhost:port/schema/table"`, the verification query should reference the target schema.table combination specified in the cluster URL, not derive it from the source system's naming. For example, if loading from InfluxDB bucket/measurement `testdrive/demo` to CrateDB `doc/testdrive`, the verification query should be `SELECT * FROM doc.testdrive`.
Applied to files:
docs/integrate/oracle/index.md
docs/integrate/oracle/tutorial.md
📚 Learning: 2025-08-09T16:19:43.966Z
Learnt from: amotl
PR: crate/cratedb-guide#238
File: docs/integrate/azure-functions/learn.rst:1-1
Timestamp: 2025-08-09T16:19:43.966Z
Learning: In the CrateDB Guide documentation, main integration anchors (e.g., `azure-functions`) are intentionally placed in the `index.md` files of their respective integration folders, while detailed tutorials use the `-learn` suffix (e.g., `azure-functions-learn`) in their `learn.rst` or `learn.md` files. This is a deliberate architectural pattern for the documentation restructuring.
Applied to files:
docs/integrate/oracle/tutorial.md
📚 Learning: 2025-08-14T12:42:12.744Z
Learnt from: amotl
PR: crate/cratedb-guide#248
File: docs/integrate/amqp/tutorial.md:36-41
Timestamp: 2025-08-14T12:42:12.744Z
Learning: In the cratedb-guide repository, code examples and tutorials prioritize simplicity and ease of following over security hardening. Security recommendations should be more lenient in tutorial/demo contexts to avoid distracting from the main learning objectives.
Applied to files:
docs/integrate/oracle/tutorial.md
🪛 LanguageTool
docs/integrate/oracle/index.md
[grammar] ~1-~1: There might be a mistake here.
Context: (oracle)= # Oracle ```{div} .float-right [![oracle-...
(QB_NEW_EN)
[grammar] ~10-~10: There might be a mistake here.
Context: ...``{div} .clearfix ``` :::{rubric} About ::: [Oracle Database] (Oracle DBMS, or ...
(QB_NEW_EN)
[grammar] ~13-~13: There might be a mistake here.
Context: ...ply Oracle) is a proprietary multi-model database management system produced and ...
(QB_NEW_EN)
[grammar] ~16-~16: There might be a mistake here.
Context: ...line transaction processing (OLTP), data warehousing (DW) and mixed (OLTP & DW) d...
(QB_NEW_EN)
[grammar] ~28-~28: There might be a mistake here.
Context: .../doc/oracle_demo" ``` :::{rubric} Learn ::: ::::{grid} :::{grid-item-card} Tut...
(QB_NEW_EN)
[grammar] ~42-~42: There might be a mistake here.
Context: ...rateDB Toolkit. ::: :::: :::{toctree} :maxdepth: 1 :hidden: Tutorial <tutorial...
(QB_NEW_EN)
[grammar] ~43-~43: There might be a mistake here.
Context: ...t. ::: :::: :::{toctree} :maxdepth: 1 :hidden: Tutorial ::: [Orac...
(QB_NEW_EN)
[grammar] ~44-~44: There might be a mistake here.
Context: ...::: :::{toctree} :maxdepth: 1 :hidden: Tutorial ::: [Oracle Databa...
(QB_NEW_EN)
[grammar] ~45-~45: There might be a mistake here.
Context: ...maxdepth: 1 :hidden: Tutorial ::: [Oracle Database]: https://www.ora...
(QB_NEW_EN)
docs/integrate/oracle/tutorial.md
[grammar] ~1-~1: There might be a mistake here.
Context: (oracle-tutorial)= # Load data from Oracle into CrateDB The ...
(QB_NEW_EN)
[grammar] ~7-~7: There might be a mistake here.
Context: ...y. The data transfer is supported by the {ref}`CrateDB Toolkit Ingestr I/O <ctk:i...
(QB_NEW_EN)
[grammar] ~35-~35: There might be a mistake here.
Context: ..., CrateDB Toolkit, and the Oracle client programs. ::::{tab-set} :::{tab-item} ...
(QB_NEW_EN)
[grammar] ~40-~40: There might be a mistake here.
Context: ...{tab-set} :::{tab-item} Linux and macOS To make the settings persistent, add the...
(QB_NEW_EN)
[grammar] ~47-~47: There might be a mistake here.
Context: ...r.io/gvenzl/oracle-free:23-slim" ``` ::: :::{tab-item} Windows PowerShell To make...
(QB_NEW_EN)
[grammar] ~48-~48: There might be a mistake here.
Context: ...``` ::: :::{tab-item} Windows PowerShell To make the settings persistent, add the...
(QB_NEW_EN)
[grammar] ~55-~55: There might be a mistake here.
Context: ...enzl/oracle-free:23-slim @Args } ::: :::{tab-item} Windows Command
shell d...
(QB_NEW_EN)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Build docs
🔇 Additional comments (3)
docs/integrate/oracle/tutorial.md (3)
51-54
: LGTM: PowerShell helper correctly sets entrypoint and mounts working dirExplicit --entrypoint=sqlplus and ${PWD} usage look correct.
58-61
: LGTM: Windows Command helper sets entrypoint and mounts %cd%Explicit --entrypoint=sqlplus and %cd% mapping are correct.
89-92
: LGTM: Verification query matches target schema.tableSELECT from doc.oracle_demo correctly matches the cluster-url target.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (1)
docs/integrate/oracle/tutorial.md (1)
45-45
: Fix Linux/macOS sqlplus alias: use$PWD (or $ (pwd)) instead of $(PWD).$(PWD) attempts command substitution and won’t mount your working dir, breaking @/demo/init.sql. Use the environment variable $PWD.
-alias sqlplus="docker run --rm -it --network=cratedb-demo --volume=$(PWD):/demo --env=ORACLE_PASSWORD=secret --entrypoint=sqlplus docker.io/gvenzl/oracle-free:23-slim" +alias sqlplus="docker run --rm -it --network=cratedb-demo --volume=$PWD:/demo --env=ORACLE_PASSWORD=secret --entrypoint=sqlplus docker.io/gvenzl/oracle-free:23-slim"
🧹 Nitpick comments (3)
docs/integrate/oracle/tutorial.md (2)
70-77
: Optional: Avoid Oracle-version-specific IF NOT EXISTS for broader portability.CREATE TABLE … IF NOT EXISTS is 23c-specific. For wider compatibility, use an idempotent PL/SQL block to drop-if-exists, then CREATE. Keep it simple if you prefer, but here’s a portable alternative:
-cat >init.sql <<SQL -CREATE TABLE IF NOT EXISTS demo (id NUMBER, temperature FLOAT, humidity FLOAT); +cat >init.sql <<SQL +BEGIN + EXECUTE IMMEDIATE 'DROP TABLE demo PURGE'; +EXCEPTION + WHEN OTHERS THEN + IF SQLCODE != -942 THEN RAISE; END IF; +END; +/ +CREATE TABLE demo (id NUMBER, temperature FLOAT, humidity FLOAT); INSERT INTO demo (id, temperature, humidity) VALUES (1, 42.84, 83.1); INSERT INTO demo (id, temperature, humidity) VALUES (2, 84.84, 56.99); SELECT * FROM demo; exit; SQL
84-86
: Verify Oracle URL format accepted by the connector; consider path-style service.You’re using service_name=freepdb1 as a query param. If the connector also supports Oracle’s path-style service, this form is often copy-paste friendly:
- "oracle://sys:secret@oracle:1521/?service_name=freepdb1&table=sys.demo&mode=sysdba" \ + "oracle://sys:secret@oracle:1521/freepdb1?table=SYS.DEMO&mode=SYSDBA" \If service_name in the query is the recommended format for CTK Ingestr, keep as-is; otherwise, switch to the path form for consistency with common Oracle tooling.
docs/integrate/oracle/index.md (1)
22-26
: Example is clear; consider aligning URL style with tutorial and/or Oracle path form.Current example uses service_name=… in the query and lower-case sys.demo. If CTK prefers path-style services and uppercase identifiers, you could mirror this alt form:
- "oracle://sys:secret@localhost:1521/?service_name=freepdb1&table=sys.demo&mode=sysdba" \ + "oracle://sys:secret@localhost:1521/freepdb1?table=SYS.DEMO&mode=SYSDBA" \If query-param service_name is the canonical CTK format, keep as-is but consider matching the tutorial exactly for consistency.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (2)
docs/integrate/oracle/index.md
(1 hunks)docs/integrate/oracle/tutorial.md
(1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📚 Learning: 2025-08-15T18:56:11.508Z
Learnt from: amotl
PR: crate/cratedb-guide#255
File: docs/integrate/influxdb/tutorial.md:120-123
Timestamp: 2025-08-15T18:56:11.508Z
Learning: In CrateDB integration tutorials, when using `ctk load table` with `--cluster-url="crate://userhost:port/schema/table"`, the verification query should reference the target schema.table combination specified in the cluster URL, not derive it from the source system's naming. For example, if loading from InfluxDB bucket/measurement `testdrive/demo` to CrateDB `doc/testdrive`, the verification query should be `SELECT * FROM doc.testdrive`.
Applied to files:
docs/integrate/oracle/index.md
docs/integrate/oracle/tutorial.md
📚 Learning: 2025-08-09T16:19:43.966Z
Learnt from: amotl
PR: crate/cratedb-guide#238
File: docs/integrate/azure-functions/learn.rst:1-1
Timestamp: 2025-08-09T16:19:43.966Z
Learning: In the CrateDB Guide documentation, main integration anchors (e.g., `azure-functions`) are intentionally placed in the `index.md` files of their respective integration folders, while detailed tutorials use the `-learn` suffix (e.g., `azure-functions-learn`) in their `learn.rst` or `learn.md` files. This is a deliberate architectural pattern for the documentation restructuring.
Applied to files:
docs/integrate/oracle/tutorial.md
📚 Learning: 2025-08-14T12:42:12.744Z
Learnt from: amotl
PR: crate/cratedb-guide#248
File: docs/integrate/amqp/tutorial.md:36-41
Timestamp: 2025-08-14T12:42:12.744Z
Learning: In the cratedb-guide repository, code examples and tutorials prioritize simplicity and ease of following over security hardening. Security recommendations should be more lenient in tutorial/demo contexts to avoid distracting from the main learning objectives.
Applied to files:
docs/integrate/oracle/tutorial.md
🪛 LanguageTool
docs/integrate/oracle/index.md
[grammar] ~1-~1: There might be a mistake here.
Context: (oracle)= # Oracle ```{div} .float-right [![oracle-...
(QB_NEW_EN)
[grammar] ~10-~10: There might be a mistake here.
Context: ...``{div} .clearfix ``` :::{rubric} About ::: [Oracle Database] (Oracle DBMS, or ...
(QB_NEW_EN)
[grammar] ~13-~13: There might be a mistake here.
Context: ...ply Oracle) is a proprietary multi-model database management system produced and ...
(QB_NEW_EN)
[grammar] ~16-~16: There might be a mistake here.
Context: ...line transaction processing (OLTP), data warehousing (DW) and mixed (OLTP & DW) d...
(QB_NEW_EN)
[grammar] ~28-~28: There might be a mistake here.
Context: .../doc/oracle_demo" ``` :::{rubric} Learn ::: ::::{grid} :::{grid-item-card} Tut...
(QB_NEW_EN)
[grammar] ~42-~42: There might be a mistake here.
Context: ...rateDB Toolkit. ::: :::: :::{toctree} :maxdepth: 1 :hidden: Tutorial <tutorial...
(QB_NEW_EN)
[grammar] ~43-~43: There might be a mistake here.
Context: ...t. ::: :::: :::{toctree} :maxdepth: 1 :hidden: Tutorial ::: [Orac...
(QB_NEW_EN)
[grammar] ~44-~44: There might be a mistake here.
Context: ...::: :::{toctree} :maxdepth: 1 :hidden: Tutorial ::: [Oracle Databa...
(QB_NEW_EN)
[grammar] ~45-~45: There might be a mistake here.
Context: ...maxdepth: 1 :hidden: Tutorial ::: [Oracle Database]: https://www.ora...
(QB_NEW_EN)
docs/integrate/oracle/tutorial.md
[grammar] ~1-~1: There might be a mistake here.
Context: (oracle-tutorial)= # Load data from Oracle into CrateDB The ...
(QB_NEW_EN)
[grammar] ~7-~7: There might be a mistake here.
Context: ...y. The data transfer is supported by the {ref}`CrateDB Toolkit Ingestr I/O <ctk:i...
(QB_NEW_EN)
[grammar] ~35-~35: There might be a mistake here.
Context: ..., CrateDB Toolkit, and the Oracle client programs. ::::{tab-set} :::{tab-item} ...
(QB_NEW_EN)
[grammar] ~40-~40: There might be a mistake here.
Context: ...{tab-set} :::{tab-item} Linux and macOS To make the settings persistent, add the...
(QB_NEW_EN)
[grammar] ~47-~47: There might be a mistake here.
Context: ...r.io/gvenzl/oracle-free:23-slim" ``` ::: :::{tab-item} Windows PowerShell To make...
(QB_NEW_EN)
[grammar] ~48-~48: There might be a mistake here.
Context: ...``` ::: :::{tab-item} Windows PowerShell To make the settings persistent, add the...
(QB_NEW_EN)
[grammar] ~55-~55: There might be a mistake here.
Context: ...enzl/oracle-free:23-slim @Args } ::: :::{tab-item} Windows Command
shell d...
(QB_NEW_EN)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Build docs
🔇 Additional comments (5)
docs/integrate/oracle/tutorial.md (4)
51-54
: PowerShell helper looks correct now (explicit entrypoint and volume mapping).Entrypoint is set to sqlplus and ${PWD} resolves to the current directory in PowerShell contexts. Looks good.
57-61
: Windows Command helper looks correct (explicit entrypoint and %cd% mapping).Entrypoint set to sqlplus avoids invoking the image default. Correct use of %cd%.
79-80
: Good: include service name in SQL*Plus connect string.Specifying the PDB service avoids common connection pitfalls.
91-92
: Verification query matches the target schema.table from cluster URL.This aligns with the tutorial pattern used across integrations.
docs/integrate/oracle/index.md (1)
33-37
: LGTM: Learn card correctly references the tutorial anchor.Anchor usage and link text are consistent with the docs pattern.
You are very welcome, @amotl! :) |
About
There was no section about how to import data from Oracle Database yet.
Details
The goal is to present concise walkthroughs without many bells and
whistles, which get to the point of getting you started quickly.
Use the canonical template to present another data nozzle based on
the CTK Ingestr I/O subsystem.
Preview
https://cratedb-guide--261.org.readthedocs.build/integrate/oracle/