programing

오라클 sid 및 데이터베이스 이름 확인 중

easyjava 2023. 4. 4. 23:20
반응형

오라클 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;

저처럼 데이터베이스 호스트와 SID가 Oracle JDBC URL을 생성하는 것이 목표인 경우

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;

세르지오 마르셀로

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" 및 Oracle 다운로드 시 제공된 기타 정보일 수 있습니다.

앞서 말한 바와 같이,

select global_name from global_name;

가는 길이에요.

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

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

SID는 Oracle 환경에서 오버로드된 용어인 것 같습니다.토픽에는 다음과 같은 답변이 많이 있습니다.
SID = 듀얼에서 sys_context('USERENV', 'SID')를 선택합니다.

단, 현재 session_id와 DB에 대한 새로운 연결마다 변경된 내용이 표시됩니다.

같은 질문에서 SID 및 현재 데이터베이스 이름을 참조할 경우 OP가 현재 연결된 세션의 session_id를 식별하지 않고 tnsnames 등으로 연결을 설정하려고 한다고 가정할 수 있습니다.

'이것'은 다음과 같습니다.
= SID =SELECT sys_context('userenv','instance_name') FROM dual;

= SERVICE_NAME =select sys_context('userenv','service_name') from dual;

듀얼에서 sys_context('userenv', 'instance_name')를 선택합니다.

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

반응형