{"id":"9a1f1448-1c1f-41ba-b377-1ed4dbc21c64","shortId":"k6mVdD","kind":"skill","title":"oracle","tagline":"Use when working with Oracle Database, Oracle SQL, PL/SQL, sqlplus, cx_Oracle, oracledb, ORDS, OCI drivers, Oracle containers, schema migrations, security, vectors, or performance tuning.","description":"# Oracle Database\n\nUse this skill when working with Oracle Database in any capacity: OCI-based data paths (connect, execute, fetch, bind, transaction control), Instant Client configuration, or container-based Oracle 26ai workflows for dev/test/CI environments.\n\n## Quick Reference\n\n### Python Connection (oracledb thin mode)\n\n```python\nimport oracledb\n\n# Thin mode -- no Instant Client required\nconn = oracledb.connect(\n    user=\"app_user\",\n    password=\"secret\",\n    dsn=\"host.example.com:1521/FREEPDB1\",\n)\n\nwith conn.cursor() as cur:\n    # Always use bind variables\n    cur.execute(\n        \"SELECT order_id, total FROM orders WHERE customer_id = :cid\",\n        {\"cid\": 42},\n    )\n    rows = cur.fetchall()\n```\n\n### Connection Pooling\n\n```python\n# Create pool at startup; reuse for process lifetime\npool = oracledb.create_pool(\n    user=\"app_user\", password=\"secret\",\n    dsn=\"host.example.com:1521/FREEPDB1\",\n    min=2, max=10, increment=1,\n)\n\nwith pool.acquire() as conn:\n    with conn.cursor() as cur:\n        cur.execute(\"SELECT SYSDATE FROM dual\")\n```\n\n### Java JDBC Connection\n\n```java\nimport oracle.jdbc.pool.OracleDataSource;\n\nOracleDataSource ods = new OracleDataSource();\nods.setURL(\"jdbc:oracle:thin:@//host.example.com:1521/FREEPDB1\");\nods.setUser(\"app_user\");\nods.setPassword(\"secret\");\n\ntry (Connection conn = ods.getConnection();\n     PreparedStatement ps = conn.prepareStatement(\n         \"SELECT * FROM orders WHERE customer_id = ?\")) {\n    ps.setInt(1, 42);\n    try (ResultSet rs = ps.executeQuery()) {\n        while (rs.next()) {\n            System.out.println(rs.getInt(\"order_id\"));\n        }\n    }\n}\n```\n\n### Key PL/SQL Patterns\n\n```sql\n-- Package spec: public API contract\nCREATE OR REPLACE PACKAGE order_api AS\n    SUBTYPE order_id_t IS orders.order_id%TYPE;\n\n    PROCEDURE place_order(\n        p_customer_id  IN  customers.customer_id%TYPE,\n        p_items        IN  order_item_tab_t,\n        p_order_id     OUT order_id_t\n    );\nEND order_api;\n/\n\n-- Exception handling with diagnostic capture\nEXCEPTION\n    WHEN OTHERS THEN\n        log_pkg.error(\n            p_message   => SQLERRM,\n            p_backtrace => DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,\n            p_stack     => DBMS_UTILITY.FORMAT_ERROR_STACK\n        );\n        RAISE;  -- re-raise after logging; never silently swallow\n```\n\n### ORDS REST API Basics\n\n```text\nModule:   /api/v1/          (base path)\nTemplate: /api/v1/orders/   (collection)\nTemplate: /api/v1/orders/:id (single item)\nHandler:  GET  on /api/v1/orders/     -> SELECT query\nHandler:  POST on /api/v1/orders/     -> INSERT + RETURNING\n```\n\n```sql\n-- AutoREST: enable CRUD endpoints for a schema\nBEGIN\n    ORDS.ENABLE_SCHEMA(\n        p_enabled       => TRUE,\n        p_schema        => 'APP_USER',\n        p_url_mapping_type => 'BASE_PATH',\n        p_url_mapping_pattern => 'app'\n    );\nEND;\n/\n```\n\n<workflow>\n\n## Workflow\n\n### Step 1: Identify the Pattern\n\n| Need | Reference | Key Concept |\n| --- | --- | --- |\n| Connect from Python | connections.md | oracledb thin/thick, pooling |\n| Connect from Java | connections.md | JDBC thin, UCP |\n| Write PL/SQL | plsql.md | Packages, BULK COLLECT, FORALL |\n| SQL patterns | sql_patterns.md | Analytics, CTEs, MERGE, MODEL |\n| REST APIs | ords.md | Modules, templates, handlers |\n| JSON operations | json.md | JSON_VALUE, Duality Views (23ai+) |\n| Container dev/test | containers.md | Podman, 26ai Free |\n| Performance tuning | performance.md | EXPLAIN PLAN, AWR, indexes |\n| Vector/AI search | vectors.md | VECTOR type, IVF/HNSW indexes |\n| Schema migrations | schema_migrations.md | Liquibase, EBR, DBMS_REDEFINITION |\n\n### Step 2: Implement\n\n1. Choose thin mode by default -- only use thick mode for Advanced Queuing, Kerberos, or LDAP\n2. Create connection pools at startup; never create per-request connections\n3. Use bind variables for all parameter values -- enables cursor sharing and prevents injection\n4. Anchor PL/SQL parameter types with `%TYPE` / `%ROWTYPE`\n5. Log exceptions with `FORMAT_ERROR_BACKTRACE` + `FORMAT_ERROR_STACK`, then re-raise\n\n### Step 3: Validate\n\nRun through the validation checkpoint below before considering the work complete.\n\n</workflow>\n\n<guardrails>\n\n## Guardrails\n\n- **Always use bind variables**: `:param_name` syntax -- never concatenate values into SQL strings\n- **Always use connection pooling**: `create_pool()` at startup, `pool.acquire()` per operation\n- **Always re-raise exceptions after logging**: never silently swallow `WHEN OTHERS`\n- **Always anchor PL/SQL types**: use `%TYPE` / `%ROWTYPE` so DDL changes propagate automatically\n- **Use thick mode only when needed**: Advanced Queuing, Kerberos, LDAP, or Sharding -- thin mode is default and dependency-free\n- **Use `RAISE_APPLICATION_ERROR`** for custom errors visible to SQL callers (range -20000 to -20999)\n- **Never use implicit cursors for multi-row operations**: use BULK COLLECT/FORALL to minimize context switches\n- **Never commit inside reusable PL/SQL packages**: let the caller control transaction boundaries\n\n</guardrails>\n\n<validation>\n\n### Validation Checkpoint\n\nBefore delivering Oracle code, verify:\n\n- [ ] All queries use bind variables (`:param_name`) -- no string concatenation for values\n- [ ] Connection pooling is configured with `min`/`max`/`increment` parameters\n- [ ] Thick mode is only initialized when features require it (Advanced Queuing, Kerberos, etc.)\n- [ ] PL/SQL exception handlers log backtrace + stack and re-raise (no silent swallowing)\n- [ ] PL/SQL parameter types are anchored to table columns with `%TYPE`\n- [ ] ORDS handlers use bind variables (`:id`) in SQL source, not concatenation\n\n</validation>\n\n<example>\n\n## Example\n\n**Task:** \"Create a PL/SQL stored procedure for order placement with proper error handling, and call it from Python with connection pooling.\"\n\n```sql\n-- PL/SQL: Package for order management\nCREATE OR REPLACE PACKAGE order_api AS\n    SUBTYPE order_id_t IS orders.order_id%TYPE;\n\n    gc_max_items CONSTANT PLS_INTEGER := 500;\n\n    PROCEDURE place_order(\n        p_customer_id  IN  customers.customer_id%TYPE,\n        p_product_id   IN  products.product_id%TYPE,\n        p_quantity      IN  PLS_INTEGER,\n        p_order_id     OUT order_id_t\n    );\nEND order_api;\n/\n\nCREATE OR REPLACE PACKAGE BODY order_api AS\n    PROCEDURE place_order(\n        p_customer_id  IN  customers.customer_id%TYPE,\n        p_product_id   IN  products.product_id%TYPE,\n        p_quantity      IN  PLS_INTEGER,\n        p_order_id     OUT order_id_t\n    ) IS\n        v_price products.unit_price%TYPE;\n    BEGIN\n        IF p_quantity > gc_max_items THEN\n            RAISE_APPLICATION_ERROR(-20100,\n                'Quantity ' || p_quantity || ' exceeds limit of ' || gc_max_items);\n        END IF;\n\n        SELECT unit_price INTO v_price\n        FROM products\n        WHERE product_id = p_product_id;\n\n        INSERT INTO orders (customer_id, product_id, quantity, total)\n        VALUES (p_customer_id, p_product_id, p_quantity, v_price * p_quantity)\n        RETURNING order_id INTO p_order_id;\n\n    EXCEPTION\n        WHEN NO_DATA_FOUND THEN\n            RAISE_APPLICATION_ERROR(-20101,\n                'Product ' || p_product_id || ' not found');\n        WHEN OTHERS THEN\n            log_pkg.error(\n                p_message   => SQLERRM,\n                p_backtrace => DBMS_UTILITY.FORMAT_ERROR_BACKTRACE,\n                p_stack     => DBMS_UTILITY.FORMAT_ERROR_STACK\n            );\n            RAISE;\n    END place_order;\nEND order_api;\n/\n```\n\n```python\n# Python: Call the procedure with connection pooling\nimport oracledb\n\npool = oracledb.create_pool(\n    user=\"app_user\",\n    password=\"secret\",\n    dsn=\"host.example.com:1521/FREEPDB1\",\n    min=2,\n    max=10,\n    increment=1,\n)\n\ndef place_order(customer_id: int, product_id: int, quantity: int) -> int:\n    with pool.acquire() as conn:\n        with conn.cursor() as cur:\n            order_id = cur.var(oracledb.NUMBER)\n            cur.callproc(\"order_api.place_order\", [\n                customer_id, product_id, quantity, order_id,\n            ])\n            conn.commit()\n            return int(order_id.getvalue())\n\n\n# Usage\nnew_order_id = place_order(customer_id=42, product_id=101, quantity=5)\nprint(f\"Created order: {new_order_id}\")\n```\n\n</example>\n\n## References Index\n\nFor detailed guides and code examples, refer to the following documents in `references/`:\n\n- **[OCI C/C++ Integration](references/oci.md)** -- RAII handle management, array fetch/bind, Instant Client build hygiene.\n- **[26ai Container Operations](references/containers.md)** -- Image selection, Podman run workflows, persistence strategy.\n- **[AI Vector Search](references/vectors.md)** -- VECTOR data type, distance functions, IVF/HNSW indexes, RAG patterns.\n- **[Oracle SQL Patterns](references/sql_patterns.md)** -- Analytics, CTEs, MERGE, MODEL clause, flashback queries.\n- **[PL/SQL Development](references/plsql.md)** -- Package architecture, BULK COLLECT/FORALL, RESULT_CACHE, TAPI.\n- **[JSON in Oracle](references/json.md)** -- JSON storage, SQL/JSON functions, Duality Views (23ai+).\n- **[Connection Patterns](references/connections.md)** -- python-oracledb, JDBC, node-oracledb, DRCP, pool sizing.\n- **[Oracle REST Data Services](references/ords.md)** -- AutoREST, custom REST APIs, OAuth2, PL/SQL gateway.\n- **[Oracle Patterns for AI Agents](references/agent_patterns.md)** -- Schema discovery, safe DML, ORA- error catalog.\n- **[Performance Tuning](references/performance.md)** -- EXPLAIN PLAN, DBMS_XPLAN, AWR, index strategies.\n- **[SQL*Plus & SQLcl](references/sqlplus.md)** -- SQLcl features, Liquibase integration, MCP server.\n- **[Database Security](references/security.md)** -- VPD, TDE, Unified Auditing, DBMS_REDACT.\n- **[Core DBA Administration](references/admin.md)** -- User management, RMAN, Data Pump.\n- **[Oracle Enterprise Manager](references/oem.md)** -- OEM Cloud Control, Performance Hub, SQL Monitor.\n- **[Schema Migration & DevOps](references/schema_migrations.md)** -- Liquibase, Flyway, EBR, utPLSQL.\n\n## Official References\n\n- Oracle Call Interface Programmer's Guide (19c): <https://docs.oracle.com/en/database/oracle/oracle-database/19/lnoci/index.html>\n- Oracle Instant Client install/config docs: <https://www.oracle.com/database/technologies/instant-client.html>\n- Oracle Database Free docs: <https://www.oracle.com/database/free/get-started/>\n- Oracle SQL and datatype references: <https://docs.oracle.com/en/database/>\n- Oracle Database Free: <https://www.oracle.com/database/free/>\n- Oracle Container Registry (database/free): <https://container-registry.oracle.com/ords/ocr/ba/database/free>\n- Oracle Property Graph / 26ai Lite container quick start: <https://docs.oracle.com/en/database/oracle/property-graph/25.3/spgdg/quick-start-graph-server-26ai-lite-container.html>\n- Podman run reference: <https://docs.podman.io/en/latest/markdown/podman-run.1.html>\n- Podman secret-create reference: <https://docs.podman.io/en/latest/markdown/podman-secret-create.1.html>\n\n## Shared Styleguide Baseline\n\n- Use shared styleguides for generic language/framework rules to reduce duplication in this skill.\n- [General Principles](https://github.com/cofin/flow/blob/main/templates/styleguides/general.md)\n- [Oracle SQL*Plus](https://github.com/cofin/flow/blob/main/templates/styleguides/databases/oracle_sqlplus.md)\n- [Bash](https://github.com/cofin/flow/blob/main/templates/styleguides/languages/bash.md)\n- Keep this skill focused on tool-specific workflows, edge cases, and integration details.","tags":["oracle","flow","cofin","agent-skills","ai-agents","beads","claude-code","codex","cursor","developer-tools","gemini-cli","opencode"],"capabilities":["skill","source-cofin","skill-oracle","topic-agent-skills","topic-ai-agents","topic-beads","topic-claude-code","topic-codex","topic-cursor","topic-developer-tools","topic-gemini-cli","topic-opencode","topic-plugin","topic-slash-commands","topic-spec-driven-development"],"categories":["flow"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/cofin/flow/oracle","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add cofin/flow","source_repo":"https://github.com/cofin/flow","install_from":"skills.sh"}},"qualityScore":"0.455","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 11 github stars · SKILL.md body (11,496 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:07:38.175Z","embedding":null,"createdAt":"2026-04-23T13:04:00.342Z","updatedAt":"2026-05-18T19:07:38.175Z","lastSeenAt":"2026-05-18T19:07:38.175Z","tsv":"'-20000':586 '-20100':828 '-20101':892 '-20999':588 '/api/v1':292 '/api/v1/orders':296,299,306,312 '/cofin/flow/blob/main/templates/styleguides/databases/oracle_sqlplus.md)':1288 '/cofin/flow/blob/main/templates/styleguides/general.md)':1282 '/cofin/flow/blob/main/templates/styleguides/languages/bash.md)':1292 '/database/free/':1229 '/database/free/get-started/':1215 '/database/technologies/instant-client.html':1208 '/en/database/':1223 '/en/database/oracle/oracle-database/19/lnoci/index.html':1200 '/en/database/oracle/property-graph/25.3/spgdg/quick-start-graph-server-26ai-lite-container.html':1247 '/en/latest/markdown/podman-run.1.html':1253 '/en/latest/markdown/podman-secret-create.1.html':1261 '/freepdb1':90,136,944 '/host.example.com':170 '/ords/ocr/ba/database/free':1236 '1':142,191,347,427,950 '10':140,948 '101':1000 '1521/freepdb1':171 '19c':1197 '2':138,425,443,946 '23ai':396,1093 '26ai':59,401,1038,1240 '3':455,492 '4':469 '42':111,192,997 '5':477,1002 '500':741 'administr':1163 'advanc':438,560,654 'agent':1123 'ai':1049,1122 'alway':95,506,519,530,542 'analyt':379,1066 'anchor':470,543,675 'api':210,217,253,288,384,725,773,780,922,1115 'app':83,129,173,331,343,937 'applic':576,826,890 'architectur':1077 'array':1032 'audit':1158 'automat':553 'autorest':316,1112 'awr':408,1139 'backtrac':268,271,483,662,907,910 'base':42,57,293,337 'baselin':1264 'bash':1289 'basic':289 'begin':323,817 'bind':48,97,457,508,627,684 'bodi':778 'boundari':616 'build':1036 'bulk':373,599,1078 'c/c':1026 'cach':1081 'call':707,925,1192 'caller':584,613 'capac':39 'captur':258 'case':1303 'catalog':1131 'chang':551 'checkpoint':498,618 'choos':428 'cid':109,110 'claus':1070 'client':52,78,1035,1203 'cloud':1175 'code':622,1016 'collect':297,374 'collect/forall':600,1079 'column':678 'commit':606 'complet':504 'concaten':514,633,691 'concept':354 'configur':53,639 'conn':80,146,179,966 'conn.commit':985 'conn.cursor':92,148,968 'conn.preparestatement':183 'connect':45,67,114,158,178,355,362,445,454,521,636,712,929,1094 'connections.md':358,365 'consid':501 'constant':738 'contain':19,56,397,1039,1231,1242 'container-bas':55 'container-registry.oracle.com':1235 'container-registry.oracle.com/ords/ocr/ba/database/free':1234 'containers.md':399 'context':603 'contract':211 'control':50,614,1176 'core':1161 'creat':117,212,444,450,523,694,720,774,1005,1257 'crud':318 'ctes':380,1067 'cur':94,150,970 'cur.callproc':975 'cur.execute':99,151 'cur.fetchall':113 'cur.var':973 'cursor':464,592 'custom':107,188,231,579,746,786,857,865,954,978,995,1113 'customers.customer':234,749,789 'cx':12 'data':43,886,1054,1109,1168 'databas':7,28,36,1152,1210,1225 'database/free':1233 'datatyp':1219 'dba':1162 'dbms':422,1137,1159 'dbms_utility.format':269,274,908,913 'ddl':550 'def':951 'default':432,569 'deliv':620 'depend':572 'dependency-fre':571 'detail':1013,1306 'dev/test':398 'dev/test/ci':62 'develop':1074 'devop':1183 'diagnost':257 'discoveri':1126 'distanc':1056 'dml':1128 'doc':1205,1212 'docs.oracle.com':1199,1222,1246 'docs.oracle.com/en/database/':1221 'docs.oracle.com/en/database/oracle/oracle-database/19/lnoci/index.html':1198 'docs.oracle.com/en/database/oracle/property-graph/25.3/spgdg/quick-start-graph-server-26ai-lite-container.html':1245 'docs.podman.io':1252,1260 'docs.podman.io/en/latest/markdown/podman-run.1.html':1251 'docs.podman.io/en/latest/markdown/podman-secret-create.1.html':1259 'document':1022 'drcp':1104 'driver':17 'dsn':87,133,941 'dual':155 'dualiti':394,1091 'duplic':1274 'ebr':421,1187 'edg':1302 'enabl':317,327,463 'end':251,344,771,838,917,920 'endpoint':319 'enterpris':1171 'environ':63 'error':270,275,482,485,577,580,704,827,891,909,914,1130 'etc':657 'exampl':692,1017 'exceed':832 'except':254,259,479,534,659,883 'execut':46 'explain':406,1135 'f':1004 'featur':651,1147 'fetch':47 'fetch/bind':1033 'flashback':1071 'flyway':1186 'focus':1296 'follow':1021 'foral':375 'format':481,484 'found':887,898 'free':402,573,1211,1226 'function':1057,1090 'gateway':1118 'gc':735,821,835 'general':1278 'generic':1269 'get':304 'github.com':1281,1287,1291 'github.com/cofin/flow/blob/main/templates/styleguides/databases/oracle_sqlplus.md)':1286 'github.com/cofin/flow/blob/main/templates/styleguides/general.md)':1280 'github.com/cofin/flow/blob/main/templates/styleguides/languages/bash.md)':1290 'graph':1239 'guardrail':505 'guid':1014,1196 'handl':255,705,1030 'handler':303,309,388,660,682 'host.example.com:1521':89,135,943 'host.example.com:1521/freepdb1':88,134,942 'hub':1178 'hygien':1037 'id':102,108,189,202,221,225,232,235,246,249,300,686,729,733,747,750,754,757,766,769,787,790,794,797,806,809,850,853,858,860,866,869,878,882,896,955,958,972,979,981,984,992,996,999,1009 'identifi':348 'imag':1042 'implement':426 'implicit':591 'import':72,160,931 'increment':141,643,949 'index':409,416,1011,1059,1140 'initi':649 'inject':468 'insert':313,854 'insid':607 'install/config':1204 'instant':51,77,1034,1202 'int':956,959,961,962,987 'integ':740,763,803 'integr':1027,1149,1305 'interfac':1193 'item':238,241,302,737,823,837 'ivf/hnsw':415,1058 'java':156,159,364 'jdbc':157,167,366,1100 'json':389,392,1083,1087 'json.md':391 'keep':1293 'kerbero':440,562,656 'key':203,353 'language/framework':1270 'ldap':442,563 'let':611 'lifetim':124 'limit':833 'liquibas':420,1148,1185 'lite':1241 'log':282,478,536,661 'log_pkg.error':263,902 'manag':719,1031,1166,1172 'map':335,341 'max':139,642,736,822,836,947 'mcp':1150 'merg':381,1068 'messag':265,904 'migrat':21,418,1182 'min':137,641,945 'minim':602 'mode':70,75,430,436,556,567,646 'model':382,1069 'modul':291,386 'monitor':1180 'multi':595 'multi-row':594 'name':511,630 'need':351,559 'never':283,449,513,537,589,605 'new':164,990,1007 'node':1102 'node-oracledb':1101 'oauth2':1116 'oci':16,41,1025 'oci-bas':40 'od':163 'ods.getconnection':180 'ods.setpassword':175 'ods.seturl':166 'ods.setuser':172 'oem':1174 'offici':1189 'oper':390,529,597,1040 'ora':1129 'oracl':1,6,8,13,18,27,35,58,168,621,1062,1085,1107,1119,1170,1191,1201,1209,1216,1224,1230,1237,1283 'oracle.jdbc.pool.oracledatasource':161 'oracledatasourc':162,165 'oracledb':14,68,73,359,932,1099,1103 'oracledb.connect':81 'oracledb.create':126,934 'oracledb.number':974 'ord':15,286,681 'order':101,105,186,201,216,220,229,240,245,248,252,700,718,724,728,744,765,768,772,779,784,805,808,856,877,881,919,921,953,971,977,983,991,994,1006,1008 'order_api.place':976 'order_id.getvalue':988 'orders.order':224,732 'ords.enable':324 'ords.md':385 'other':261,541,900 'p':230,237,244,264,267,272,326,329,333,339,745,752,759,764,785,792,799,804,819,830,851,864,867,870,874,880,894,903,906,911 'packag':207,215,372,610,716,723,777,1076 'param':510,629 'paramet':461,472,644,672 'password':85,131,939 'path':44,294,338 'pattern':205,342,350,377,1061,1064,1095,1120 'per':452,528 'per-request':451 'perform':25,403,1132,1177 'performance.md':405 'persist':1047 'pl/sql':10,204,370,471,544,609,658,671,696,715,1073,1117 'place':228,743,783,918,952,993 'placement':701 'plan':407,1136 'pls':739,762,802 'plsql.md':371 'plus':1143,1285 'podman':400,1044,1248,1254 'pool':115,118,125,127,361,446,522,524,637,713,930,933,935,1105 'pool.acquire':144,527,964 'post':310 'preparedstat':181 'prevent':467 'price':813,815,842,845,873 'principl':1279 'print':1003 'procedur':227,698,742,782,927 'process':123 'product':753,793,847,849,852,859,868,893,895,957,980,998 'products.product':756,796 'products.unit':814 'programm':1194 'propag':552 'proper':703 'properti':1238 'ps':182 'ps.executequery':196 'ps.setint':190 'public':209 'pump':1169 'python':66,71,116,357,710,923,924,1098 'python-oracledb':1097 'quantiti':760,800,820,829,831,861,871,875,960,982,1001 'queri':308,625,1072 'queu':439,561,655 'quick':64,1243 'rag':1060 'raii':1029 'rais':277,280,490,533,575,667,825,889,916 'rang':585 're':279,489,532,666 're-rais':278,488,531,665 'redact':1160 'redefinit':423 'reduc':1273 'refer':65,352,1010,1018,1024,1190,1220,1250,1258 'references/admin.md':1164 'references/agent_patterns.md':1124 'references/connections.md':1096 'references/containers.md':1041 'references/json.md':1086 'references/oci.md':1028 'references/oem.md':1173 'references/ords.md':1111 'references/performance.md':1134 'references/plsql.md':1075 'references/schema_migrations.md':1184 'references/security.md':1154 'references/sql_patterns.md':1065 'references/sqlplus.md':1145 'references/vectors.md':1052 'registri':1232 'replac':214,722,776 'request':453 'requir':79,652 'rest':287,383,1108,1114 'result':1080 'resultset':194 'return':314,876,986 'reus':121 'reusabl':608 'rman':1167 'row':112,596 'rowtyp':476,548 'rs':195 'rs.getint':200 'rs.next':198 'rule':1271 'run':494,1045,1249 'safe':1127 'schema':20,322,325,330,417,1125,1181 'schema_migrations.md':419 'search':411,1051 'secret':86,132,176,940,1256 'secret-cr':1255 'secur':22,1153 'select':100,152,184,307,840,1043 'server':1151 'servic':1110 'shard':565 'share':465,1262,1266 'silent':284,538,669 'singl':301 'size':1106 'skill':31,1277,1295 'skill-oracle' 'sourc':689 'source-cofin' 'spec':208 'specif':1300 'sql':9,206,315,376,517,583,688,714,1063,1142,1179,1217,1284 'sql/json':1089 'sql_patterns.md':378 'sqlcl':1144,1146 'sqlerrm':266,905 'sqlplus':11 'stack':273,276,486,663,912,915 'start':1244 'startup':120,448,526 'step':346,424,491 'storag':1088 'store':697 'strategi':1048,1141 'string':518,632 'styleguid':1263,1267 'subtyp':219,727 'swallow':285,539,670 'switch':604 'syntax':512 'sysdat':153 'system.out.println':199 'tab':242 'tabl':677 'tapi':1082 'task':693 'tde':1156 'templat':295,298,387 'text':290 'thick':435,555,645 'thin':69,74,169,367,429,566 'thin/thick':360 'tool':1299 'tool-specif':1298 'topic-agent-skills' 'topic-ai-agents' 'topic-beads' 'topic-claude-code' 'topic-codex' 'topic-cursor' 'topic-developer-tools' 'topic-gemini-cli' 'topic-opencode' 'topic-plugin' 'topic-slash-commands' 'topic-spec-driven-development' 'total':103,862 'transact':49,615 'tri':177,193 'true':328 'tune':26,404,1133 'type':226,236,336,414,473,475,545,547,673,680,734,751,758,791,798,816,1055 'ucp':368 'unifi':1157 'unit':841 'url':334,340 'usag':989 'use':2,29,96,434,456,507,520,546,554,574,590,598,626,683,1265 'user':82,84,128,130,174,332,936,938,1165 'utplsql':1188 'v':812,844,872 'valid':493,497,617 'valu':393,462,515,635,863 'variabl':98,458,509,628,685 'vector':23,413,1050,1053 'vector/ai':410 'vectors.md':412 'verifi':623 'view':395,1092 'visibl':581 'vpd':1155 'work':4,33,503 'workflow':60,345,1046,1301 'write':369 'www.oracle.com':1207,1214,1228 'www.oracle.com/database/free/':1227 'www.oracle.com/database/free/get-started/':1213 'www.oracle.com/database/technologies/instant-client.html':1206 'xplan':1138","prices":[{"id":"183944d0-dcfe-47b9-8366-20916a47c559","listingId":"9a1f1448-1c1f-41ba-b377-1ed4dbc21c64","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"cofin","category":"flow","install_from":"skills.sh"},"createdAt":"2026-04-23T13:04:00.342Z"}],"sources":[{"listingId":"9a1f1448-1c1f-41ba-b377-1ed4dbc21c64","source":"github","sourceId":"cofin/flow/oracle","sourceUrl":"https://github.com/cofin/flow/tree/main/skills/oracle","isPrimary":false,"firstSeenAt":"2026-04-23T13:04:00.342Z","lastSeenAt":"2026-05-18T19:07:38.175Z"}],"details":{"listingId":"9a1f1448-1c1f-41ba-b377-1ed4dbc21c64","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cofin","slug":"oracle","github":{"repo":"cofin/flow","stars":11,"topics":["agent-skills","ai-agents","beads","claude-code","codex","context-driven-development","cursor","developer-tools","gemini-cli","opencode","plugin","slash-commands","spec-driven-development","subagents","tdd","workflow"],"license":"apache-2.0","html_url":"https://github.com/cofin/flow","pushed_at":"2026-04-27T19:07:26Z","description":"Context-Driven Development toolkit for AI agents — spec-first planning, TDD workflow, and Beads integration.","skill_md_sha":"b4eaa9cba1d1ac13b650160998cacc35d94dd4b8","skill_md_path":"skills/oracle/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cofin/flow/tree/main/skills/oracle"},"layout":"multi","source":"github","category":"flow","frontmatter":{"name":"oracle","description":"Use when working with Oracle Database, Oracle SQL, PL/SQL, sqlplus, cx_Oracle, oracledb, ORDS, OCI drivers, Oracle containers, schema migrations, security, vectors, or performance tuning."},"skills_sh_url":"https://skills.sh/cofin/flow/oracle"},"updatedAt":"2026-05-18T19:07:38.175Z"}}