2012-02-21 20 views
5

Tôi có 2 kết nối với các bảng khác nhau trong sqldeveloper.truy vấn từ các kết nối oracle khác nhau trong sqldeveloper

giả:

ConnectionA với bảng: A, B, C ConnectionB với bảng: D, E, F

Bây giờ tôi muốn có một truy vấn mà trông như thế này:

chọn aa.name, dd.id từ A aa, D đ;

Tôi làm cách nào để thực hiện việc này?

+2

Bảng không kết nối cụ thể. Có lẽ bạn có nghĩa là lược đồ? –

+0

Trong sqldeveloper bạn có thể tạo các kết nối có bảng riêng của chúng – user999379

+4

@ user999379 - Các kết nối không có bảng. Các kết nối cho phép bạn đăng nhập vào một cơ sở dữ liệu cụ thể như một người dùng cụ thể sở hữu một tập các đối tượng cụ thể (một lược đồ). Kết nối không sở hữu bất kỳ đối tượng nào. –

Trả lời

9

Nếu bạn muốn truy vấn các đối tượng trong hai cơ sở dữ liệu khác nhau bằng cách sử dụng một câu lệnh SQL, bạn sẽ cần phải tạo một liên kết cơ sở dữ liệu giữa hai cơ sở dữ liệu. Liên kết cơ sở dữ liệu là một đối tượng nằm trong cơ sở dữ liệu và độc lập với công cụ truy vấn. Trong cơ sở dữ liệu A, ví dụ, bạn có thể tạo liên kết cơ sở dữ liệu

CREATE DATABASE LINK to_b 
    CONNECT TO username IDENTIFIED BY password 
    USING tns_alias_on_a_pointing_to_b 

Và sau đó khi bạn kết nối với A, bạn có thể làm một cái gì đó giống như

SELECT aa.name, dd.id 
    FROM a aa, 
     [email protected]_b dd 
WHERE aa.some_key = dd.some_key 
+0

tôi nhận được lỗi này: Lỗi SQL: ORA-12154: TNS: không thể giải quyết mã định danh kết nối được chỉ định – user999379

+0

@ user999379 - Bạn nhận được lỗi này, tôi giả sử, khi bạn chạy câu lệnh 'SELECT'? Khi bạn tạo liên kết cơ sở dữ liệu, bí danh TNS cần tồn tại trên cơ sở dữ liệu A và cần trỏ đến cơ sở dữ liệu B. Bí danh TNS trên A trỏ đến B có thể khác với bí danh TNS được xác định trong hệ thống cục bộ của bạn (đặc biệt nếu bạn sử dụng cách đặt tên cục bộ với tệp tnsnames.ora cục bộ). –

+1

Chúng tôi có một cơ sở dữ liệu "sống" và một cơ sở dữ liệu "demo" chạy trên cùng một máy chủ Oracle DB. Cả hai đều được thiết lập trong cùng một tệp tnsnames.ora. Vì vậy, đối với tôi nó đơn giản như thực hiện câu lệnh này dưới kết nối trực tiếp của tôi: 'CREATE DATABASE LINK demodb SỬ DỤNG 'demodb';' trong đó demodb là SID của cơ sở dữ liệu demo của chúng ta trong tnsnames.ora. Bây giờ tôi có thể truy vấn các bảng cơ sở dữ liệu demo từ kết nối db trực tiếp của tôi bằng cách chỉ thêm @demodb vào cuối tên bảng. – Baodad

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