2013-08-29 1 views
0

Oracle의 인스턴스에 연결하는 작은 스크립트가 있습니다. 이 스크립트는 resque worker 외부에서 실행될 때 잘 동작합니다. 그것은 심지어 콘솔에서 잘 실행됩니다. 그러나, 우리는 resque 노동자에 같은 스크립트를로드 할 때 우리는 많은 것들을 시도했습니다왜 ruby-oci8은 resque worker에서는 "연결 식별자를 해결할 수 없습니다"하지만 콘솔에서는 해결할 수 없습니까?

TNS:could not resolve the connect identifier specified 

가 발생합니다,하지만 아무것도 지금까지 근무하지 않았다.

resque 작업자는 루트 환경과 콘솔에서 작동하는 동일한 클래스를 호출합니다.

답변

0

분명히, resque 노동자 그렇게 $ TNS_ADMIN을 볼 수 없었다 나는 수동으로 application.rb에 ENV를 [ 'TNS_ADMIN'] 설정

0

글쎄, 나는 루비에 대해 아무 것도 모른다. 그래서 나는 당신이 복용하고있는 환경을 완전히 이해하지 못한다. 그러나 나는 오라클을 알고있다.

내가 'TNS가 있음을 알 수 있습니다 : "지정된 연결 식별자를 확인할 수 없습니다 오라클이 설정 한 환경 제공, 일명, 연결 식별자를 해결 문자열을 연결할 수 있다는 것을 의미 그래서

. 어떤 것들에 대해 생각해 볼 수 있습니다 :

리퀘스트 작업자의 실행 환경 (미안하지만, 그게 뭔지는 모르겠다)에서 ORACLE_HOME 환경 변수를 적절하게 설정해야합니다. 오라클은 tnsnames.ora, sqlnet.ora, ldap TNS_ADMIN이 설정되어 있지 않으면 $ ORACLE_HOME/network/admin에 $ ORACLE_HOME/.ora 등을 추가하고 $ ORACLE_HOME/network/admin 위치는 $ TNS_ADMIN으로 설정하면 $ ORACLE_HOME/network/admin 위치를 덮어 씁니다

다시 말하지만, 나는 루비에 익숙하지 않거나 "리스크 작업자"가 무엇인지 알지 못하므로, 두 환경을 비교하고 그들이 다르게 설정되어 있는지 확인합니다.

희망이 있습니다.

오라클과 루비를 아는 사람이 함께하면 더 구체적인 조언을 제공 할 수 있습니다.

다시 도움이 될만한 희망입니다.

관련 문제