방법: 1. "select sid,serial# from v$session where username=''" 문을 사용하여 세션 정보를 쿼리합니다. 2. "alter system kill session ''" 문을 사용하여 세션을 종료합니다. . 사용자를 다시 삭제하세요.
이 튜토리얼의 운영 환경: Windows 10 시스템, Oracle 11g 버전, Dell G3 컴퓨터.
소프트웨어 개발 버전이 업그레이드됨에 따라 테스트 환경의 oracle 데이터베이스를 새로 고쳐야 합니다. 그 안에 점점 더 많은 데이터가 있으며 때로는 기능 테스트의 편의를 위해 테스트 환경의 데이터베이스에 있는 데이터가 일관성이 없어 후속 테스트 버전에 특정 영향과 간섭을 갖게 됩니다. 위의 상황을 피하기 위해 일반적으로 현재 데이터베이스 사용자 아래의 모든 개체가 먼저 지워진 다음 다시 생성됩니다. 하지만 사용자 아래의 모든 개체와 데이터를 삭제하려면 먼저 현재 사용자 아래에 어떤 개체가 있는지 알아낸 다음 삭제해야 합니다. 사용자를 삭제하는 계단식 삭제 방법을 사용하는 것은 매우 간단하고 편리하지만, 현재 사용자가 삭제하려는 세션이 연결되어 있으면 삭제할 수 없습니다. 먼저 세션을 종료한 후 삭제해야 합니다.
먼저 xshell 도구를 사용하여 oracle 데이터베이스 서버에 연결해야 합니다(여기 소개는 Linux 환경에 대한 것이며 Windows 환경이 더 간단합니다). 현재 Linux 사용자가 oracle 사용자가 아닌 경우 다음으로 전환해야 합니다. oracle 사용자 su - Oracle 스위치
명령을 입력합니다. oracle 사용자 sqlplus / as sysdba로 실행합니다. 즉, 관리자 sys로 데이터베이스에 로그인하고 해당 사용자만 삭제합니다. 관리자 계정에는 권한이 있습니다. 데이터베이스 테이블과 데이터만 쿼리하는 경우에는 일반 계정으로 로그인하면 됩니다. 연결 후 Connected to: oracle Databases and other 프롬프트가 표시되고 나타나는 입력 프롬프트는 SQL>
이 됩니다. 그런 다음 사용자를 삭제하는 문을 입력합니다. DROP USER cqt CASCADE는 다음의 계단식 삭제를 의미합니다. 사용자 모든 객체 정보의 의미. 그림과 같이 ORA-01940의 오류는 현재 연결된 사용자를 삭제할 수 없습니다. 계속 삭제하려면 현재 연결된 사용자의 세션 정보를 먼저 쿼리한 후 해당 사용자를 삭제한 후 삭제해야 합니다. . 쿼리 문은 다음과 같습니다. v$session에서 sid,serial#을 선택합니다. 여기서 사용자 이름은 'CQT'입니다. 대소문자의 차이를 확인하세요. 그림과 같이 사용자에게 연결된 다중 세션 정보를 쿼리합니다. 위에서 쿼리한 모든 사용자 세션을 종료해야 합니다. 세션을 종료하는 명령문은 다음과 같습니다. alter system kill session '15,19095' 예, 위의 세션이 지워진 후 다시 명령을 실행하여 그림과 같이 사용자를 삭제하면 이번에는 성공적으로 삭제할 수 있습니다. 이 문은 cascade delete 키워드를 추가하므로 이 사용자 아래의 모든 개체와 데이터가 삭제됩니다.
위로 사용자 및 개체 삭제가 완료되었습니다. 데이터베이스 브러싱 작업인 경우 사용자 재생성을 시작한 다음 권한을 할당하고 데이터베이스 스크립트를 실행하여 새로운 버전 테스트를 수행할 수 있습니다. .
Notes
캐스케이드에서 사용자 개체를 삭제할 때 잘못된 사용자나 정보가 삭제되지 않도록 주의하세요. 작동하기 전에 데이터를 백업할 수 있습니다. 추천 튜토리얼: "Oracle Video Tutorial"
위 내용은 Oracle이 사용자를 삭제할 수 없는 경우 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!