2009-12-03 6 views
0

내 프로젝트에서 DAL 용 Oracle Database 및 SubSonic을 사용하고 있습니다. SubSonic과 Oracle Schema에 문제가 있습니다 :SubSonic을 사용할 때 런타임에 Oracle 스키마 변경

개발할 때 Oracle Database에서 스키마 DEV를 사용하고 SubSonic을 사용하여 DAL을 생성했습니다. 그런 다음 고객에게 릴리스 할 때 Oracle Database에서 새로운 스키마 TEST를 사용하고 app.config의 연결 문자열을 Oracle에 연결하도록 변경했습니다. "테이블 또는 뷰가 존재하지 않습니다"라는 오류가 나타납니다. 이 오류를 발견하고 테이블의 스키마가 여전히 DEV인지 확인합니다. 스키마를 변경하고 고객에게 릴리스 한 후에 DAL을 다시 생성하고 싶지 않습니다. 도와주세요.

답변

0

먼저 스키마가 DEV가 아니어야합니다. DEV는 사용자 또는 역할입니다. 스키마 이름은 데이터 내용 (예 : ACCOUNTS 또는 SALES)과 관련되어야합니다.

둘째, 사용자 또는 고객이 스키마 이름을 결정할 것인지 고려하십시오. FLINTSTONE이라는 제품이 있다고 가정 해보십시오. 스키마 이름은 FLINTSTONE이어야한다고 결정할 수 있습니다. 그러나 고객은 두 가지 제품 인스턴스 (예 : 현지 판매용, 다른 국가 용)를 실행하고 동일한 데이터베이스를 사용할 수 있습니다. 그래서 그들은 스키마 이름으로 FS_LOCAL과 FS_INTER를 원합니다. 이 옵션이 제품의 기능입니까?

다음으로 응용 프로그램이 스키마 소유자로 연결해야하는지 결정하십시오. 그렇게하지 않는 것이 좋은 보안상의 이유가 있습니다. 예를 들어, 스키마 소유자는 테이블을 삭제할 수있는 권한이 있습니다. 일반적으로 응용 프로그램에서는 수행하지 않으므로 최소 권한의 원칙에 따라 응용 프로그램이 수행 할 권한이 없어야합니다.

일반적으로 스키마 이름에 대한 응용 프로그램의 일부 구성 매개 변수를 권장하고 데이터베이스에 연결 한 후 응용 프로그램은 "ALTER SESSION SET CURRENT_SCHEMA = '구성 파일이 무엇이든간에'을 수행해야합니다. 응용 프로그램 데이터베이스 사용자는 응용 프로그램 스키마의 개체에 대해 적절한 삽입/업데이트/삭제/선택/실행 권한이 필요합니다. 응용 프로그램에서이를 수행 할 수없는 경우 데이터베이스에 LOGON 트리거가있을 수 있습니다.

0

게리는 DEV를 자신의 컴퓨터에서 스키마로 사용하지 않는 것이 맞습니다. 오라클을 사용할 때 우리는 일반적으로 클라이언트가 스키마 이름을 지정하기 위해 스키마를 설정합니다. 그러나 문제가 해결되지는 않습니다. 당신이해야 할 일은 오라클에 DEV를 CLIENTSCHEMA로 매핑하는 글로벌 앨리어스를 만드는 것입니다. 컴퓨터에서 여전히 스키마의 이름을 변경해야하지만 이렇게하면 스키마가 클라이언트와 다를 수 있습니다.

관련 문제