Tôi hiện đang gặp sự cố trong đó tôi không thể tham chiếu bảng trong cơ sở dữ liệu được liên kết trong một thủ tục được lưu trữ. Tôi nhận được thông báo lỗi:Oracle: Sử dụng liên kết cơ sở dữ liệu trong một thủ tục lưu sẵn: bảng hoặc dạng xem không tồn tại
ORA-00942: table or view does not exist
Dưới đây là các bước tôi đã trên máy chủ (chạy oracle 10g) để thiết lập các liên kết cơ sở dữ liệu cơ sở dữ liệu từ xa (chạy oracle 11g). Các bước là chính xác, nhưng một số tên đã được thay đổi, mặc dù chúng đã được giữ nhất quán.
Cập nhật tnsnames.ora, thêm một mục mới:
REMOTE_DB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = 10.10.10.10) (QUEUESIZE = 20) (PORT = 1521) ) (CONNECT_DATA = (SERVICE_NAME = remote_service) ) )
Tạo liên kết cơ sở dữ liệu, như người sử dụng người sau này sẽ được tạo ra và thực hiện các thủ tục lưu trữ:
create database link remote_link connect to "remote_user" identified by "remote_pass" using 'REMOTE_DB';
Chứng chỉ liên kết cơ sở dữ liệu đang hoạt động bằng cách chọn từ đó:
select id from [email protected]_link; id -------------------------------------------------------------------------------- 8ac6eb9b-fcc1-4574-8604-c9fd4412b917 c9e7ee51-2314-4002-a684-7817b181267b cc395a81-56dd-4d68-9bba-fa926dad4fc7 d6b450e0-3f36-411a-ba14-2acc18b9c008
Tạo thủ tục lưu trữ mà phụ thuộc vào liên kết cơ sở dữ liệu làm việc:
create or replace PROCEDURE test_remote_db_link AS v_id varchar(50); BEGIN select id into v_id from [email protected]_link where id = 'c9e7ee51-2314-4002-a684-7817b181267b'; dbms_output.put_line('v_id : ' || v_id); END test_remote_db_link;
Explode đầu riêng sau khi nhìn chằm chằm vào thông báo lỗi sau trong hơn cả một ngày làm việc:
Error(10,27): PL/SQL: ORA-00942: table or view does not exist
tôi đã thử nhiều cách để cố gắng sắp xếp vấn đề này, bao gồm:
Khi tạo liên kết cơ sở dữ liệu, không sử dụng dấu ngoặc kép quanh tên người dùng và mật khẩu. Liên kết tạo ra tốt, nhưng chọn từ nó mang lại cho tôi lỗi này:
ERROR at line 1: ORA-01017: invalid username/password; logon denied ORA-02063: preceding line from TWS_LINK
Đã thử kết hợp tên người dùng và mật khẩu khác nhau trên/chữ thường. Đã nhận được lỗi giống như 1.
Trích dẫn một lần thử thay vì dấu ngoặc kép xung quanh tên người dùng và mật khẩu. Nhận được lỗi này:
ERROR at line 1: ORA-00987: missing or invalid username(s)
Chứng minh tôi có quyền truy cập đầy đủ vào db từ xa bằng cách kết nối vào nó với sqlplus:
[oracle]$ sqlplus remote_user/[email protected]_DB SQL*Plus: Release 10.2.0.1.0 - Production on Thu Oct 20 22:23:12 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL>
Tôi không biết phải làm gì tiếp theo. Bước tiếp theo có thể là bắt đầu xem xét các vấn đề trên cơ sở dữ liệu từ xa và có thể xem liệu các cơ sở dữ liệu khác có thể kết nối với nó hay không. Khác sẽ là nhìn vào sự không tương thích đi từ máy chủ 10g đến 11g từ xa.
Viết tốt. Rất rõ ràng. –
Cùng một triệu chứng này có thể xảy ra nếu đặc quyền lựa chọn của bạn xuất phát từ vai trò.Bạn phải có trợ cấp trực tiếp trên một đối tượng để sử dụng nó trong một chương trình pl/sql. xem http://www.dba-oracle.com/concepts/roles_security.htm –