실행 중인 Oracle 데이터베이스에서 SHELL을 변경할 수 있습니까?

실행 중인 Oracle 데이터베이스에서 SHELL을 변경할 수 있습니까?

방금 새 계약을 시작했는데 이전에 처리해 본 적이 없는 문제에 직면했습니다.

Oracle 데이터베이스는 korn 쉘에서 시작됩니다.

oracle:x:500:100:Oracle user:/home/oracle:/usr/bin/ksh

나는 모든 bash 스크립트를 가지고 있고 테스트 환경은 없습니다. 매일 bash를 사용하는 것을 즐기십시오.

.profile에서 bash를 호출해 보았지만 스크립트에 환경 변수가 필요하고 다른 쉘이 시작되면 문제가 발생합니다.

실행 중인 프로세스에 영향을 주지 않고 로그인 시 /etc/passwd를 편집하고 bash 쉘을 시작할 수 있습니까?

답변1

데이터베이스 자체는 로그인 셸을 자주 사용하지 않을 수 있습니다.

로그인 쉘은 bash스크립트 작성에 로그인 쉘을 사용하는 것을 제한하지 않습니다. 스크립트의 - 라인은 #!스크립트를 실행하는 데 사용할 인터프리터를 쉘에 알려줍니다. 이는 특정 스크립트에 적합한 bash또는 ksh또는 python또는 무엇이든 될 수 있습니다.perl

유일한 차이점은 사용자로 로그인할 때 로그인 셸이 무엇인지 oracle와 로그인 셸이 사용될 수 있는 다른 모든 위치입니다(어디에 있는지 보려면 Oracle 데이터베이스 설명서를 읽어야 하지만,내가 아는 한, kshbash모두 csh지원됩니다.)

개인적으로 나는 로그인 셸을 변경하는 것을 피하고 대신 bash명령줄에서 대화형 셸을 수동으로 시작합니다(사용자로서 대화형 작업에 사용하려는 셸인 경우) oracle.

답변2

정기적인 사용을 위해 개인 Unix 계정을 생성하고(bash 사용 가능) 필요한 경우에만 oracle 계정을 사용하는 것이 좋습니다. 이렇게 하면 계정 변경(또는 Oracle에서 수행 방법에 대해 보낼 수 있는 문서가 무효화되는 것에 대해 걱정할 필요가 없습니다. 이) 그리고 발생할 수 있는 모든 사고. 셸을 변경해도 실행 중인 프로세스가 중단되지는 않지만 놀라움을 유발할 수 있습니다.

수행하려는 대부분의 DDL/DML 작업의 경우 Oracle 사용자일 필요는 없습니다. Oracle 사용자만 있으면 됩니다. 개인 계정을 사용할 수 있습니다.

답변3

이 질문에 정확히 답하려면: 물론입니다.할 수 있다영향을 주지 않고 Oracle 쉘을 변경합니다.현재의프로세스. 그러나 chsh/etc/passwd를 편집하지 않는 것이 좋습니다.

ksh에서 oracle로 실행될 것으로 예상되는 cron(또는 예약된) 작업을 고려해보세요. 또한 ksh를 로그인 쉘로 실행하려는 기존 프로세스에서 생성된 모든 작업을 고려하십시오.

빨리 살펴보세요Linux x86-64용 Oracle® 데이터베이스 빠른 설치 가이드 11g 릴리스 1(11.1)ksh 이외의 셸에 대한 일부 지원을 나타내지만 이에 따라 필요한 셸 프로필을 설정해야 합니다.

이와 같이 변경한 후에는 앱을 재활용하여 모든 것을 다시 얻을 수 있도록 하겠습니다.

~/.bashrc 및/또는 ~/.bash_profile을 설정한 다음 exec bash대화형으로 작업할 때 입력하는 것이 더 쉬울 수 있습니다.

관련 정보