Thứ Hai, 17 tháng 5, 2021

Cấu hình mạng trong Oracle Database (Oracle Network) với các thành phần listener.ora, tnsnames.ora, sqlnet.ora

Ở dạng cơ bản nhất, Oracle sử dụng ba file (listener.ora, tnsnames.ora & sqlnet.ora) để cấu hình mạng trong Oracle Database. Bài viết này đưa ra một ví dụ về mỗi tệp như một điểm khởi đầu cho cấu hình mạng đơn giản.

  • Môi trường
  • Listener.ora
  • tnsnames.ora
  • sqlnet.ora
  • Thử nghiệm
  • Những vấn đề chung

Môi trường

Các file ví dụ dưới đây có liên quan đến cài đặt và phiên bản Oracle với các giá trị sau.

  • HOST : myserver.example.com
  • ORACLE_HOME : /u01/app/oracle/product/11.2.0.4/db_1
  • ORACLE_SID : orcl
  • Service : orcl
  • DOMAIN : example.com

Listener.ora

Tệp "listerner.ora" chứa các thông số cấu hình mạng phía máy chủ. Nó có thể được tìm thấy trong thư mục "$ORACLE_HOME/network/admin" trên máy chủ. Đây là một ví dụ về tệp "listener.ora" cơ bản từ Linux. Chúng ta có thể thấy listener có tên mặc định là "LISTENER" và đang lắng nghe các kết nối TCP trên cổng 1521. Lưu ý tham chiếu đến tên máy chủ "myserver.example.com". Nếu điều này không chính xác, listener sẽ không hoạt động chính xác.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
      (ADDRESS = (PROTOCOL = TCP)(HOST = myserver.example.com)(PORT = 1521))
    )
  )

Sau khi tệp "listener.ora" được sửa đổi, listener phải được khởi động lại hoặc tải lại để cho phép cấu hình mới có hiệu lực.

$ # Restart
$ lsnrctl stop
$ lsnrctl start

$ # Or Reload.
$ lsnrctl reload

Listener được xác định ở trên không có bất kỳ dịch vụ (service) nào được xác định. Chúng được tạo ra khi các database instance tự động đăng ký với nó. Trong một số trường hợp, bạn có thể muốn cấu hình các dịch vụ theo cách thủ công để chúng vẫn hiển thị ngay cả khi phiên bản cơ sở dữ liệu không hoạt động. Bạn có thể sử dụng tệp "listener.ora" như sau.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
      (ADDRESS = (PROTOCOL = TCP)(HOST = myserver.example.com)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl.example.com)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/db_1)
      (SID_NAME = orcl) -- có thể đổi thành SERVICE_NAME=orcl
    )
  )

Nếu có nhiều database instance trên máy chủ, bạn có thể thêm nhiều mục  SID_DESC vào bên trong phần SID_LIST.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl.example.com)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/db_1)
      (SID_NAME = orcl) -- có thể đổi thành SERVICE_NAME=orcl
    )
    (SID_DESC =
      (GLOBAL_DBNAME = orcl2.example.com)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/db_1)
      (SID_NAME = orcl2) -- có thể đổi thành SERVICE_NAME=orcl2
    )
  )

tnsnames.ora

Tệp "tnsnames.ora" chứa các thông số cấu hình mạng phía máy client. Nó có thể được tìm thấy trong thư mục "$ORACLE_HOME/network/admin" trên máy client. Tệp này cũng sẽ hiện diện trên máy chủ nếu các kết nối kiểu máy client được sử dụng trên chính máy chủ. Đây là một ví dụ về tệp "tnsnames.ora".

LISTENER = (ADDRESS = (PROTOCOL = TCP)(HOST = myserver.example.com)(PORT = 1521))

orcl.example.com =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = myserver.example.com)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

Bí danh (alias) được sử dụng ở đầu mục nhập có thể là bất cứ điều gì bạn muốn. Nó không nhất thiết phải khớp với tên của instance hoặc dịch vụ. Hãy chú ý PROTOCOLHOSTvà PORTphù hợp của listener. Có thể SERVICE_NAME là bất kỳ dịch vụ hợp lệ nào được đưa ra bởi listener. Bạn có thể kiểm tra các dịch vụ hiện có bằng cách đưa ra các lệnh lsnrctl status hoặc lsnrctl service trên máy chủ cơ sở dữ liệu. Thông thường, có ít nhất một dịch vụ phù hợp với instance ORACLE_SID, nhưng bạn có thể tạo thêm.

sqlnet.ora

Tệp "sqlnet.ora" chứa các thông số cấu hình mạng phía máy client. Nó có thể được tìm thấy trong thư mục "$ORACLE_HOME/network/admin" trên máy client. Tệp này cũng sẽ hiện diện trên máy chủ nếu các kết nối kiểu máy client được sử dụng trên chính máy chủ hoặc nếu máy chủ cần kết nối đến các máy chủ cơ sở dữ liệu khác (VD tạo dblink, kết nối đến máy dataguard standby, dataguard primary). Đây là một ví dụ về tệp "sqlnet.ora".

NAMES.DIRECTORY_PATH = (TNSNAMES, ONAMES, HOSTNAME)
NAMES.DEFAULT_DOMAIN = example.com

# Mục nhập sau là cần thiết trên Windows nếu yêu cầu xác thực hệ điều hành.
SQLNET.AUTHENTICATION_SERVICES = (NTS)

Có rất nhiều tham số có thể được thêm vào để kiểm soát theo dõi, mã hóa, vị trí ví, v.v. Những thông số này nằm ngoài phạm vi của bài viết này.

Thử nghiệm (Testing)

Sau khi các tệp hiện diện ở vị trí chính xác và được sửa đổi khi cần thiết, cấu hình có thể được kiểm tra bằng SQL * Plus bằng cách thử kết nối với cơ sở dữ liệu bằng tên người dùng (SCOTT), mật khẩu (TIGER) và dịch vụ (orcl.example.com) thích hợp .

$ sqlplus scott/tiger@orcl.example.com

Những vấn đề thường gặp phải

Lệnh OS hostname phải trả về tên máy chủ chính xác của máy chủ cơ sở dữ liệu của bạn. Nếu không, hãy sửa đổi nó cho phù hợp

$ hostname
myserver.example.com
$

Máy chủ phải có mục nhập chính xác trong tệp "/etc/hosts" khớp với tên máy chủ và địa chỉ IP của máy chủ. Ví dụ trong trường hợp này, các giá trị như sau.

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.0.123 myserver.example.com myserver

 Nếu  được cung cấp bởi DNS, điều đó cũng tốt.

Nếu bạn đang sử dụng biến môi trường ORACLE_HOSTNAME, có thể được đặt trong "/home/oracle/.bash_profile", thì biến đó phải được đặt thành giá trị chính xác.

export ORACLE_HOSTNAME = myserver.example.com

Các HOST mục trong tập tin "listener.ora" phải trỏ đến một adapter mạng đang hoạt động, hoặc là thật hay loopback. Nếu không, người nghe sẽ không bắt đầu được.

Nếu mục HOST nhập trong tệp "listener.ora" được đặt thành "localhost", trình listener sẽ bắt đầu và chấp nhận các kết nối từ máy chủ cục bộ, chứ không phải từ các máy khách khác. Bạn thường mong đợi điều này được đặt thành tên máy chủ của máy chủ cơ sở dữ liệu, mặc dù một số người sử dụng địa chỉ IP thay thế.

Để máy khách thực hiện kết nối thông qua listener, phải có một đường dẫn rõ ràng qua mạng giữa hai máy. Nếu bạn đang gặp khó khăn trong việc kết nối, hãy kiểm tra tường lửa mạng và tường lửa cục bộ (iptables, firewalld, Windows Firewall) trên máy chủ cơ sở dữ liệu.

Hy vọng hữu ích cho bạn.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
hoặc
https://bit.ly/oaz_fp
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle dataguard, oracle goldengate, oracle weblogic, oracle exadata, hoc solaris, hoc linux, hoc aix

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master