t8y2/dbx · error

failed to load view source for %s.%s from ALL_VIEWS: %w

Error message

failed to load view source for %s.%s from ALL_VIEWS: %w

What it means

When DBMS_METADATA is unavailable or fails, the driver falls back to reading the view body from ALL_VIEWS.TEXT. If that fallback query fails with an error other than sql.ErrNoRows (and DBMS_METADATA did not fail), the driver wraps it as 'failed to load view source ... from ALL_VIEWS'.

Source

Thrown at agents/drivers/oracle-go/main.go:3424

		return strings.TrimSpace(ddl), nil
	}

	var source string
	fallbackErr := db.QueryRow(
		"SELECT TEXT FROM ALL_VIEWS WHERE OWNER = :1 AND VIEW_NAME = :2",
		schema, viewName,
	).Scan(&source)
	if fallbackErr == nil && strings.TrimSpace(source) != "" {
		return strings.TrimSpace(source), nil
	}
	if fallbackErr != nil && !errors.Is(fallbackErr, sql.ErrNoRows) {
		if metadataErr != nil {
			return "", fmt.Errorf(
				"failed to load view source for %s.%s: DBMS_METADATA: %v; ALL_VIEWS: %w",
				schema, viewName, metadataErr, fallbackErr,
			)
		}
		return "", fmt.Errorf("failed to load view source for %s.%s from ALL_VIEWS: %w", schema, viewName, fallbackErr)
	}
	return "", fmt.Errorf("view source not found: %s.%s", schema, viewName)
}

func (s *server) buildTableDDL(schema, table string) (string, error) {
	columns, err := s.getColumns(schema, table)
	if err != nil {
		return "", err
	}
	if len(columns) == 0 {
		return "", fmt.Errorf("table not found: %s.%s", schema, table)
	}
	var builder strings.Builder
	builder.WriteString("CREATE TABLE ")
	builder.WriteString(quoteIdentifier(schema))
	builder.WriteByte('.')
	builder.WriteString(quoteIdentifier(table))
	builder.WriteString(" (\n")

View on GitHub (pinned to c0390bff16)

Solutions

  1. Grant SELECT on the relevant dictionary views (or use a more privileged connection for introspection)
  2. Set driver row-fetch settings for LONG columns or use TO_LOB/DBMS_METADATA alternative extraction
  3. Verify the connected service/schema is the intended database
  4. Handle the wrapped ORA- error directly if it indicates a specific catalog issue

Example fix

// before
SELECT text FROM all_views WHERE owner='HR' AND view_name='V'; // ORA-00932 LONG column issue
// after
SELECT TO_LOB(text) FROM all_views WHERE owner='HR' AND view_name='V'; // or use DBMS_METADATA path
Defensive patterns

Strategy: try-catch

Validate before calling

var txt string
err := db.QueryRow(`SELECT text FROM all_views WHERE owner=:1 AND view_name=:2`, schema, view).Scan(&txt)
if err != nil { return fmt.Errorf("precheck ALL_VIEWS read failed: %w", err) }

Try / catch

src, err := loadViewSource(s, schema, view)
if err != nil && strings.Contains(err.Error(), "from ALL_VIEWS") {
    return fmt.Errorf("dictionary access problem for %s.%s: %w", schema, view, err)
}

Prevention

When it happens

Trigger: The ALL_VIEWS SELECT fails due to privileges, connection loss, or scanning errors — commonly because TEXT is a LONG column and the row is too large, or because the view does not belong to an accessible schema.

Common situations: Restricted accounts without dictionary access; very large view definitions; driver/LOB handling issues; querying a different database than intended (wrong service name).

Related errors


AI-assisted analysis of t8y2/dbx@c0390bff16 (2026-09-05). Data as JSON: /api/errors/438fa3c40991c7b7. Report an issue: GitHub.