dba_databaseSpace
Retrieve database space allocations for a specific database or view all databases' space usage to monitor storage capacity and manage database resources effectively.
Instructions
Get database space if database name is provided, otherwise get all databases space allocations.
Arguments: database_name - database name
Returns: ResponseType: formatted response with query results + metadata
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| database_name | Yes |
Implementation Reference
- The core handler function implementing the 'dba_databaseSpace' tool. It queries the DBC.DiskSpaceV view to retrieve space allocation, usage, free space, and percentage used for specified or all databases, formats the results, and returns a response with metadata.def handle_dba_databaseSpace(conn: TeradataConnection, database_name: str | None | None, *args, **kwargs): """ Get database space if database name is provided, otherwise get all databases space allocations. Arguments: database_name - database name Returns: ResponseType: formatted response with query results + metadata """ logger.debug(f"Tool: handle_dba_databaseSpace: Args: database_name: {database_name}") database_name_filter = f"AND objectdatabasename = '{database_name}'" if database_name else "" with conn.cursor() as cur: if not database_name: logger.debug("No database name provided, returning all databases and space information.") rows = cur.execute(""" SELECT DatabaseName, CAST(SUM(MaxPerm)/1024/1024/1024 AS DECIMAL(10,2)) AS SpaceAllocated_GB, CAST(SUM(CurrentPerm)/1024/1024/1024 AS DECIMAL(10,2)) AS SpaceUsed_GB, CAST((SUM(MaxPerm) - SUM(CurrentPerm))/1024/1024/1024 AS DECIMAL(10,2)) AS FreeSpace_GB, CAST((SUM(CurrentPerm) * 100.0 / NULLIF(SUM(MaxPerm),0)) AS DECIMAL(10,2)) AS PercentUsed FROM DBC.DiskSpaceV WHERE MaxPerm > 0 GROUP BY 1 ORDER BY 5 DESC; """) else: logger.debug(f"Database name: {database_name}, returning space information for this database.") rows = cur.execute(f""" SELECT DatabaseName, CAST(SUM(MaxPerm)/1024/1024/1024 AS DECIMAL(10,2)) AS SpaceAllocated_GB, CAST(SUM(CurrentPerm)/1024/1024/1024 AS DECIMAL(10,2)) AS SpaceUsed_GB, CAST((SUM(MaxPerm) - SUM(CurrentPerm))/1024/1024/1024 AS DECIMAL(10,2)) AS FreeSpace_GB, CAST((SUM(CurrentPerm) * 100.0 / NULLIF(SUM(MaxPerm),0)) AS DECIMAL(10,2)) AS PercentUsed FROM DBC.DiskSpaceV WHERE MaxPerm > 0 AND DatabaseName = '{database_name}' GROUP BY 1; """) data = rows_to_json(cur.description, rows.fetchall()) metadata = { "tool_name": "dba_databaseSpace", "database_name": database_name, "total_databases": len(data) } logger.debug(f"Tool: handle_dba_databaseSpace: metadata: {metadata}") return create_response(data, metadata)