2017-04-26 95 views
0

嘿,我真的想弄清楚如何連接到遠程Oracle測試數據庫,我沒有Java經驗。所以如果我能得到你的幫助,我會永遠感激。通過Oracledb驅動程序連接到帶有Nodejs的遠程Oracle數據庫

我有一個遠程測試數據庫,我試圖連接到,我有一箇舊式SID的jdbc連接。根據此鏈接:https://github.com/oracle/node-oracledb/blob/master/doc/api.md#notjdbc,我應該創建一個tnsnames.ora文件置入連接,像這樣:

的tnsnames.ora:

appDB = 
(DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521)) 
    (CONNECT_DATA = 
    (SID = ORCL) 
    ) 
) 

,然後我應該引用它在我的節點server.js文件,像這樣

server.js:

const oracledb = require('oracledb'); 
oracledb.getConnection(
    { 
    user   : process.env.ORACLE_USER, 
    password  : process.env.ORACLE_PASSWORD, 
    connectString : "appDB" 
    }, 
    function(err, connection) 
    { 
    if (err) { 
     console.error(err.message); 
     return; 
    } 
    connection.execute(
     "SELECT * " + 
     "FROM BOS_course", 
     function(err, result) 
     { 
     if (err) { 
      console.error(err.message); 
      doRelease(connection); 
      return; 
     } 
     console.log(result.rows); 
     doRelease(connection); 
     }); 
    }); 

module.exports = { 
    oracledb 
}; 

但是,我不知道在哪裏,我應該把tnsnames.ora文件。我在網上找到這個鏈接$ORACLE_HOME/network/admin,但我不知道它是指什麼。我只有有限的數據庫訪問權限。請原諒我的Java無知。如何在我的節點應用程序中使用此連接,該應用程序與數據庫完全分離?我的應用程序如何知道「appDB」是什麼以及如何在tnsnames.ora文件中找到它?

在此先感謝!

回答

0

放在connectString中變量

{ user : process.env.ORACLE_USER, password : process.env.ORACLE_PASSWORD, connectString : "(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))(CONNECT_DATA =(SID= ORCL)))" }

+1

你是我最喜歡的人。謝謝@Isalamon! –

0

完整的連接地址,在技術上回答這個問題,設置環境變量TNS_ADMIN。然後,node-oracledb(以及其他基於OCI的語言API,如Python cx_Oracle,PHP OCI8,Ruby ruby​​-oci8等)將查找$TNS_ADMIN/tnsnames.ora

0

我有一個類似的情況,我有兩個虛擬機在天藍。一個用於Oracle12c DB,另一個用於使用Oracle客戶端庫的nodejs oracledb軟件包。這是我從客戶端連接到遠程數據庫的連接字符串。

module.exports = { 
    user   : process.env.NODE_ORACLEDB_USER || "hr", 
    password  : process.env.NODE_ORACLEDB_PASSWORD || "welcome", 
    connectString : process.env.LOCAL || "myipaddress:1521/servicename", 
}; 
相關問題