{
  "schemaVersion": "1.0",
  "item": {
    "slug": "oracle-db",
    "name": "Oracle DB",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/ivangdavila/oracle-db",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/oracle-db",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/oracle-db",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=oracle-db",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/oracle-db"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/oracle-db",
    "agentPageUrl": "https://openagent3.xyz/skills/oracle-db/agent",
    "manifestUrl": "https://openagent3.xyz/skills/oracle-db/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/oracle-db/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Syntax Differences",
        "body": "ROWNUM for limiting rows—WHERE ROWNUM <= 10; 12c+ supports FETCH FIRST 10 ROWS ONLY\nDUAL table for expressions—SELECT sysdate FROM dual\nVARCHAR2 not VARCHAR—VARCHAR is reserved, VARCHAR2 is the standard\nString concatenation with ||—not CONCAT for multiple values\nEmpty string equals NULL—'' IS NULL is true; breaks logic from other databases"
      },
      {
        "title": "Pagination",
        "body": "ROWNUM assigned before ORDER BY—wrap in subquery: SELECT * FROM (SELECT ... ORDER BY x) WHERE ROWNUM <= 10\nOffset requires nested subquery: SELECT * FROM (SELECT a.*, ROWNUM rn FROM (...) a WHERE ROWNUM <= 20) WHERE rn > 10\n12c+: OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY—cleaner, use when available"
      },
      {
        "title": "NULL Handling",
        "body": "NVL(col, default) for null replacement—faster than COALESCE for two args\nNVL2(col, if_not_null, if_null) for conditional—common Oracle pattern\nEmpty string is NULL—LENGTH('') returns NULL, not 0\nNULLIF(a, b) returns NULL if equal—useful for avoiding division by zero"
      },
      {
        "title": "Dates",
        "body": "SYSDATE for current datetime—no parentheses\nTO_DATE('2024-01-15', 'YYYY-MM-DD') for string to date—format required\nTO_CHAR(date, 'YYYY-MM-DD HH24:MI:SS') for date to string\nDate arithmetic in days—SYSDATE + 1 is tomorrow, SYSDATE + 1/24 is one hour"
      },
      {
        "title": "Sequences",
        "body": "Create: CREATE SEQUENCE seq_name START WITH 1 INCREMENT BY 1\nGet next: seq_name.NEXTVAL—SELECT seq_name.NEXTVAL FROM dual\nCurrent value: seq_name.CURRVAL—only after NEXTVAL in same session\n12c+: identity columns—GENERATED ALWAYS AS IDENTITY"
      },
      {
        "title": "Hierarchical Queries",
        "body": "CONNECT BY PRIOR child = parent for tree traversal\nSTART WITH parent IS NULL for root nodes\nLEVEL pseudo-column shows depth—WHERE LEVEL <= 3 limits depth\nSYS_CONNECT_BY_PATH(col, '/') builds path string"
      },
      {
        "title": "Bind Variables",
        "body": "Always use bind variables—literals cause hard parse every time\nPL/SQL: :variable_name syntax\nPerformance critical—literal values fill shared pool, cause contention\nCURSOR_SHARING=FORCE as workaround but not recommended long-term"
      },
      {
        "title": "Hints",
        "body": "/*+ INDEX(table idx_name) */ forces index use\n/*+ FULL(table) */ forces full table scan\n/*+ PARALLEL(table, 4) */ enables parallel query\nHints inside SELECT /*+ hint */—common placement after SELECT keyword"
      },
      {
        "title": "PL/SQL Blocks",
        "body": "Anonymous block: BEGIN ... END; with / on new line to execute\nDBMS_OUTPUT.PUT_LINE() for debug output—SET SERVEROUTPUT ON first\nException handling: EXCEPTION WHEN OTHERS THEN—always handle or log\nEXECUTE IMMEDIATE 'sql string' for dynamic SQL—beware injection"
      },
      {
        "title": "Transactions",
        "body": "No auto-commit by default—must COMMIT explicitly\nSAVEPOINT name then ROLLBACK TO name for partial rollback\nDDL auto-commits—CREATE TABLE commits any pending transaction\nSELECT FOR UPDATE WAIT 5 waits 5 seconds for lock—avoids indefinite hang"
      },
      {
        "title": "Performance",
        "body": "EXPLAIN PLAN FOR sql; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY)—shows plan\nV$SQL and V$SESSION for monitoring—requires privileges\nAvoid SELECT *—fetches all columns including LOBs\nIndex hint when optimizer chooses wrong—/*+ INDEX(t idx) */"
      },
      {
        "title": "Common Traps",
        "body": "MINUS instead of EXCEPT—Oracle uses MINUS for set difference\nDECODE is Oracle-specific—use CASE for portability\nImplicit type conversion—WHERE num_col = '123' works but prevents index use\nROWID is physical—don't store or rely on across transactions"
      }
    ],
    "body": "Syntax Differences\nROWNUM for limiting rows—WHERE ROWNUM <= 10; 12c+ supports FETCH FIRST 10 ROWS ONLY\nDUAL table for expressions—SELECT sysdate FROM dual\nVARCHAR2 not VARCHAR—VARCHAR is reserved, VARCHAR2 is the standard\nString concatenation with ||—not CONCAT for multiple values\nEmpty string equals NULL—'' IS NULL is true; breaks logic from other databases\nPagination\nROWNUM assigned before ORDER BY—wrap in subquery: SELECT * FROM (SELECT ... ORDER BY x) WHERE ROWNUM <= 10\nOffset requires nested subquery: SELECT * FROM (SELECT a.*, ROWNUM rn FROM (...) a WHERE ROWNUM <= 20) WHERE rn > 10\n12c+: OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY—cleaner, use when available\nNULL Handling\nNVL(col, default) for null replacement—faster than COALESCE for two args\nNVL2(col, if_not_null, if_null) for conditional—common Oracle pattern\nEmpty string is NULL—LENGTH('') returns NULL, not 0\nNULLIF(a, b) returns NULL if equal—useful for avoiding division by zero\nDates\nSYSDATE for current datetime—no parentheses\nTO_DATE('2024-01-15', 'YYYY-MM-DD') for string to date—format required\nTO_CHAR(date, 'YYYY-MM-DD HH24:MI:SS') for date to string\nDate arithmetic in days—SYSDATE + 1 is tomorrow, SYSDATE + 1/24 is one hour\nSequences\nCreate: CREATE SEQUENCE seq_name START WITH 1 INCREMENT BY 1\nGet next: seq_name.NEXTVAL—SELECT seq_name.NEXTVAL FROM dual\nCurrent value: seq_name.CURRVAL—only after NEXTVAL in same session\n12c+: identity columns—GENERATED ALWAYS AS IDENTITY\nHierarchical Queries\nCONNECT BY PRIOR child = parent for tree traversal\nSTART WITH parent IS NULL for root nodes\nLEVEL pseudo-column shows depth—WHERE LEVEL <= 3 limits depth\nSYS_CONNECT_BY_PATH(col, '/') builds path string\nBind Variables\nAlways use bind variables—literals cause hard parse every time\nPL/SQL: :variable_name syntax\nPerformance critical—literal values fill shared pool, cause contention\nCURSOR_SHARING=FORCE as workaround but not recommended long-term\nHints\n/*+ INDEX(table idx_name) */ forces index use\n/*+ FULL(table) */ forces full table scan\n/*+ PARALLEL(table, 4) */ enables parallel query\nHints inside SELECT /*+ hint */—common placement after SELECT keyword\nPL/SQL Blocks\nAnonymous block: BEGIN ... END; with / on new line to execute\nDBMS_OUTPUT.PUT_LINE() for debug output—SET SERVEROUTPUT ON first\nException handling: EXCEPTION WHEN OTHERS THEN—always handle or log\nEXECUTE IMMEDIATE 'sql string' for dynamic SQL—beware injection\nTransactions\nNo auto-commit by default—must COMMIT explicitly\nSAVEPOINT name then ROLLBACK TO name for partial rollback\nDDL auto-commits—CREATE TABLE commits any pending transaction\nSELECT FOR UPDATE WAIT 5 waits 5 seconds for lock—avoids indefinite hang\nPerformance\nEXPLAIN PLAN FOR sql; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY)—shows plan\nV$SQL and V$SESSION for monitoring—requires privileges\nAvoid SELECT *—fetches all columns including LOBs\nIndex hint when optimizer chooses wrong—/*+ INDEX(t idx) */\nCommon Traps\nMINUS instead of EXCEPT—Oracle uses MINUS for set difference\nDECODE is Oracle-specific—use CASE for portability\nImplicit type conversion—WHERE num_col = '123' works but prevents index use\nROWID is physical—don't store or rely on across transactions"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ivangdavila/oracle-db",
    "publisherUrl": "https://clawhub.ai/ivangdavila/oracle-db",
    "owner": "ivangdavila",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/oracle-db",
    "downloadUrl": "https://openagent3.xyz/downloads/oracle-db",
    "agentUrl": "https://openagent3.xyz/skills/oracle-db/agent",
    "manifestUrl": "https://openagent3.xyz/skills/oracle-db/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/oracle-db/agent.md"
  }
}