문제

Oracle SQL 개발자를 사용하고 있습니다

테이블, 인덱스, 기본 주요 제약 조건을 만드는 거대한 스크립트가 있습니다.

내 DB 이름은 : dbo_other입니다

이 dbo_other에 sysdba로 로그인했습니다.

내 스크립트를 실행하면 '테이블'아래 왼쪽 패널에 테이블이 나타나지 않습니다.

그러나 'dbo_other'를 추가하여 스크립트를 추가하면. 모든 테이블 이름 앞에는 테이블이 나타납니다.

이것은 매우 지루하고 시간이 많이 걸립니다.

이것을 피할 수있는 방법이 있습니까? 왜 dbo_other를 추가하지 않고 dbo_other에 나타나지 않는 이유. 모든 테이블 이름 앞에서 ?? 오른쪽 상단 코너에서 쿼리를 실행하면 드롭 다운이 dbo_other를 선택했습니다 !!

또한 생성 된 테이블에서 선택 * (왼쪽 사이드 바에는 보이지 않음)을 수행 할 수도 있습니다. 또한 PL/SQL 개발자의 테이블을 볼 수 있습니다.

Oracle SQL Developer가 왜 DBO_Other로 만들기를 원합니다 .?

또한 각 테이블에 추가하지 않는 방법이 있습니까? 아마도 스크립트 위에 무언가를 할 수 있으므로 다음 모든 것에 적용됩니다.

도움이 되었습니까?

해결책

SYSDBA 계정을 사용하여 데이터베이스에 로그인하는 이유는 무엇입니까? 이것은 매우 강력하며, 무엇을하고 있는지 모르는 경우 데이터베이스에 끔찍한 손상을 입을 수 있습니다. 개발 환경에서는 당신이 할 수있는 피해에 한계가 있지만 생산에서 일을하기 전에 좋은 습관에 들어가는 것이 가장 좋습니다.

SYSDBA에 대한 흥미로운 점은 로그인의 사용자 이름 부분을 무시한다는 것입니다. OS 사용자가 권한이있는 경우 SYS에 있습니다. 확인 해봐:

SQL> conn apc
Enter password:
Connected.
SQL> show user
USER is "APC"
SQL> conn apc as sysdba
Enter password:
Connected.
SQL> show user
USER is "SYS"
SQL>

따라서 해당 스크립트를 실행하면 SYS 스키마의 모든 객체를 만들었습니다. 목에 큰 통증이 될 것입니다. 나는 당신이 동등하고 반대의 반전 스크립트를 갖기를 바랍니다.

스크립트를 올바르게 실행하려면 dbo_other로 연결하기 만하면됩니다 (정상 - Sysdba 또는 Sysoper가없는 기본값이없는 Sysoper). 스크립트는 현재 스키마에서 테이블을 만듭니다.

여러 스키마에서 객체를 만들어야하는 경우 로그 아웃 할 필요가 없습니다. 스키마는 사용자와 구별되며 실행하여 스키마를 전환 할 수 있습니다. alter session set current schema = WHOEVR;. 이것은 꽤 편리한 속임수이며 얼마 전 블로그를 작성했습니다. 더 찾아 봐.

사용자는 현재 스키마를 변경하여 추가 권한을 획득하지 않습니다. 현재 수행 할 수있는 작업 만 수행 할 수 있습니다. 따라서 여러 스키마에서 개체를 만드는 것과 같은 경우 실행 사용자는 파워 사용자 여야합니다. 누군가는 DBA와 같은 권한을 생성하지만 여전히 SYSDBA는 아닙니다.

다른 팁

방금이 작은 Jem을 우연히 발견하여 로그인하지 않은 기본적으로 스키마/사용자에 대한 작업을 수행 할 수 있습니다. 즉, 기본적으로 귀하의 SELECT 문 등은 귀하가 아닌이 새로운 스키마에서 작동합니다.

ALTER SESSION SET CURRENT_SCHEMA =

예 : 나 자신 + 표 1 + 표

log in as "Myself" 
select * from SuperTable1

Error: ORA-00942: table or view does not exist

alter session set current_schema = SomeoneElse 
select * from SuperTable1 <This will work.>

왼쪽 패널의 "테이블"트리에는 로그인 사용자가 Oracle SQL Developer에서 소유 한 테이블 만 포함되어 있습니다. 스크립트가 다른 사용자의 스키마에서 테이블을 작성하는 경우 "다른 사용자"옆에 +를 클릭하고 적절한 사용자를 찾아 테이블의 +를 클릭해야합니다.

다른 사람들이 말했듯이, 당신은 필요하지 않으면 sysdba를 사용해서는 안되며, 스크립트가 거친 설명을 기반으로 일반 사용자로 실행되는 것처럼 들립니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top