Cấm ORA-24454: tên máy chủ của khách hàng không được đặt Đặt khi kết nối từ phiên bản Ubuntu trên AWS EC2


10

Một số nền tảng: Tôi đang cố gắng kết nối với cơ sở dữ liệu Oracle. Tôi có tên người dùng, mật khẩu, địa chỉ IP, cổng và tên dịch vụ. Tôi chỉ có quyền truy cập vào cơ sở dữ liệu này từ một phiên bản Ubuntu EC2 trên AWS vì cơ sở dữ liệu Oracle nằm trong một tổ chức khác. Do đó, tôi không có quyền truy cập vào tên máy chủ DNS cho máy này.

Tôi đã tải xuống gói ứng dụng khách "Oracle Instant Client with SQL Plus" từ trang web của Oracle và trích xuất nó vào một thư mục. Khi tôi cố chạy nó, tôi nhận được thông báo này:

ORA-24454: tên máy chủ của khách hàng không được đặt

Câu trả lời:


15

Sau hai giờ, tôi đã tìm ra nó.

Tài liệu của Oracle về lỗi ban đầu dường như không được mô tả khủng khiếp:

ORA-24454: tên máy chủ của khách hàng không được đặt

Nguyên nhân : Tên máy chủ mạng trong các tệp như / etc / hosts không được đặt.

Hành động : Đặt tên máy chủ và thử lại.

Bây giờ, lệnh đã hoạt động trên máy của tôi (máy tính xách tay Ubuntu), nhưng nó không hoạt động trên EC2. Tôi HOSTNAMEđã tìm hiểu về biến số một chút và cố gắng tìm hiểu xem có cách nào để ghi đè "tên máy chủ của khách hàng" trong sqlpluscài đặt không - không có xúc xắc. Cuối cùng tôi đã so sánh máy chủ / etc / của máy của tôi với máy chủ trong EC2 và nhận thấy dòng này không có trong EC2:

127.0.1.1 my-laptop-hostname

Tôi không biết điều này trước đây, nhưng rõ ràng là bình thường trên các máy dựa trên Debian để ánh xạ tên máy chủ của hệ thống tới địa chỉ IP này . Tôi thậm chí không biết rằng 127.0.1.1 là một IP loopback; Tôi chỉ biết về 127.0.0.1.

Hơn nữa, có vẻ như sqlplusdựa vào dòng này hiện diện. Vẫn không biết tại sao.

Dù sao, cách khắc phục rất đơn giản:

$ sudo /bin/bash -c "echo '127.0.1.1 ${HOSTNAME}' >> /etc/hosts"

1
Giải pháp này hiệu quả với tôi trên Mac Book Pro.
axiopisty

1
Cảm ơn bạn! Tôi gặp vấn đề khi kết nối với cơ sở dữ liệu Oracle bằng Python và pyodbc. Phần còn thiếu tôi cần là đây : echo "127.0.0.1 `hostname`" >> /etc/hosts.
L42

Rất kỳ lạ, tôi thấy rằng điều này cũng hoạt động với tôi trên MacBook Pro, trong khi tôi đang chạy docker wnamless / oracle-xe-11g, cho dù kết nối trực tiếp qua IP, bằng "localhost" hoặc "tên máy chủ của tôi", tôi cần thiết để có dòng này trong / etc / hosts trỏ IP loopback 127.0.0.1 vào tên máy chủ của tôi. Khi thêm nó, tất cả đều hoạt động, khi gỡ bỏ nó, mọi thứ bị hỏng, thêm lại, mọi thứ đều ổn trở lại. Rất kỳ quặc.
turiyag

3

Điều này là do cài đặt VPC mà EC2 được tạo bên dưới, được đặt thành không :

Trong VPC của bạn -> tab Tóm tắt ,

Tên máy chủ DNS : không

Để tránh giải quyết thủ công như người khác trả lời, hãy đặt giá trị của tên máy chủ DNS thành có


3

Nó đã được đề cập trong một nhận xét ở trên, nhưng dòng này đã khắc phục vấn đề này cho tôi trên MacBook Pro của tôi, chạy docker wnamless / oracle-xe-11g trên cổng 1521.

sudo /bin/bash -c "echo '127.0.0.1 ${HOSTNAME}' >> /etc/hosts"

Các lệnh sau đây đều hoạt động tốt:

sqlplus system/oracle@localhost:1521/xe
sqlplus system/oracle@127.0.0.1:1521/xe
sqlplus system/oracle@my-personal-hostname:1521/xe

Rất kỳ quặc, nhưng đó là sửa chữa.


1

Tôi đã có vấn đề này trong macOS của tôi

Vui lòng đảm bảo rằng bạn đã nhập chính xác tên máy chủ của mình vào /etc/hosttệp của bạn

để thực hiện > hostnamelệnh đó sẽ hiển thị "tên máy chủ thực sự của máy Mac" và dòng bên dưới tới / etc / hosts

127.0.0.1 your_host_name.local

1

Vấn đề này đã xảy ra với tôi, nhưng không được giải quyết chỉ bằng giải pháp trên. Nếu bạn đang sử dụng máy khách 11g / 12g, bạn sẽ gặp một lỗi khác.

Để khắc phục lỗi, hãy làm như sau:

  1. hostname -A trả về cùng tên máy chủ xuất hiện trong /etc/sysconfig/network
  2. Xác minh rằng tên máy chủ nằm trong tên của bạn /etc/hostsnhư đã lưu ý ở trên (tên máy chủ 127.0.0.1)

0

Đối với những người sử dụng một trong các máy ảo, Oracle cung cấp VPN có thể là một yếu tố ở đây.

Nếu được kết nối, ngắt kết nối khỏi VPN sẽ khắc phục sự cố.

Vì một số lý do, máy khách Oracle không thích kết nối với VPN, mặc dù thực tế là lưu lượng mạng cho Cơ sở dữ liệu Oracle sẽ không rời khỏi máy cục bộ

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.