For instance, USER1, USER2, and USER3 are the database accounts that contain private links, and executing the procedure will result in the removal of those private database links.
Run below procedure as SYS user.
SET SERVEROUTPUT ON
SET FEEDBACK OFF
SET ECHO OFF
DECLARE
l_sql_stmt VARCHAR2(1000);
BEGIN
-- Iterate through all private database links
FOR link_rec IN (SELECT owner, db_link
FROM dba_db_links
WHERE owner IN ('USER1', 'USER2', 'USER3')
ORDER BY owner, db_link)
LOOP
-- Create a temporary procedure to drop the link
l_sql_stmt := 'CREATE OR REPLACE PROCEDURE ' || link_rec.owner || '.drop_temp_link AS
BEGIN
EXECUTE IMMEDIATE ''DROP DATABASE LINK "' || link_rec.db_link || '"'';
END;';
EXECUTE IMMEDIATE l_sql_stmt;
-- Execute the temporary procedure
l_sql_stmt := 'BEGIN ' || link_rec.owner || '.drop_temp_link; END;';
EXECUTE IMMEDIATE l_sql_stmt;
-- Drop the temporary procedure
l_sql_stmt := 'DROP PROCEDURE ' || link_rec.owner || '.drop_temp_link';
EXECUTE IMMEDIATE l_sql_stmt;
DBMS_OUTPUT.PUT_LINE('Dropped database link ' || link_rec.owner || '."' || link_rec.db_link || '"');
END LOOP;
END;
/
SET FEEDBACK ON
SET ECHO ON
SET FEEDBACK OFF
SET ECHO OFF
DECLARE
l_sql_stmt VARCHAR2(1000);
BEGIN
-- Iterate through all private database links
FOR link_rec IN (SELECT owner, db_link
FROM dba_db_links
WHERE owner IN ('USER1', 'USER2', 'USER3')
ORDER BY owner, db_link)
LOOP
-- Create a temporary procedure to drop the link
l_sql_stmt := 'CREATE OR REPLACE PROCEDURE ' || link_rec.owner || '.drop_temp_link AS
BEGIN
EXECUTE IMMEDIATE ''DROP DATABASE LINK "' || link_rec.db_link || '"'';
END;';
EXECUTE IMMEDIATE l_sql_stmt;
-- Execute the temporary procedure
l_sql_stmt := 'BEGIN ' || link_rec.owner || '.drop_temp_link; END;';
EXECUTE IMMEDIATE l_sql_stmt;
-- Drop the temporary procedure
l_sql_stmt := 'DROP PROCEDURE ' || link_rec.owner || '.drop_temp_link';
EXECUTE IMMEDIATE l_sql_stmt;
DBMS_OUTPUT.PUT_LINE('Dropped database link ' || link_rec.owner || '."' || link_rec.db_link || '"');
END LOOP;
END;
/
SET FEEDBACK ON
SET ECHO ON