ওরাকলে সব টেবিলের তালিকা পাবেন?


1102

এটিতে সমস্ত টেবিলের নাম প্রদর্শনের জন্য আমি কীভাবে ওরাকল ডাটাবেসটিকে জিজ্ঞাসা করব?


1
কি SHOW TABLESকাজ (হিসাবে মাইএসকিউএল সম্পন্ন)?
মার্টিন থোমা

1
পুনঃটুইট গুগল অবলম্বন করার আগে প্রথম চেষ্টা করেছিলেন
অ্যাডাম বারলে

উত্তর:


1364
SELECT owner, table_name
  FROM dba_tables

এটি ধরে নেওয়া হচ্ছে যে আপনার কাছে DBA_TABLESডেটা অভিধানের ভিউতে অ্যাক্সেস রয়েছে । আপনার যদি এই সুবিধাগুলি না থাকে তবে তাদের প্রয়োজন হয়, আপনি ডিবিএ স্পষ্টভাবে আপনাকে সেই টেবিলের উপর বিশেষাধিকার দেওয়ার জন্য অনুরোধ করতে পারেন, বা, ডিবিএ আপনাকে সেই SELECT ANY DICTIONARYঅধিকার বা SELECT_CATALOG_ROLEভূমিকা দেয় (যার মধ্যে কোনওটিই আপনাকে কোনও ডেটা অভিধানের টেবিলটি জিজ্ঞাসা করার অনুমতি দেয় )। অবশ্যই, আপনি কিছু নির্দিষ্ট স্কিমার মত বাদ দিতে চাইবেন SYSএবং SYSTEMযার মধ্যে প্রচুর পরিমাণে ওরাকল টেবিল রয়েছে যা আপনার সম্ভবত যত্নশীল নয়।

বিকল্পভাবে, যদি আপনার অ্যাক্সেস না থাকে তবে আপনি এই DBA_TABLESঅ্যাকাউন্টের মাধ্যমে সমস্ত অ্যাকাউন্টের অ্যাক্সেস দেখতে পাচ্ছেন তা ALL_TABLESদেখতে পারেন:

SELECT owner, table_name
  FROM all_tables

যদিও, এটি ডাটাবেসে উপলব্ধ টেবিলগুলির একটি উপসেট হতে পারে (ALL_TABLES আপনার ব্যবহারকারীর অ্যাক্সেস মঞ্জুর করা সমস্ত টেবিলের জন্য আপনাকে তথ্য দেখায়)।

যদি আপনি কেবল নিজের মালিকানাযুক্ত টেবিলগুলি নিয়েই উদ্বিগ্ন হন তবে আপনার অ্যাক্সেস রয়েছে এমনগুলি নয়, আপনি ব্যবহার করতে পারেন USER_TABLES:

SELECT table_name
  FROM user_tables

যেহেতু USER_TABLESকেবলমাত্র আপনার নিজের হাতে থাকা সারণীগুলি সম্পর্কে তথ্য রয়েছে তাই এর কোনও OWNERকলাম নেই - সংজ্ঞা অনুসারে, মালিক আপনি।

ওরাকল এছাড়াও উত্তরাধিকার ডেটার একটি সংখ্যা অভিধান views-- হয়েছে TAB, DICT, TABS, এবং CATযে example-- জন্য ব্যবহার করা যেতে পারে। সাধারণভাবে, আমি এই লিগ্যাসি ভিউগুলি ব্যবহার করার পরামর্শ দিই না যদি না আপনি যদি আপনার স্ক্রিপ্টগুলি ওরাকল back এ ব্যাকপোর্ট করার প্রয়োজন না হন তবে অরাকল দীর্ঘ সময় এই দৃষ্টিভঙ্গিগুলিকে পরিবর্তন করেনি যাতে তাদের প্রায়শই নতুন ধরণের অবজেক্টে সমস্যা হয়। উদাহরণস্বরূপ, TABএবং CATদর্শনগুলি উভয়ই সারণীগুলি সম্পর্কে তথ্য প্রদর্শন করে যা ব্যবহারকারীর পুনর্ব্যবহারযোগ্য বিনে রয়েছে এবং সমস্ত [DBA|ALL|USER]_TABLESদর্শনগুলি সেগুলি ফিল্টার করে। "টেবিল" এর একটিতে উপাদানযুক্ত CATদর্শন লগগুলি সম্পর্কিত তথ্যও দেখায় TABLE_TYPEযা আপনি যা চান তা হওয়ার সম্ভাবনা কম। DICTসারণী এবং প্রতিশব্দ একত্রিত করে এবং বস্তুর মালিকানা আপনাকে জানায় না।


8
আমি একটি ব্যতিক্রম পাচ্ছি "ORA-00942: টেবিল বা
দর্শনটির

45
তারপরে আপনাকে ডাটাবেসে সমস্ত সারণী দেখার অনুমতি দেওয়া হয়নি। আপনি যে সমস্ত টেবিলগুলিতে অ্যাক্সেসের অনুমতি পেয়েছেন তা দেখতে আপনি ALL_TABLES ডেটা অভিধান অভিধানটি জিজ্ঞাসা করতে পারেন, যা ডাটাবেসে টেবিলগুলির একটি ছোট উপসেট হতে পারে।
জাস্টিন গুহ 18

সাধারণ স্কেলপ্লাস ব্যবহারকারী না হলেও সাধারণ ভুল: আপনি যদি উপরের কমান্ডগুলি দিয়ে ফলাফল না পান তবে শেষ সেমি-কোলন যুক্ত করুন ''; ')।
গিমহানি

কেবল একটি নোট যে ওরাকল 12 সি হিসাবে, আপনার ফলাফল সেট থেকে সিস্টেম সারণীগুলি সরাতে সহায়তার জন্য dba_users ডেটা অভিধানে একটি কলাম রয়েছে। পুরো ক্যোয়ারী নির্বাচন করবেন মালিক, টেবিলের নাম dba_tables থেকে যেখানে মালিক নেই (dba_users থেকে ব্যবহারকারী নাম নির্বাচন করুন যেখানে oracle_maintain = 'Y')
সারিতোনিন

181

অনুসন্ধান করা user_tablesএবং dba_tablesকাজ হয়নি।
এই এক করেছে:

select table_name from all_tables  

14
@ লিমিটেডএটোনমেন্ট দুঃখিত, এটি সাধারণ। ভিউটিকে ইউজার_সামগ্রী বলা হয়, ব্যবহারকারীর_তালিকা নয়। যদি ব্যবহারকারী_ টেবিলগুলি ভিটুলের জন্য কাজ না করে তবে অন্য কিছু ভুল ছিল।
ফ্র্যাঙ্ক স্মিট

67

আরও এক ধাপ এগিয়ে, কলস (সমস্ত_ট্যাব_কলামগুলি) নামে আরও একটি ভিউ রয়েছে যা কোন সারণীতে প্রদত্ত কলামের নাম রয়েছে তা নির্ধারণের জন্য ব্যবহার করা যেতে পারে।

উদাহরণ স্বরূপ:

SELECT table_name, column_name
FROM cols
WHERE table_name LIKE 'EST%'
AND column_name LIKE '%CALLREF%';

EST দিয়ে শুরু হওয়া সমস্ত সারণী এবং তাদের নামে যে কোনও জায়গায় CALLREF রয়েছে এমন কলামগুলি সন্ধান করতে।

আপনি কোন কলামগুলিতে যোগদান করতে চান তা কাজ করার ক্ষেত্রে এটি সহায়তা করতে পারে, উদাহরণস্বরূপ, আপনার টেবিল এবং কলাম নামকরণের কনভেনশনগুলির উপর নির্ভর করে।


4
আমি করেছি select * from colsএবং 0 টি সারি ফিরে পেয়েছি।
গাবে

50

সাথে আরও ভাল দেখার জন্য sqlplus

আপনি যদি ব্যবহার করছেন sqlplusআপনি প্রথমে ভাল দেখার জন্য কয়েকটি প্যারামিটার সেট আপ করতে চাইতে পারেন যদি আপনার কলামগুলি ম্যাঙ্গেল হয়ে যাচ্ছে (আপনার বৈঠকগুলি আপনার sqlplusসেশনটি থেকে বেরিয়ে যাওয়ার পরেও চলবে না ):

set colsep '|'
set linesize 167
set pagesize 30
set pagesize 1000

সমস্ত সারণী দেখান

এরপরে আপনি সমস্ত টেবিলের নাম দেখতে এই জাতীয় কিছু ব্যবহার করতে পারেন:

SELECT table_name, owner, tablespace_name FROM all_tables;

আপনার নিজের টেবিলগুলি দেখান

@ জাস্টিন গুহ যেমন উল্লেখ করেছে, আপনি নিজের মালিকানাধীন টেবিলগুলি দেখানোর জন্য এটি ব্যবহার করতে পারেন:

SELECT table_name FROM user_tables;

দৃশ্যগুলি সম্পর্কে ভুলে যাবেন না

মনে রাখবেন যে কিছু "সারণী" আসলে "ভিউ" হতে পারে তাই আপনি এর মতো কিছু চালানোর চেষ্টাও করতে পারেন:

SELECT view_name FROM all_views;

ফলাফলগুলো

এর থেকে এমন কিছু পাওয়া উচিত যা দেখতে মোটামুটি গ্রহণযোগ্য মনে হচ্ছে:

ফলাফল


8
"আরও ভাল দেখার" পরামর্শের জন্য ধন্যবাদ, তবে আপনি কি ওভাররাইট pagesize 30করছেন না pagesize 1000?
পাবলো রেকাল্ড


18
    select object_name from user_objects where object_type='TABLE';

---------------- বা ------------------

    select * from tab;

---------------- বা ------------------

    select table_name from user_tables;


9

থেকে নির্বাচন করার চেষ্টা করুন user_tables যা বর্তমান ব্যবহারকারীর মালিকানাধীন টেবিল প্রদর্শন করা হয়।


9

নীচের কোয়েরিটি ব্যবহার করে সমস্ত সারণীর নাম প্রদর্শন করতে ওরাকল ডাটাবেস

নির্বাচন করুন মালিক, টেবিলের নাম FROM dba_tables;

মালিক নির্বাচন করুন, টেবিলের নাম FROM all_tables;

ব্যবহারকারীর টেবিলের তালিকা থেকে টেবিলের নাম নির্বাচন করুন;

আরও ভিজিট করুন : http://www.plsqlinformation.com/2016/08/get-list-of-all-tables-in-oracle.html


8

এর যে কোনও একটির সাথে আপনি নির্বাচন করতে পারেন:

SELECT DISTINCT OWNER, OBJECT_NAME 
    FROM DBA_OBJECTS 
    WHERE OBJECT_TYPE = 'TABLE' AND OWNER='SOME_SCHEMA_NAME';

SELECT DISTINCT OWNER, OBJECT_NAME 
    FROM ALL_OBJECTS 
    WHERE OBJECT_TYPE = 'TABLE' AND OWNER='SOME_SCHEMA_NAME';

6
select * from dba_tables

আপনি লগ ইন করেছেন এমন ব্যবহারকারী যদি sysdbaসুবিধাপ্রাপ্ত হয় তবেই সমস্ত ব্যবহারকারীর সমস্ত সারণী দেয় ।


4
এটি আসলে সঠিক নয়। এসওয়াইএসডিবিএ প্রয়োজন হয় না। আপনি ডিবিএ_এটিএবিএলএস থেকে অনেক উপায়ে অ্যাক্সেস পেতে পারেন। 1.) SYS দ্বারা ব্যবহারকারীকে সরাসরি অনুদান। ২) ব্যবহারকারীর জন্য নির্বাচন করুন কোনও ডিকশনারি সুবিধা। ৩) SELECT_CATALOG_ROLE ভূমিকা অনুদান।
মার্ক জে বোবাক

4

আমি উত্তর খুঁজে পাইনি যা ব্যবহার করতে নির্দেশ করবে

DBA_ALL_TABLES (ALL_ALL_TABLES/USER_ALL_TABLES)

সুতরাং আমার সংস্করণ পাশাপাশি যুক্ত করার সিদ্ধান্ত নিয়েছে। এই ভিউটি আসলে ডিবিএ_এইচএলবিএলএসকে আরও ভাল করে দেয় কারণ এটি বস্তুর টেবিলগুলিও ফেরত দেয় ( http://docs.oracle.com/cd/E11882_01/server.112/e40402/statviews_1003.htm )।


4

আপনি ওরাকল ডেটা অভিধান ব্যবহার করতে পারেনওরাকল অবজেক্ট সম্পর্কে তথ্য পেতে আপনি ।

আপনি বিভিন্ন উপায়ে টেবিলের তালিকা পেতে পারেন:

select * 
from dba_tables

বা উদাহরণস্বরূপ:

select * 
from dba_objects 
where object_type = 'TABLE' 

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

select * 
from dba_tab_columns

তারপরে আপনি নির্ভরতার তালিকা পেতে পারেন (ট্রিগার, ভিউ এবং অন্যান্য):

select * 
from dba_dependencies
where referenced_type='TABLE' and referenced_name=:t_name 

তারপরে আপনি এই বস্তুর পাঠ্য উত্স পেতে পারেন:

select * from dba_source

এবং আপনি চাইলে পরিবর্তে ব্যবহার করতে USERবা ALLদেখতে DBAপারেন।


4

ভিউ সহ:

SELECT owner, table_name as table_view
  FROM dba_tables
UNION ALL
SELECT owner, view_name as table_view
  FROM DBA_VIEWS

4

আমরা নীচে ক্যোয়ারী থেকে কলামের বিবরণ সহ সমস্ত সারণী পেতে পারি:

SELECT * FROM user_tab_columns;

4

নীচে আপনি কীভাবে অপশনগুলি ব্যবহার করতে পারেন তা বর্ণনা করে এসকিউএল ক্যোয়ারির একটি মন্তব্য করা স্নিপেট রয়েছে:

-- need to have select catalog role
SELECT * FROM dba_tables;

-- to see tables of your schema
SELECT * FROM user_tables;

-- tables inside your schema and tables of other schema which you possess select grants on
SELECT * FROM all_tables;

2

নিম্নলিখিত কোয়েরিতে কেবলমাত্র প্রয়োজনীয় ডেটা তালিকাভুক্ত করা হয়, অন্য উত্তরগুলি আমাকে অতিরিক্ত ডেটা দেয় যা কেবল আমাকে বিভ্রান্ত করে।

select table_name from user_tables;

2

এসকিউএলসিএলে উপলব্ধ একটি নতুন বৈশিষ্ট্য (যা ওরাকল ডেটাবেসগুলির জন্য একটি ফ্রি কমান্ড লাইন ইন্টারফেস)

Tables ওরফে।

বৈশিষ্ট্যের ব্যবহার এবং অতিরিক্ত দিকগুলি দেখানো কয়েকটি উদাহরণ এখানে। প্রথমে একটি sqlকমান্ড লাইনে ( sql.exeউইন্ডোতে) সেশনে সংযুক্ত করুন। অন্য কোনও কমান্ড বা কোয়েরি যা ডেটা প্রদর্শন করে তা চালানোর আগে এই sqlcl নির্দিষ্ট কমান্ডটি প্রবেশ করার পরামর্শ দেওয়া হয়।

SQL> set sqlformat ansiconsole     -- resizes the columns to the width of the 
                                   -- data to save space 

SQL> tables

TABLES
-----------
REGIONS
LOCATIONS
DEPARTMENTS
JOBS
EMPLOYEES
JOB_HISTORY
..

কি tablesওরফে উল্লেখ করা হয়, আপনি কেবল ব্যবহার করতে পারেনalias list <alias>

SQL> alias list tables
tables - tables <schema> - show tables from schema
--------------------------------------------------

 select table_name "TABLES" from user_tables

এসকিউএলসিএল-এর অধীনে এটি ডিফল্টরূপে আসে বলে আপনাকে এই উপন্যাসটি সংজ্ঞায়িত করতে হবে না। আপনি যদি কোনও নির্দিষ্ট স্কিমা থেকে সারণি তালিকাভুক্ত করতে চান তবে একটি নতুন ব্যবহারকারী-সংজ্ঞায়িত উপনাম ব্যবহার করে এবং স্কিমা নামটি কেবলমাত্র কলামগুলির একটি সেট প্রদর্শন করে বাইন্ড আর্গুমেন্ট হিসাবে পাস করছেন, আপনি এটি ব্যবহার করে করতে পারেন

SQL> alias tables_schema = select owner, table_name, last_analyzed from all_tables where owner = :ownr;

তারপরে আপনি কেবল আর্গুমেন্ট হিসাবে স্কিমা নামটি পাস করতে পারেন

SQL> tables_schema HR

OWNER   TABLE_NAME               LAST_ANALYZED
HR      DUMMY1                   18-10-18
HR      YOURTAB2                 16-11-18
HR      YOURTABLE                01-12-18
HR      ID_TABLE                 05-12-18
HR      REGIONS                  26-05-18
HR      LOCATIONS                26-05-18
HR      DEPARTMENTS              26-05-18
HR      JOBS                     26-05-18
HR      EMPLOYEES                12-10-18
..
..

আরও পরিশীলিত প্রাক-সংজ্ঞায়িত উপনাম হিসাবে পরিচিত Tables2, যা বেশ কয়েকটি অন্যান্য কলাম প্রদর্শন করে।

SQL> tables2

Tables
======
TABLE_NAME                 NUM_ROWS   BLOCKS   UNFORMATTED_SIZE COMPRESSION     INDEX_COUNT   CONSTRAINT_COUNT   PART_COUNT LAST_ANALYZED
AN_IP_TABLE                       0        0                  0 Disabled                  0                  0            0 > Month
PARTTABLE                         0        0                  0                           1                  0            1 > Month
TST2                              0        0                  0 Disabled                  0                  0            0 > Month
TST3                              0        0                  0 Disabled                  0                  0            0 > Month
MANAGE_EMPLYEE                    0        0                  0 Disabled                  0                  0            0 > Month
PRODUCT                           0        0                  0 Disabled                  0                  0            0 > Month
ALL_TAB_X78EHRYFK                 0        0                  0 Disabled                  0                  0            0 > Month
TBW                               0        0                  0 Disabled                  0                  0            0 > Month
DEPT                              0        0                  0 Disabled                  0                  0            0 > Month

এটি ব্যাকগ্রাউন্ডে কী ক্যোয়ারী চালায় তা জানতে প্রবেশ করান

alias list tables2

এটি আপনাকে columnএসকিউএল * প্লাসে সাধারণত ব্যবহৃত পূর্বনির্ধারিত সংজ্ঞা সহ কিছুটা আরও জটিল কোয়েরি দেখায় ।

জেফ স্মিথ এখানে এলিয়াস সম্পর্কে আরও ব্যাখ্যা করেছেন


1

আমি কলাম আইডির ক্রম অনুসারে বাছাই করা স্কিমার টেবিলের সাথে সম্পর্কিত সমস্ত কলামের নামের তালিকা পেতে চাইছিলাম।

এখানে আমি যে ক্যোয়ারীটি ব্যবহার করছি তা এখানে: -

SELECT COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE OWNER = 'schema_owner_username' AND TABLE_NAME='table_name'
ORDER BY COLUMN_ID ASC;

1

প্রকৃতপক্ষে, এসকিউএল কোয়েরিগুলির মাধ্যমে টেবিলের তালিকা থাকা সম্ভব tools এটি এমন কি এমন সরঞ্জামগুলির মাধ্যমে করা সম্ভব যা ERWIN , টোড ডেটা মডেলার বা ERBuilder এর মতো ডেটা অভিধান তৈরি করতে দেয় via । এই সরঞ্জামগুলির সাহায্যে সারণির নাম ছাড়াও আপনার ক্ষেত্রগুলি, তাদের প্রকারগুলি, অবজেক্টস (ট্রিগার, সিকোয়েন্সস, ডোমেন, দর্শন ...) থাকবে

আপনার টেবিল সংজ্ঞা উত্পন্ন করতে অনুসরণ করতে নীচের পদক্ষেপগুলি:

  1. আপনাকে আপনার ডাটাবেসটি বিপরীত করতে হবে
    • টোড ডেটা মডেলারে: মেনু -> ফাইল -> বিপরীত প্রকৌশলী -> বিপরীত প্রকৌশল উইজার্ড
    • ERBuilder ডেটা মডেলারে: মেনু -> ফাইল -> বিপরীত প্রকৌশলী

আপনার ডাটাবেসটি একটি সত্তা সম্পর্কের ডায়াগ্রাম হিসাবে সফ্টওয়্যারটিতে প্রদর্শিত হবে।

  1. আপনার ডেটা অভিধান তৈরি করুন যাতে আপনার টেবিল সংজ্ঞা থাকবে
    • টোড ডেটা মডেলারে: মেনু -> মডেল -> প্রতিবেদন তৈরি করুন -> চালান
    • ERBuilder ডেটা মডেলারে: মেনু -> সরঞ্জাম -> মডেল ডকুমেন্টেশন তৈরি করে

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