오라클 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
'programing' 카테고리의 다른 글
| Oracle의 to_char에서 형식이 아닌 문자를 이스케이프하는 가장 좋은 방법은 무엇입니까? (0) | 2023.04.04 |
|---|---|
| ImperativeHandle, useLayoutEffect 및 useDebugValue를 사용하는 경우 (0) | 2023.04.04 |
| Jackson은 json에 백슬래시를 추가합니다. (0) | 2023.04.04 |
| 요청 간에 Django 메시지가 반복될 수 있습니다(즉, 삭제되지 않음). (0) | 2023.04.04 |
| JSON 개체의 델타 인코딩 (0) | 2023.04.04 |