আমি কীভাবে ওরাকলে সমস্ত ব্যবহারকারীর টেবিলগুলি ফেলে দিতে পারি?
আমার বাধা নিয়ে সমস্যা আছে have আমি যখন সমস্ত অক্ষম করি তখনও এটি সম্ভব হয় না।
আমি কীভাবে ওরাকলে সমস্ত ব্যবহারকারীর টেবিলগুলি ফেলে দিতে পারি?
আমার বাধা নিয়ে সমস্যা আছে have আমি যখন সমস্ত অক্ষম করি তখনও এটি সম্ভব হয় না।
উত্তর:
BEGIN
FOR cur_rec IN (SELECT object_name, object_type
FROM user_objects
WHERE object_type IN
('TABLE',
'VIEW',
'MATERIALIZED VIEW',
'PACKAGE',
'PROCEDURE',
'FUNCTION',
'SEQUENCE',
'SYNONYM',
'PACKAGE BODY'
))
LOOP
BEGIN
IF cur_rec.object_type = 'TABLE'
THEN
EXECUTE IMMEDIATE 'DROP '
|| cur_rec.object_type
|| ' "'
|| cur_rec.object_name
|| '" CASCADE CONSTRAINTS';
ELSE
EXECUTE IMMEDIATE 'DROP '
|| cur_rec.object_type
|| ' "'
|| cur_rec.object_name
|| '"';
END IF;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('FAILED: DROP '
|| cur_rec.object_type
|| ' "'
|| cur_rec.object_name
|| '"'
);
END;
END LOOP;
FOR cur_rec IN (SELECT *
FROM all_synonyms
WHERE table_owner IN (SELECT USER FROM dual))
LOOP
BEGIN
EXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM ' || cur_rec.synonym_name;
END;
END LOOP;
END;
/
আপনি যদি এটি করার জন্য খুব সহজ উপায় চান তবে .. আমি অতীতে ব্যবহৃত একটি স্ক্রিপ্ট এখানে
select 'drop table '||table_name||' cascade constraints;' from user_tables;
এটি স্কিমাতে সমস্ত টেবিলের জন্য ড্রপ কমান্ডের একটি সিরিজ মুদ্রণ করবে। এই ক্যোয়ারির ফলাফলটি স্পুল করুন এবং এটি সম্পাদন করুন।
সূত্র: https://forums.oracle.com/forums/thread.jspa?threadID=614090
একইভাবে আপনি যদি টেবিলের চেয়ে বেশি সাফ করতে চান তবে আপনার প্রয়োজন অনুসারে নিম্নলিখিত সম্পাদনা করতে পারেন
select 'drop '||object_type||' '|| object_name || ';' from user_objects where object_type in ('VIEW','PACKAGE','SEQUENCE', 'PROCEDURE', 'FUNCTION', 'INDEX')
আমার পক্ষে কাজ করা আর একটি উত্তর হ'ল ( http://snipt.net/Fotinakis/DP-all-tables-and-constraints-within-an-oracle-schema/ এর ক্রেডিট )
BEGIN
FOR c IN (SELECT table_name FROM user_tables) LOOP
EXECUTE IMMEDIATE ('DROP TABLE "' || c.table_name || '" CASCADE CONSTRAINTS');
END LOOP;
FOR s IN (SELECT sequence_name FROM user_sequences) LOOP
EXECUTE IMMEDIATE ('DROP SEQUENCE ' || s.sequence_name);
END LOOP;
END;
নোট যে এই কাজ করে অবিলম্বে আপনি এটি চালানোর পর। এটি এমন কোনও স্ক্রিপ্ট তৈরি করে না যা আপনাকে অন্য কোথাও আটকাতে হবে (অন্য উত্তরগুলির মতো এখানে)। এটি সরাসরি ডিবিতে চলে।
'DROP TABLE "' || c.table_name || '" CASCADE CONSTRAINTS'
। এটি প্রয়োজনীয়, যদি টেবিলের নামগুলি ছোট হয়।
PURGE
শেষে যুক্ত করব DROP
।
begin
for i in (select 'drop table '||table_name||' cascade constraints' tbl from user_tables)
loop
execute immediate i.tbl;
end loop;
end;
সহজ উপায় হ'ল ক্যাসকেড কমান্ডের সাহায্যে ব্যবহারকারীকে ফেলে দেওয়া।
DROP USER username CASCADE
USER
সাথে আলাদা DATABASE
। DROP USER username CASCADE
আমার জন্য কাজ। তবে মাইএসকিউএল-এ আমার যা করতে হবে তা হল DROP DATABASE
এবং একটি নতুন তৈরি করতে হবে
সবচেয়ে সহজ উপায় হ'ল টেবিলস্পেসটি ড্রপ করে টেবিল স্পেসটি ব্যাক আপ তৈরি করা। তবে আমার তা করার দরকার নেই। এটি হেনরির অনুরূপ ব্যতীত আমি আমার গিওর রেজাল্টটিতে কেবল একটি অনুলিপি / পেস্ট করি।
SELECT
'DROP'
,object_type
,object_name
,CASE(object_type)
WHEN 'TABLE' THEN 'CASCADE CONSTRAINTS;'
ELSE ';'
END
FROM user_objects
WHERE
object_type IN ('TABLE','VIEW','PACKAGE','PROCEDURE','FUNCTION','SEQUENCE')
SELECT 'DROP TABLE "' || TABLE_NAME || '" CASCADE CONSTRAINTS;'
FROM user_tables;
user_tables
একটি সিস্টেম টেবিল যা ব্যবহারকারীর সমস্ত সারণী ধারণ করে সেলেক্ট ক্লজটি আপনি স্ক্রিপ্টটি চালাতে পারবেন এমন প্রতিটি টেবিলের জন্য একটি ড্রপ বিবৃতি উত্পন্ন করবে
ওরাকলে সমস্ত বস্তু অপসারণ করতে:
1) গতিশীল
DECLARE
CURSOR IX IS
SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE ='TABLE'
AND OWNER='SCHEMA_NAME';
CURSOR IY IS
SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE
IN ('SEQUENCE',
'PROCEDURE',
'PACKAGE',
'FUNCTION',
'VIEW') AND OWNER='SCHEMA_NAME';
CURSOR IZ IS
SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE IN ('TYPE') AND OWNER='SCHEMA_NAME';
BEGIN
FOR X IN IX LOOP
EXECUTE IMMEDIATE('DROP '||X.OBJECT_TYPE||' SCHEMA_NAME.'||X.OBJECT_NAME|| ' CASCADE CONSTRAINT');
END LOOP;
FOR Y IN IY LOOP
EXECUTE IMMEDIATE('DROP '||Y.OBJECT_TYPE||' SCHEMA_NAME.'||Y.OBJECT_NAME);
END LOOP;
FOR Z IN IZ LOOP
EXECUTE IMMEDIATE('DROP '||Z.OBJECT_TYPE||' SCHEMA_NAME.'||Z.OBJECT_NAME||' FORCE ');
END LOOP;
END;
/
2) স্ট্যাটিক
SELECT 'DROP TABLE "' || TABLE_NAME || '" CASCADE CONSTRAINTS;' FROM user_tables
union ALL
select 'drop '||object_type||' '|| object_name || ';' from user_objects
where object_type in ('VIEW','PACKAGE','SEQUENCE', 'PROCEDURE', 'FUNCTION')
union ALL
SELECT 'drop '
||object_type
||' '
|| object_name
|| ' force;'
FROM user_objects
WHERE object_type IN ('TYPE');
নীচের পদক্ষেপগুলি অনুসরণ করুন।
begin
for i in (select 'drop table '||table_name||' cascade constraints' tb from user_tables)
loop
execute immediate i.tb;
end loop;
commit;
end;
purge RECYCLEBIN;