Programing

Oracle SID 및 데이터베이스 이름 확인

lottogame 2020. 8. 13. 07:37
반응형

Oracle SID 및 데이터베이스 이름 확인


SID와 현재 데이터베이스 이름을 확인하고 싶습니다.

Oracle SID를 확인하기 위해 다음 쿼리를 사용하고 있습니다.

select instance from v$thread;

그러나 테이블 또는 뷰가 존재하지 않습니다. 오류가 발생합니다.

현재 데이터베이스 이름을 확인하기 위해 다음 쿼리를 사용하고 있습니다.

select name from v$database;

그러나 테이블 또는 뷰가 존재하지 않습니다. 오류가 발생합니다.

위의 두 가지 문제에 대한 아이디어가 있습니까?


나는 가정은 select user from dual;당신에게 현재 사용자를 제공해야

select sys_context('userenv','instance_name') from dual;인스턴스의 이름

나는 당신이 SID를 얻을 수 있다고 믿습니다 SELECT sys_context('USERENV', 'SID') FROM DUAL;( 지금 이것을 확인할 수 없습니다 )


나처럼 목표가 Oracle JDBC URL을 생성하기 위해 데이터베이스 호스트와 SID를 얻는 것입니다.

jdbc:oracle:thin:@<server_host>:1521:<instance_name>

다음 명령이 도움이 될 것입니다.

SID (또는 인스턴스 이름)를 확인하는 Oracle 쿼리 명령 :

select sys_context('userenv','instance_name') from dual; 

데이터베이스 이름 (또는 서버 호스트)을 확인하는 Oracle 쿼리 명령 :

select sys_context('userenv', 'server_host') from dual;

Att. 세르지오 마르셀로


완전성을 위해 ORA_DATABASE_NAME을 사용할 수도 있습니다.

모든 메소드가 동일한 출력을 제공하지는 않는다는 점은 주목할 가치가 있습니다.

SQL> select sys_context('userenv','db_name') from dual;

SYS_CONTEXT('USERENV','DB_NAME')
--------------------------------------------------------------------------------
orcl

SQL> select ora_database_name from dual;

ORA_DATABASE_NAME
--------------------------------------------------------------------------------
ORCL.XYZ.COM

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
ORCL.XYZ.COM

V $보기는 주로 시스템 메트릭의 동적보기입니다. 성능 조정, 세션 모니터링 등에 사용됩니다. 따라서 액세스는 기본적으로 DBA 사용자로 제한되므로 ORA-00942.

데이터베이스 이름을 찾는 가장 쉬운 방법은 다음과 같습니다.

select * from global_name;

이 뷰는 PUBLIC에 부여되므로 누구나 쿼리 할 수 ​​있습니다.


sqlplus명령 프롬프트에 입력

SQL> select * from global_name;

그러면 명령 프롬프트에 결과가 표시됩니다.

SQL ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM

여기서 첫 번째 "ORCL"은 데이터베이스 이름이며, 시스템 "XE"및 오라클 다운로드 시간에 제공된 다른 항목 일 수 있습니다.


위에서 언급했듯이

select global_name from global_name;

갈 길이다.

사용자에게 필요한 권한이 없기 때문에 v $ database / v $ instance / v $ thread를 쿼리 할 수 ​​없습니다. 다음을 사용하여 DBA 계정을 통해 부여 할 수 있습니다.

grant select on v$database to <username here>;

참고URL : https://stackoverflow.com/questions/6288122/checking-oracle-sid-and-database-name

반응형