2012-05-06 4 views
0

sys, system 이외의 다른 dba "abc"가 하나만있는 실행중인 데이터베이스가 있습니다. 이 오라클 사용자 아래에 테이블, 뷰, 시퀀스, 프로 시저, 함수 등이 있습니다. 이제 데이터와 스키마를 다른 데이터베이스에 복사해야합니다. 다른 스키마에는 이미 실행중인 12 개의 스키마가 있습니다 (각각 별도 dba 아래에 하나씩). 다음과 같은 우려 사항이 있습니다 :이미 다른 스키마가있는 다른 데이터베이스에서 실행중인 스키마 백업 및 복원

(1) 새 컴퓨터로 이동하기 전에 "abc"에서 "pqr"로 이전 컴퓨터의 스키마 이름을 바꿔야합니다.

(2) 내 절차 및 기능 내에서 AUTHID CURRENT_USER를 (를) 사용하고 있으므로 "abc."를 사용해야합니다. 테이블, 뷰, 시퀀스, 프로 시저, 함수의 이름 앞에 한정자. 스키마 이름을 변경할 때 한정자를 자동으로 변경하는 방법이 있습니까?

(3) 데이터를 복사하려면 한 사용자 "abc"의 데이터베이스 백업 (sys, system 백업 안 함)을 수행하는 한 가지 방법 만 알고 있습니다. 그런 다음 새 데이터베이스로 복원하십시오. 어쨌든 다른 스키마 나 데이터를 파괴 할 수 있습니까?

(4) 필자는 스키마에서 프로 시저를 사용하여 제한된 권한을 가진 oracle 사용자를 생성하려고합니다. 새로운 사용자 이름은 Users 테이블에 저장됩니다. 또한 데이터베이스 역할을 만들고 사용자와 역할을 연관 짓고 있습니다. 롤 이름은 역할 테이블에 저장됩니다. 새로운 시스템으로 마이그레이션 할 때 다른 스키마에 의해 생성 된 Oracle 사용자를 방해하지 않도록 고유 한 사용자 및 역할에 고유 한 접두사를 지정해야합니다.

(5) 새로운 데이터베이스에는 "pqr"이라는 새로운 dba 사용자가 있어야한다는 것을 알고 있습니다. 또한 sysdba 권한이 있어야합니다. 새 컴퓨터에서 전체 데이터베이스에 대한 책임이 없으며 내 스키마에 대해서만 책임이 있습니다. sysdba이기 때문에 어쨌든 다른 dbas (데이터베이스를 삭제하거나 스키마를 변경하는 것)를 해칠 수 있습니까? sysdba 권한이 없다면 어떤 한계가 있습니까? OracleText를 사용하고 있으므로 내장 패키지를 사용해야합니다. Windows의 파일 시스템에 실제 디렉토리를 만들어야합니다. "pqr"을 사용하여 데이터베이스에 연결될 때 스토어드 프로 시저를 통해 역할 및 사용자를 작성, 변경 (암호 변경), 드롭 및 작성해야합니다.

이전 데이터베이스와 새 데이터베이스 모두 별도의 전용 시스템에서 실행됩니다. 오라클 10gr1과 윈도우 서버 2003.

답변

1

가장 간단한 방법은 첫 번째 데이터베이스에 abc 스키마의 논리적 백업을 수행하기 위해 Oracle export utility (고전 또는 데이터 펌프)를 사용하고 새로운 데이터베이스로 Oracle import utility를 사용하여 백업을 가져올 것입니다. 기본 버전을 사용하는 경우 데이터를 다른 스키마로 가져 오도록 지정하려면 FROMUSERTOUSER 매개 변수를 사용하십시오. DataPump 버전을 사용하는 경우 REMAP_SCHEMA 매개 변수를 사용하십시오. 비교적 많은 양의 데이터를 가지고 있다면 DataPump 버전이 더 효율적입니다.

그러나 불행히도 명시 적 스키마 한정자를 변경할 수있는 방법은 없습니다. 코드를 가져온 후 편집하거나 소스 제어 시스템에서 코드를 가져 와서 코드를 편집하고 새 데이터베이스에 배포해야합니다.

+0

감사합니다. 저스틴. 논리 백업에 데이터가 포함되어 있습니까? pqr은 sysdba 여야합니까? – Atif

+0

@Atif - 예, 내보내기에는 기본적으로 데이터가 포함됩니다 (데이터를 원하지 않도록 지정할 수 있음). 어느 스키마도 'DBA'역할을 가져야합니다. –

+0

expdb 명령을 실행할 위치는? 명령 프롬프트 또는 sqlplus에서 실행되지 않습니다. – Atif