Oracle 知识基座。覆盖 Connection Types、JDBC Driver、Connection Pool、LOB Handling、Character Set、SQL Dialect。供 devlab-oracle-usage 通过 extends 继承。
Scanned 9/4/2026
Install to Claude Code
npx -y skills add seed-forge/harness-ai-kit --skill public-oracle-expert-base --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Public Oracle Expert Base?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/seed-forge-public-oracle-expert-base)More formats (shields.io, HTML) on the badges page.
---
name: public-oracle-expert-base
description: Oracle 知识基座。覆盖 Connection Types、JDBC Driver、Connection Pool、LOB Handling、Character Set、SQL Dialect。供 devlab-oracle-usage 通过 extends 继承。
---
# Oracle Database Knowledge Base
> **Source**: Compiled from Oracle official documentation, JDBC best practices, and common integration patterns.
## Connection Types
| Format | Example | Status |
|--------|---------|--------|
| Service Name | `jdbc:oracle:thin:@//host:port/service_name` | **Recommended** |
| SID (legacy) | `jdbc:oracle:thin:@host:port:SID` | Legacy, avoid |
| TNS | `jdbc:oracle:thin:@tns_alias` | Enterprise with tnsnames.ora |
| EZConnect | `jdbc:oracle:thin:@host:port/service_name` | Simple, no config file |
- **Always prefer Service Name** over SID for new projects.
- Easy Connect Plus (19c+): `jdbc:oracle:thin:@tcp://host:port/service_name?wallet_location=/path`.
## JDBC Driver
| Type | Description | When to use |
|------|-------------|-------------|
| Thin (Type 4) | Pure Java, no Oracle client | **Default choice** |
| Thick (OCI, Type 2) | Requires Oracle Client | Advanced features (TAF, Advanced Queuing) |
| UCP | Universal Connection Pool | Production pooling |
- Thin driver is sufficient for 95% of use cases.
- Use `ojdbc8.jar` for JDK 8+, `ojdbc11.jar` for JDK 11+.
- Add `orai18n.jar` for internationalization support.
## Connection Pool
| Pool | Recommended for |
|------|----------------|
| UCP (Oracle) | Oracle-specific features, best performance |
| HikariCP | Spring Boot, general-purpose, simpler config |
HikariCP config for Oracle:
```properties
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@//host:1521/service_name
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.connection-timeout=5000
spring.datasource.hikari.idle-timeout=300000
spring.datasource.hikari.connection-test-query=SELECT 1 FROM DUAL
```
## LOB Handling
- `CLOB` for large text (>4000 chars); `BLOB` for binary data.
- Use `setStringForClob()` / `setBinaryStream()` for inserts.
- For reads, use `getCharacterStream()` / `getBinaryStream()` — avoid `getString()` on large CLOBs.
- LOB locator vs data: `oracle.jdbc.useStreamForLobOutput=true` for streaming writes.
## Character Set
- **AL32UTF8** is the recommended database character set (Unicode).
- JDBC driver auto-detects charset from database; no client-side config needed.
- Verify: `SELECT value FROM nls_database_parameters WHERE parameter='NLS_CHARACTERSET';`
## SQL Dialect Differences (vs MySQL/PostgreSQL)
| Feature | Oracle | MySQL/PostgreSQL |
|---------|--------|-----------------|
| Auto-increment | `SEQUENCE` + `TRIGGER` or `IDENTITY` (12c+) | `AUTO_INCREMENT` / `SERIAL` |
| LIMIT | `FETCH FIRST n ROWS ONLY` (12c+) or `ROWNUM` | `LIMIT n` |
| String concat | `||` operator | `CONCAT()` / `||` |
| Date functions | `SYSDATE`, `ADD_MONTHS()`, `MONTHS_BETWEEN()` | `NOW()`, `DATE_ADD()` |
| Boolean | No native BOOLEAN in SQL (use NUMBER(1)) | Native `BOOLEAN` |
| Outer join syntax | `(+)` legacy or ANSI `LEFT JOIN` | ANSI `LEFT JOIN` |
## Oracle Wallet
- Wallet stores credentials for mutual TLS authentication.
- Location: set `oracle.net.wallet_location` in connection properties.
- For Autonomous Database: download wallet zip, extract to directory, reference in connection string.
## Guardrails
- Use Service Name format, not SID.
- Always use connection pooling (UCP or HikariCP).
- Use bind variables (prepared statements) — never string concatenation for SQL.
- Set `oracle.jdbc.ReadTimeout` and `oracle.net.CONNECT_TIMEOUT`.
- For LOBs >4KB, always use streaming API.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!