2011-07-04 17 views
5

tôi gặp sự cố với sqlplus trên loạt cửa sổ. Tôi đã sqlplus 10,2Làm thế nào để làm cho một sqlplus bỏ khi cơ sở dữ liệu không có sẵn?

tôi đang cố gắng để kết nối với một cơ sở dữ liệu thông qua một cửa sổ script.cmd

script.cmd chỉ ra mắt: sqlplus test/[email protected] @script.sql

Vấn đề là khi cơ sở dữ liệu là không có sẵn, sqlplus nói

ERROR: 
ORA-12541: TNS:no listener 
Enter user-name : 

và chờ đợi cho đầu vào .. và khối các .cmd

Làm thế nào tôi có thể Adap t kịch bản để dừng ngay lập tức khi cơ sở dữ liệu không có sẵn hoặc chỉ để tránh chờ đợi cho người dùng nhắc nhở?

Cảm ơn

Trả lời

12

Bạn có thể làm sqlplus -l test/[email protected] @script.sql; cờ -l có nghĩa là nó sẽ chỉ cố gắng kết nối một lần và nếu nó không thành công vì bất kỳ lý do gì sẽ thoát ra ngoài thay vì nhắc. Nhìn vào đầu ra của sqlplus -? hoặc xem the documentation.

0

có thể bạn nên nghĩ đến việc sử dụng TNSPING utility. Bạn có thể sử dụng nó trong kịch bản lệnh CMD trước khi thử kết nối với db với sqlplus. Trong trường hợp này, bạn nên phân tích đầu ra của nó.

-1

Bạn có thể thử với 2 kết nối.

Thứ nhất sẽ là kết quả của một tệp.

Trong phần thứ hai, hãy kiểm tra nội dung trong tệp đó. Nếu bạn không gặp phải ORA-12541 hoặc bất kỳ thông báo lỗi nào khác thì hãy gọi tập lệnh thứ hai.

Bạn có thể làm cho tất cả các lệnh bên trong một kịch bản hàng loạt và gọi nó với

SQLPLUS @script.sql 

và bên sử dụng

connect test/[email protected] 
Các vấn đề liên quan