ডিবিতে সমস্ত স্কিমার তালিকা তৈরির জন্য ওরাকল এসকিউএল ক্যোয়ারী


98

আমি আমাদের ওরাকল ডিবিতে কিছু অব্যবহৃত স্কিমা মুছে ফেলতে চেয়েছিলাম।

আমি সমস্ত স্কিমা নামের জন্য কীভাবে জিজ্ঞাসা করতে পারি?


4
আপনার "অব্যবহৃত" এর সংজ্ঞা কী?
এপিসি

আমি একটি ডেটামিগ্রেশন প্রকল্পে কাজ করছি এবং প্রতিটি বিকাশকারীর নিজস্ব স্কিমার সেট রয়েছে। (কিছু বিকাশকারী চলে গেছে এবং কিছু স্কিমা সেট আর ব্যবহার করা হয় না)।
vicsz

উত্তর:


131

স্ক্যালপ্লাস ব্যবহার করে

sqlplus / হিসাবে sysdba

চালান:

নির্বাচন করুন * 
DBA_users থেকে

আপনি কি কেবল ব্যবহারকারী নামগুলি নিম্নলিখিতটি করতে চাইবেন:

ব্যবহারকারী নাম নির্বাচন করুন 
DBA_users থেকে

4
আপনার ব্যবহারকারীকে তবে আপনার অনুমতি রয়েছে তা নিশ্চিত করুন।
ডায়াগোনালব্যাটম্যান

4
@ অ্যান্ডি: সে কারণেই আমি "সুবিধাবঞ্চিত ব্যবহারকারী হিসাবে" লিখেছি;)
এ_ ঘোড়া_বিহীন_নো নাম

@ ঘোড়া ক্ষমা চেয়ে আমি মিস করেছি
ডায়াগোনালব্যাটম্যান

@a_horse_with_no_name এর অর্থ কী ওরাকলে স্কিমার অর্থ এটি একজন ব্যবহারকারী? মানে স্কিমা = ইউজার? এবং যে ব্যবহারকারীর অধীনে সমস্ত টেবিলগুলি মাইএসকিউএল এর মতো তৈরি হয়েছিল?
ওসামা আল বান্না

66

সম্ভবত, আপনি চান

SELECT username
  FROM dba_users

এটি আপনাকে সিস্টেমের সমস্ত ব্যবহারকারীকে (এবং এইভাবে সমস্ত সম্ভাব্য স্কিমা) দেখিয়ে দেবে। যদি আপনার "স্কিমা" সংজ্ঞাটি কোনও স্কিমা খালি রাখতে দেয় তবে আপনি এটি চান। যাইহোক, একটি অর্থগত পার্থক্য থাকতে পারে যেখানে লোকেরা কেবল কোনও কিছুকে স্কিমা বলতে চায় যদি এটি আসলে কমপক্ষে একটি অবজেক্টের মালিক হয় যাতে শত শত ব্যবহারকারীর অ্যাকাউন্টগুলি যে কোনও বস্তুর মালিকানা পাবে না তা বাদ দেওয়া হয়। এই ক্ষেত্রে

SELECT username
  FROM dba_users u
 WHERE EXISTS (
    SELECT 1
      FROM dba_objects o
     WHERE o.owner = u.username )

ধরে নিলেন যে যে কেউ স্কিমা তৈরি করেছে সে ডিফল্ট টেবিল স্পেসগুলি নির্ধারণের বিষয়ে বুদ্ধিমান ছিল এবং ধরে নেওয়া যে ওরাকল যে স্কিমাগুলিতে আপনার আগ্রহী তা নয়, আপনি ভবিষ্যতবাণীগুলিতে যোগ করে সেই স্কিমাগুলি ফিল্টার করতে পারবেন default_tablespace, অর্থাৎ

SELECT username
  FROM dba_users
 WHERE default_tablespace not in ('SYSTEM','SYSAUX')

বা

SELECT username
  FROM dba_users u
 WHERE EXISTS (
    SELECT 1
      FROM dba_objects o
     WHERE o.owner = u.username )
   AND default_tablespace not in ('SYSTEM','SYSAUX')

এটা একটা সিস্টেম যেখানে কেউ ভুল একটি অ-সিস্টেম ব্যবহারকারী একটি দিয়েছেন জুড়ে আসতে ভয়ঙ্কর বিরল নয় default_tablespaceএর SYSTEMযদিও, তাই নির্দিষ্ট করা যে অনুমানের এই ভাবে আউট ওরাকল-বিতরিত স্কিমের ফিল্টার চেষ্টা করার আগে রাখা।


ফেয়ারটোলের ক্যোয়ারী থেকে প্রিডিকেট করুন যেখানে এটির সাথে একত্রিত করুন এবং আপনার মোটামুটি নিরাপদ (SYS বা SYSTEM কোবারের সম্ভাবনা নেই) থাকবে।
কার্ল

4
কীভাবে এর থেকে আলাদা select distinct owner from dba_objects?
দাউদ ইবনে কেরেম

4
একটি পরিষ্কার ওরাকল উদাহরণে, আপনার ক্যোয়ারী, @ ডেভিড, একটি অতিরিক্ত পাবলিক মালিকের
ফলস্বরূপ

28
SELECT username FROM all_users ORDER BY username;

4
আপনার ব্যবহারকারীর সুবিধাগুলি না থাকলে খুব দরকারী dba_users(উদাহরণস্বরূপ: ত্রুটি ORA-00942 : table or view does not exist)
ডাইনি

4
তবে আউটপুটটি কি ডিবিএ_উসারস এবং অল_উসারদের মধ্যে একই?
শৈলেশ প্রতাপওয়ার

8
select distinct owner 
from dba_segments
where owner in (select username from dba_users where default_tablespace not in ('SYSTEM','SYSAUX'));

যেহেতু আমি এটি বুঝতে পেরেছি, এই কোয়েরিতে সমস্ত স্কিমা উপস্থিত হবে যা কোনও সারণী ধারণ করে। এটা কি সঠিক?
অ্যান্ড্রু স্পেন্সার

4
এটি কেবল ওরাকেলের পুরানো সংস্করণগুলিতে নির্ভরযোগ্যভাবে কাজ করবে। বিলম্বিত বিভাগটি তৈরির সাথে বিভাগ ছাড়াই কোনও অবজেক্ট থাকা সম্ভব।
জন হেলার

4

কেমন :

SQL> select * from all_users;

এটি ডিবিতে তৈরি সমস্ত ব্যবহারকারীর / স্কিমার তালিকা, তাদের আইডি এবং তারিখ ফিরিয়ে দেবে:

USERNAME                          USER_ID CREATED
------------------------------ ---------- ---------
SCHEMA1                         120 09-SEP-15
SCHEMA2                         119 09-SEP-15
SCHEMA3                         118 09-SEP-15

4

এসকিএল এর নীচে ওরাকলে থাকা সমস্ত স্কিমা তালিকাবদ্ধ করে যা ইনস্টলেশনের পরে তৈরি হয় ORACLE_MAINTAINED = 'N' ফিল্টার। এই কলামটি 12c তে নতুন।

পৃথক ব্যবহারকারীর নাম নির্বাচন করুন, ORACLE_MAINTAINED dba_users থেকে যেখানে ORACLE_MAINTAINED = 'এন';

2

নিম্নলিখিত এসকিউএল এর যে কোনও একটিই ওরাকল ডিবিতে সমস্ত স্কিমা ফিরিয়ে দেবে।

  1. select owner FROM all_tables group by owner;
  2. select distinct owner FROM all_tables;

4
এমন স্কিমা থাকতে পারে যার মধ্যে কেবলমাত্র টেবিলবিহীন অবজেক্ট রয়েছে, যা আপনার প্রশ্নের তালিকাগুলি রাখে না।
ম্যাথু ম্যাকপিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.