MySQL SHOW DATABASES
문장 과 동등한가 ?
클러스터에서 데이터베이스를 찾을 수 있습니까? 즉, 다른 시스템의 네트워크에 데이터베이스가 있습니까?
Oracle 설치에있는 파일을 분석하여 동일한 파일을 찾을 수 있습니까?
Oracle 시스템에 대한 완전한 액세스 자격 증명이 주어지면 존재하는 모든 데이터베이스를 어떻게 열거합니까?
MySQL SHOW DATABASES
문장 과 동등한가 ?
클러스터에서 데이터베이스를 찾을 수 있습니까? 즉, 다른 시스템의 네트워크에 데이터베이스가 있습니까?
Oracle 설치에있는 파일을 분석하여 동일한 파일을 찾을 수 있습니까?
Oracle 시스템에 대한 완전한 액세스 자격 증명이 주어지면 존재하는 모든 데이터베이스를 어떻게 열거합니까?
답변:
MySQL
SHOW DATABASES
문장 과 동등한가 ?
그와 같은 일은 없다. 머신 ( lsnrctl status
)에서 리스너를 쿼리하여 등록 된 서비스를 확인할 수 있지만 일대일 데이터베이스에 매핑되지 않으며 동일한 머신에 여러 리스너가있을 수 있습니다. 그렇지 않으면 일반적으로 사용되는 도구는 하나의 데이터베이스 인스턴스에 연결되고 인스턴스는 단일 데이터베이스에 속합니다.
Oracle RAC 클러스터에 대해 이야기하는 경우 각 인스턴스는 피어 (동일한 데이터베이스를 제공하는 다른 인스턴스)를 알고 있으며 gv$instance
뷰를 사용하여 해당 데이터베이스에 대해 현재 시작된 다른 인스턴스를 찾을 수 있습니다. 유틸리티를
사용 crsctl
하여 클러스터에 등록 된 서비스 (데이터베이스 포함) 및 상태를 나열 할 수도 있습니다 .
다른 공급 업체의 클러스터링 소프트웨어에 대해 이야기하고 있다면, 이러한 유형의 리소스 관리 유틸리티에 모두 쿼리해야합니다.
많은 머신에 대해 이야기하고 있다면 네트워크의 모든 데이터베이스를 100 % 신뢰할 수있는 방법으로 열거 할 수는 없습니다.
활성 (즉, 시작된) 데이터베이스를 찾으려면 *_pmon_*
Unix (데이터베이스 인스턴스 당 하나)와 Windows의 Oracle 서비스에서 프로세스 를 찾으십시오 .
Oracle 데이터베이스 소프트웨어 설치를 찾으려면 /etc/oratab
Unix를보십시오. ORACLE_HOME
설치된 모든 파일이 포함 되어 있어야합니다. $ORACLE_HOME/dbs
for spfile<SID>.ora
및 / 또는 init<SID>.ora
파일 에있는 각각의 내부를 살펴볼 수 있습니다 . 각 데이터베이스마다 하나씩 있습니다.
( oratab
아래의 Windows 레지스트리 키에서 동등한 정보를 찾을 수 있다고 생각 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
하지만 그 구조를 모르겠습니다.)
물론 모든 데이터베이스를 설치할 때 OEM (Enterprise Manager) 서버에 모든 데이터베이스를 등록한 경우 전체 목록을 찾을 수 있습니다. 그러나 그렇지 않은 경우에는 그럴 것입니다.
Oracle에는 데이터베이스 외에 스키마가 없으므로 다음과 같이 나열 할 수 있습니다.
SELECT USERNAME FROM ALL_USERS ORDER BY USERNAME;
또는 이와 같은 것 :
SELECT TABLESPACE_NAME FROM USER_TABLESPACES;
간단히 말해서, Oracle의 MySQL '데이터베이스'또는 '클러스터'에 대한 직접적인 비유는 없습니다. 가장 일치하는 것은 '스키마'이지만 여전히 매우 다릅니다.
이것은 플러그 형 데이터베이스의 도입으로 12c에서 변경 될 것입니다 .
데이터베이스 작업을 사용자의 콘텐츠와 깔끔하게 나누는 것은 기존 데이터베이스 아키텍처에서 크게 변형 된 것입니다. Kyte는 Oracle 11g와 그 이전 모델은 한 번에 하나의 데이터베이스 만 실행할 수 있다고 말했다. 조직이 단일 서버에서 여러 데이터베이스를 실행하려면 각 데이터베이스마다 하나씩 Oracle 11g의 여러 인스턴스를 실행해야합니다. 이름에서 알 수 있듯이, 플러그 가능 데이터베이스는 여러 테넌트 데이터베이스가 Oracle 12c의 한 복사본에서 실행될 수 있도록합니다.
ASM에 연결하고 데이터베이스 클라이언트를 확인하십시오.
set pages 999 lines 120
col SOFTWARE_VERSION for A15
col INSTANCE_NAME for A20
col DB_NAME for A20 trunc
select INSTANCE_NAME, DB_NAME, STATUS, SOFTWARE_VERSION as "version"
from V$ASM_CLIENT;
독립형 데이터베이스의 경우 호스트 재부팅 후 자동으로 시작되는 데이터베이스 목록을 가져옵니다.
cat /etc/oratab | grep -i ":y" | grep -v "^#"
또는 모든 데이터베이스 목록을 얻으려면 다음을 수행하십시오.
cat /etc/oratab | grep -v "^#"
RAC 데이터베이스의 경우 다음 방법이 유용 할 수 있습니다.
crsctl stat res -t | grep "\.db"
또한 이미 언급했듯이 MySQL의 데이터베이스는 Oracle의 데이터베이스와 다릅니다. Oracle에서는 스키마에 더 가깝습니다. 즉 사용자 개체의 컨테이너라는 이름입니다. 체계 목록을 얻으려면 다음 SQL 문을 사용할 수 있습니다.
select username from dba_users order by 1;
또는 시스템 관련 체계가 아닌 목록을 얻으려면 (버전 12c부터 Oracle RDBMS에서 사용 가능) :
select username from dba_users where ORACLE_MAINTAINED='N' order by 1;