2010-08-13 19 views
8

Tôi đang cố gắng kết nối với một oracle db từ một ứng dụng ASP cổ điển, tuy nhiên tôi tiếp tục chạy vào lỗi ORA-12154.Oracle (0x80004005) ORA-12154: TNS: không thể giải quyết số nhận dạng kết nối

  1. tnsnames.ora được cấu hình đúng

    DBSOURCE.ABcom = (DESCRIPTION = (ADDRESS_LIST = (ĐỊA CHỈ = (PROTOCOL = TCP) (HOST = CDBcom) (PORT = 1231)) ) (CONNECT_DATA = (SERVICE_NAME = DBSOURCE) ) )

  2. tôi có thể tnsping

    C: \ Documents and Settings \ USERID.A> tnsping DBSOURCE

    TNS Ping Utility dành cho Windows 32-bit: Phiên bản 10.2.0.4.0 - Sản xuất trên 09-MAR-2 011 09:12:31

    Bản quyền (c) 1997, 2007, Oracle. Đã đăng ký Bản quyền.

    sử dụng file tham số: C: \ oracle \ sản phẩm \ 10.2.0 \ client_1 \ NETWORK \ ADMIN \ sqlnet.ora

    sử dụng bộ chuyển đổi TNSNAMES để giải quyết bí danh Cố gắng liên hệ (DESCRIPTION = (ADDRESS_LIST = (ĐỊA CHỈ = (PROTOCOL = TCP) (HOST = CDBcom) (PORT = 1231))) (CONNECT_DATA = (SERVIC E_NAME = DBSOURCE))) OK (30 msec)

  3. tôi có thể tạo một ODBC kết nối và tôi đã kiểm tra kết nối thành công.

  4. Tôi có thể kết nối với oracle db qua cóc.
  5. Tôi đã kiểm tra tập tin sqlnet.ora tôi

    NAMES.DEFAULT_DOMAIN = ABcom

    SQLNET.AUTHENTICATION_SERVICES = (NONE)

    NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)

  6. Tôi cũng đã kiểm tra rằng TNSNAMES.ORA là một trong các đường dẫn hệ thống của tôi.

  7. tôi có thể kết nối đến DB với sqlplus

Dưới đây là đoạn code mà ném lỗi

dim CnnStr 

Set Cnn = Server.CreateObject("ADODB.Connection") 

CnnStr="Provider=MSDAORA.1;Password=pass;User ID=user;Data Source=DBSOURCE" 

Cnn.Open CnnStr 

Tôi đang chạy Windows XP Pro SP3 32bit

Tôi đã thử nghiệm này trên một máy đồng nghiệp và các ứng dụng asp không có vấn đề, tôi thiếu một cấu hình ở đâu đó hoặc tôi đã mess lên cấu hình của tôi?

Cảm ơn sự giúp đỡ của mọi người!

Trả lời

4

Có vẻ như tất cả các thiết lập đã được kiểm tra nhưng đây là gợi ý của tôi đối với một số chụp rắc rối:

  • Làm thế nào về hạn chế đối với các tài khoản IIS đang chạy dưới? Liệu nó có quyền truy cập tập tin để đọc TNSNAMES không? Bạn đã cố gắng cung cấp cho người dùng nhiều quyền hơn chưa. Thậm chí chạy IIS với tài khoản hệ thống cục bộ? Hãy nhớ để nó trở lại cách nó được.
  • Bạn chắc chắn không có ứng dụng bên thứ 3 như vi-rút hoặc tường lửa có thể ảnh hưởng/chặn quyền truy cập. (Vô hiệu hóa chúng để kiểm tra nhưng đừng quên để kích hoạt lại :)

(gì đã cuối cùng bạn làm gì để giải quyết nó?)

+0

Cảm ơn bạn rất nhiều! Sau khi bao gồm USERID \ USERS trong Nhóm của tôi hoặc tên người dùng cho phép trong tệp TNSNAMES.ORA nó hoạt động! – ChickSentMeHighE

+0

Làm việc như một sự quyến rũ. đau đớn nghiêm trọng trong một $$. – temarsden

2

"tính năng này hoạt động trên máy đồng nghiệp nhưng không phải của tôi".

ORA-12154 thường là vấn đề về cấu hình và chắc chắn có vẻ như vậy trong trường hợp của bạn. Câu trả lời ngắn gọn là so sánh máy tính của bạn với đồng nghiệp của bạn và tìm ra sự khác biệt là gì.

Những điều cần kiểm tra bao gồm: nộp

  • các TNANAMES.ORA nộp
  • các sqlnet.ora
  • file listener.ora (nếu bạn đang sử dụng một cơ sở dữ liệu địa phương)
+0

Nguyên thats những gì tôi mặc dù quá, tuy nhiên sau khi sao chép các tnsnames.ora và sqlnet.ora từ đồng nghiệp của tôi (ai công trình kết nối) nó vẫn không giải quyết được vấn đề – ChickSentMeHighE

+0

Điều kỳ lạ là ở đó anh ta có thể ping cơ sở dữ liệu thông qua tnsping. Tạo một kết nối ODBC và kiểm tra nó từ giao diện ODBC hoạt động tốt. Kết nối thông qua sqlplus cũng hoạt động ... – Mike

+0

Có thể có một số dịch vụ cần khởi động lại để nhận thay đổi TNSNAMES.ORA hoặc cài đặt đăng ký). Có thể thử bỏ qua TNSNAMES.ORA bằng cách chỉ định trực tiếp máy chủ: port: service –

0

Thử đặt giá trị của biến môi trường TNS_ADMIN trên máy có vấn đề với/network/admin (hoặc bất cứ nơi nào tệp tnsnames.ora của bạn tồn tại) và xem có giúp ích gì không.

+0

Cảm ơn bạn đã trả lời, tuy nhiên nó không giải quyết được vấn đề: ( – ChickSentMeHighE

1

Nếu bạn đang chạy một hệ điều hành 64-bit và oracle 10 hãy thử cài đặt tất cả các bản vá lỗi cho oracle. Một cái gì đó tương tự đã xảy ra với tôi, SQL cộng và tất cả những người khác làm việc, ngoại trừ chương trình .NET của tôi. Tôi đang chạy chương trình .Net trong thư mục "Program files (x86)". Cài đặt các bản vá đã sửa nó.

+0

Bạn có thể vui lòng cho tôi biết tất cả các bản vá cần thiết để cài đặt. – SharpCoder

2

Bạn có nhiều nhà của Oracle không? Kiểm tra xem IIS không trỏ đến ORA_HOME khác (và do đó không tìm thấy mục nhập tnsnames.ora của bạn). Tôi không quen thuộc với cấu hình IIS, vì vậy tôi sẽ kiểm tra điều này bằng cách thêm mục nhập TNS vào tất cả tnsnames.ora trên máy tính của tôi.

1

Vấn đề có thể là thiếu sự cho phép đọc trên các thư mục Oracle bởi IIS người dùng đang chạy.

Khi @Derick nói, tạm thời đặt quyền mở rộng trên thư mục $ ORACLE_HOME (Mọi người = Toàn quyền kiểm soát), khởi động lại IIS và kiểm tra. Khi nó hoạt động, hãy cho phép người dùng IIS đọc quyền đối với thư mục đó.

Bạn cũng có thể xác nhận vấn đề này bằng cách sử dụng Process Monitor from Microsoft SysInternals và xem thông báo lỗi trong lệnh gọi API CreateFile (...) để mở tệp DLL hoặc đọc tệp TNSNAMES.ORA. Với cách các tệp tạm thời hoạt động khi chọn qua các con trỏ, bạn cũng có thể cần cấp cho người dùng IIS quyền ghi vào một số thư mục.

0

Tôi gặp sự cố tương tự và tìm thấy giải pháp đơn giản. Bạn không phải sửa đổi bất kỳ tệp cấu hình nào.Hy vọng điều này có thể giúp bạn:

CREATE DATABASE LINK server2_db 
    CONNECT TO dbuser IDENTIFIED BY pwd USING 
'(DESCRIPTION = 
    (ADDRESS_LIST = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = server_2)(PORT = port_num)) 
    ) 
    (CONNECT_DATA = 
    (SERVICE_NAME = server2_db) 
    ) 
)'; 

Giải pháp là từ đây: http://oraclequirks.blogspot.com/2008/11/ora-12154-tnscould-not-resolve-service.html

Các vấn đề liên quan