import cx_Oracle
# Database connection parameters
dsn = cx_Oracle.makedsn('host', 'port', sid='sid') # Replace 'host', 'port', and 'sid'
username = 'your_username' # Enter your username
password = 'your_password' # Enter your password
# SQL to retrieve list of partitions
sql_list_partitions = """
SELECT owner, table_name, partition_name
FROM all_tab_statistics
WHERE partition_name IS NOT NULL
"""
# SQL to update table statistics for a specific partition
sql_update_stats = """
BEGIN
DBMS_STATS.GATHER_TABLE_STATS(
ownname => :1,
tabname => :2,
partname => :3,
cascade => TRUE
);
END;
"""
try:
# Establish a database connection
with cx_Oracle.connect(username, password, dsn) as connection:
cursor = connection.cursor()
# Retrieve list of partitions
cursor.execute(sql_list_partitions)
partitions = cursor.fetchall()
# Update statistics for each partition
for owner, table_name, partition_name in partitions:
print(f"Updating statistics for partition: {owner}.{table_name} Partition: {partition_name}")
cursor.execute(sql_update_stats, [owner, table_name, partition_name])
print("Completed updating statistics for all partitions.")
except cx_Oracle.Error as error:
print(f"Error: {error}")