SQL * Plus를 사용하여 Oracle 11g에서 데이터베이스를 표시하는 방법


79

이 명령의 도움으로 MySQL의show databases; 데이터베이스를 볼 수 있습니다 .

Oracle 에서 사용 가능한 데이터베이스를 표시하는 방법은 무엇입니까?

답변:


61

MySQL "데이터베이스"는 Oracle에서 스키마 / 사용자로 생각할 수 있습니다. 권한이있는 경우 DBA_USERS뷰를 쿼리하여 스키마 목록을 볼 수 있습니다 .

SELECT * FROM DBA_USERS;

21
일부 오라클 데이터베이스에는 객체가없는 사용자가 많습니다. 이에 대한 대안은 SELECT DISTINCT OWNER FROM ALL_OBJECTS입니다.
Gary Myers

1
+1 좋은 대안입니다. 권한이있는 사용자가 아니고이 쿼리를 실행하면 적어도 하나의 개체에 대한 권한이있는 소유자 만 볼 수 있습니다.
dpbradley 2010 년

5
DBA_USERS에 대한 질의는 "ORA-00942 : 테이블 또는 뷰가 존재하지 않습니다"를 제공합니다. 권한 문제 일 수 있습니까? 코멘트 "SELECT DISTINCT OWNER FROM ALL_OBJECTS;" 동일한 액세스 자격 증명으로 작동합니다. db 11g
a1an 2012

2
SELECT * FROM DBA_USERS;
Felipe Augusto

95

SELECT NAME FROM v$database; 오라클의 데이터베이스 이름을 보여줍니다


2
나는 이것이 질문이 요구 한 것이라고 생각합니다. 또는 적어도 스키마 (또는 사용자)와는 반대로 "데이터베이스"를들을 때 제가 생각하는 것입니다.
Randy Stegbauer

2
이 대답해야한다
아메 데쉬

예를 들어 Oracle Database Express Edition을 실행하면 XE, 즉 인스턴스 / 데이터베이스를 고유하게 식별하는 고유 한 이름 (SID라고 함)이 인쇄됩니다. 반면에 MySQL의 show databases명령은 MySQL이 데이터베이스 일명 스키마 (대략 SELECT USERNAME FROM DBA_USERSOracle에서 얻는 것)라고 부르는 것을 인쇄합니다 .
Álvaro González

28

Oracle에는 MySQL 또는 MS SQL Server와 같은 단순한 데이터베이스 모델이 없습니다. 가장 가까운 것은 테이블 스페이스와 그 안의 해당 사용자를 쿼리하는 것입니다.

예를 들어 실제 '데이터베이스'가 모두 포함 된 DEV_DB 테이블 스페이스가 있습니다.

SQL> SELECT TABLESPACE_NAME FROM USER_TABLESPACES;

를 야기하는:

SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
EXAMPLE
DEV_DB

모든 테이블 스페이스의 사용자를 쿼리 할 수도 있습니다.

SQL> select USERNAME, DEFAULT_TABLESPACE from DBA_USERS;

또는 특정 테이블 스페이스 내 (예 : DEV_DB 테이블 스페이스 사용) :

SQL> select USERNAME, DEFAULT_TABLESPACE from DBA_USERS where DEFAULT_TABLESPACE = 'DEV_DB';

ROLES DEV_DB
DATAWARE DEV_DB
DATAMART DEV_DB
STAGING DEV_DB

14

이보기를 사용할 수 있지만 확실하지 않습니다.

select * from v$database;

하지만 현재 DB에 대한 정보 만 표시 할 것이라고 생각합니다.

다른 옵션, db가 Linux에서 실행되는 경우 ... whould는 다음과 같습니다.

SQL>!grep SID $TNS_ADMIN/tnsnames.ora | grep -v PLSExtProc

11g에서 작동하지 않는 첫 번째 : "ORA-00942 : 테이블 또는 뷰가 존재하지 않습니다"
a1an

2
안녕하세요 @ a1an. 의심 할 여지없이 v $ database는 11g에 존재합니다. 충분한 권한으로 쿼리를 실행하고 있는지 확인하십시오. 여기에 oracle 11g 용 v $ database에 대한 문서가 있습니다. docs.oracle.com/cd/B28359_01/server.111/b28320/… Algo, 여기에 Oracle 11g에서 v % database 사용에 대한 예제가 포함 된 게시물이 있습니다. neeraj-dba.blogspot.com.es/2011/10/… 행운을 빕니다!
Jonathan

2
아마도 권한 문제를 jsut, sysdba가 작동 할 때 실행
a1an

Ok @ a1an, 해당 뷰에서 선택 권한을 부여하십시오. 사용자에게 v_ $ database에 대한 선택 권한을 부여하십시오. 밑줄을 참고하십시오! v $ database는 동의어이며 동의어에 대해 proviledgest를 부여 할 수 없습니다 (ORA-02030 오류로 끝날 수 있음).
Jonathan

1

나는 그것에 대해 명확하지 않지만 일반적으로 하나의 서버에는 하나의 데이터베이스 (많은 사용자 포함)가 있습니다. 많은 데이터베이스를 생성하면 많은 인스턴스, 리스너 등을 생성한다는 의미입니다. 그래서 당신은 LISTENER그것을 식별 하기 위해 확인할 수 있습니다.

내 테스트에서 2 개의 데이터베이스 ( dbtestdbtest_1)를 만들었 으므로 LISTENER 상태를 확인하면 다음과 같이 나타납니다.

lsnrctl status

....

리스너의 상태

.....

(설명 = (ADDRESS = (프로토콜 = tcp) (HOST = 10.10.20.20) (포트 = 1521)))

서비스 요약 ...

서비스 "dbtest"에는 1 개의 인스턴스가 있습니다.

인스턴스 "dbtest", 상태 READY,이 서비스에 대한 핸들러가 1 개 있습니다 ...

서비스 "dbtest1XDB"에는 1 개의 인스턴스가 있습니다.

인스턴스 "dbtest1", 상태 READY,이 서비스에 대한 핸들러가 1 개 있습니다 ...

서비스 "dbtest_1"에는 1 개의 인스턴스가 있습니다.

인스턴스 "dbtest1", 상태 READY에이 서비스에 대한 핸들러가 1 개 있습니다 ... 명령이 성공적으로 완료되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.