मुझे लगता है कि बाधाओं और अनुक्रमितों के वांछित नाम प्राप्त करने का कोई सीधा तरीका नहीं है, लेकिन हाँ आप इसे निम्नलिखित के रूप में थोड़े से मैन्युअल कार्य के साथ प्राप्त कर सकते हैं।
सबसे पहले, आप निम्न आदेश का उपयोग करके बाधा नाम बदल सकते हैं:
alter table <table_name> rename constraint <constarint_name> to <new_constarint_name>;
इसी तरह, आप निम्न कमांड का उपयोग करके इंडेक्स का नाम बदल सकते हैं:
ALTER INDEX <index_name> RENAME TO <new_index_name>;
आपके मामले में, आपको खराब (बाधाओं/अनुक्रमणिका) नामों को सही नामों से जोड़ने के लिए किसी तरह की आवश्यकता है। और फिर सही नाम के साथ बाधाओं/अनुक्रमणिका का नाम बदलें। इसे प्राप्त करने के लिए, आप निम्न चरणों का प्रयास कर सकते हैं। (मैं बाधाओं के लिए उदाहरण दे रहा हूं, आप इसे इंडेक्स के लिए प्राप्त कर सकते हैं)
- चरण 1
बाधा नाम और उनका डेटा उत्पादन DB . से प्राप्त करें निम्न क्वेरी का उपयोग करके और बैकअप DB में एक तालिका बनाएं उस डेटा का उपयोग करना। (आप SQL Loader
का उपयोग कर सकते हैं या External table
इसके लिए।) इस तालिका का नाम PROD_DB_CONS
. दें
SELECT
C.TABLE_NAME,
C.CONSTRAINT_NAME,
C.CONSTRAINT_TYPE,
LISTAGG(CC.COLUMN_NAME, ',') WITHIN GROUP(
ORDER BY
COLUMN_NAME
) CONS_COLUMNS
FROM
USER_CONSTRAINTS C
JOIN USER_CONS_COLUMNS CC ON ( C.CONSTRAINT_NAME = CC.CONSTRAINT_NAME )
GROUP BY
C.TABLE_NAME,
C.CONSTRAINT_NAME,
C.CONSTRAINT_TYPE;
- चरण 2
बैकअप DB . में उसी प्रकार की तालिका बनाएं निम्नलिखित क्वेरी का उपयोग करना:
CREATE TABLE BACKUP_DB_CONS AS
SELECT
C.TABLE_NAME,
C.CONSTRAINT_NAME,
C.CONSTRAINT_TYPE,
LISTAGG(CC.COLUMN_NAME, ',') WITHIN GROUP(
ORDER BY
COLUMN_NAME
) CONS_COLUMNS
FROM
USER_CONSTRAINTS C
JOIN USER_CONS_COLUMNS CC ON ( C.CONSTRAINT_NAME = CC.CONSTRAINT_NAME )
GROUP BY
C.TABLE_NAME,
C.CONSTRAINT_NAME,
C.CONSTRAINT_TYPE;
- चरण 3
बैकअप डीबी में निम्न क्वेरी निष्पादित करें जो उत्पादन डीबी की सभी बाधाओं के नाम को बदलने के लिए आदेशों की एक श्रृंखला उत्पन्न करेगा
SELECT
'ALTER TABLE '
|| B.TABLE_NAME
|| ' RENAME CONSTRAINT '
|| P.CONSTRAINT_NAME
|| ' TO '
|| B.CONSTRAINT_NAME
|| ';'
FROM
BACKUP_DB_CONS B
JOIN PROD_DB_CONS P ON ( B.TABLE_NAME = P.TABLE_NAME
AND B.CONS_COLUMNS = P.CONS_COLUMNS );
- चरण 4
सभी आदेशों को कॉपी करें और उन सभी को उत्पादन DB . में निष्पादित करें ।
चीयर्स!!