---
name: "snmpa_local_db"
section: "3erl"
platform: "linux"
package: "erlang-manpages"
version: "1:25.2.3+dfsg-1+deb12u4"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/snmpa_local_db"
---

# snmpa\_local\_db(3erl)

The SNMP built-in database

## NAME

snmpa\_local\_db - The SNMP built-in database

## DESCRIPTION

The module *snmpa\_local\_db* contains functions for implementing tables (and variables) using the SNMP built-in database. The database exists in two instances, one volatile and one persistent. The volatile database is implemented with ets. The persistent database is implemented with dets.

There is a scaling problem with this database.

- \*

  Insertions and deletions are inefficient for large tables.

This problem is best solved by using Mnesia instead.

The following functions describe the interface to *snmpa\_local\_db*. Each function has a Mnesia equivalent. The argument *NameDb* is a tuple *{Name, Db}* where *Name* is the symbolic name of the managed object (as defined in the MIB), and *Db* is either *volatile* or *persistent*. *mnesia* is not possible since all these functions are *snmpa\_local\_db* specific.

## COMMON DATA TYPES

In the functions defined below, the following types are used:

- \*

  *NameDb = {Name, Db}*

- \*

  *Name = atom(), Db = volatile \| persistent*

- \*

  *RowIndex = \[int()\]*

- \*

  *Cols = \[Col\] \| \[{Col, Value}\], Col = int(), Value = term()*

where *RowIndex* denotes the last part of the OID, that specifies the index of the row in the table. *Cols* is a list of column numbers in case of a get operation, and a list of column numbers and values in case of a set operation.

## EXPORTS

**dump() -\> ok \| {error, Reason}**\

Types:

Reason = term()\

This function can be used to manually dump the database to file.

**match(NameDb, Pattern)**\

Performs an ets/dets matching on the table. See Stdlib documentation, module ets, for a description of *Pattern* and the return values.

**print()**\
 **print(TableName)**\
 **print(TableName, Db)**\

Types:

TableName = atom()\

Prints the contents of the database on screen. This is useful for debugging since the *STANDARD-MIB* and *OTP-SNMPEA-MIB* (and maybe your own MIBs) are stored in *snmpa\_local\_db*.

*TableName* is an atom for a table in the database. When no name is supplied, the whole database is shown.

**table\_create(NameDb) -\> bool()**\

Creates a table. If the table already exist, the old copy is destroyed.

Returns *false* if the *NameDb* argument is incorrectly specified, *true* otherwise.

**table\_create\_row(NameDb, RowIndex, Row) -\> bool()**\

Types:

Row = {Val1, Val2, ..., ValN}\
 Val1 = Val2 = ... = ValN = term()\

Creates a row in a table. *Row* is a tuple with values for all columns, including the index columns.

**table\_delete(NameDb) -\> void()**\

Deletes a table.

**table\_delete\_row(NameDb, RowIndex) -\> bool()**\

Deletes the row in the table.

**table\_exists(NameDb) -\> bool()**\

Checks if a table exists.

**table\_get\_row(NameDb, RowIndex) -\> Row \| undefined**\

Types:

Row = {Val1, Val2, ..., ValN}\
 Val1 = Val2 = ... = ValN = term()\

*Row* is a tuple with values for all columns, including the index columns.

## SEE ALSO

[ets(3erl)](/ets/3erl.md), [dets(3erl)](/dets/3erl.md), [snmp\_generic(3erl)](/snmp_generic/3erl.md)
