如何在linux服务器上使用nodejs连接远程oracle数据库

网上教程有点不清楚,博主认为可以分几步走:

1、首先是node项目中要引用依赖包

const oracledb = require('oracledb');

2、去到linux服务器安装oracle的client,下载地址:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

有两种方式安装,可参考这篇博文:https://blog.youkuaiyun.com/zklth/article/details/7184032

博主选择rpm的安装文件,下载文件同时用ftp上传至linux服务器

oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.rpm 
oracle-instantclient11.2-sqlplus-11.2.0.1.0-1.x86_64.rpm
oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.rpm

3、使用命令行进行安装

rpm -ivh oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.rpm 
rpm -ivh oracle-instantclient11.2-sqlplus-11.2.0.1.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.rpm

安装完成后,ORACLE Instant Client 相关的头文件在 /usr/include/oracle/11.2/client64/下(sdk包中的),库文件在 /usr/lib/oracle/11.2/client64/下(cliient64目录下有 lib 和 bin两个目录)

4、去到根目录编辑 .bash_profile文件设置全局变量

export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG='simplified chinese_china'.ZHS16GBK
export LD_LIBRARY_PATH=$ORACLE_HOME/lib 
export PATH=$ORACLE_HOME/bin:$PATH

编辑完后执行

source  .bash_profile

5、 去到/usr/lib/oracle/11.2/client64/目录下新建文件夹/network/admin,同时在admin下创建 tnsnames.ora文件,

tnsnames.ora文件内容是连接数据库的配置,博主贴一下示例

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.232.131)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

6、回到nodejs项目,可以选择配置依赖路径

const oracledb = require('oracledb');

oracledb.initOracleClient({
    libDir: '/usr/lib/oracle/11.2/client64/lib',
    configDir: '/usr/lib/oracle/11.2/client64/network/admin'
});

7、最后编写连接数据库的方法,进行查询操作。

const oracledb = require('oracledb');

oracledb.initOracleClient({
    libDir: '/usr/lib/oracle/11.2/client64/lib',
    configDir: '/usr/lib/oracle/11.2/client64/network/admin'
});

module.exports = {

    connect: (connectInfo) => {

        return new Promise(async (resolve, reject) => {
            
            let connection;

            try {

                connection = await oracledb.getConnection({
                    user: "user",
                    password: "pwd",
                    connectString: "1.1.1.1:8888/DB"
                });

                const result = await connection.execute(
                    `select * from Table`,
                    [],
                );
                
                return resolve(result.rows);


            }
            catch (err) {

                return resolve(err.stack || err.message || "unknow error");

            }
            finally {

                if (connection) {

                    try {
                        await connection.close();
                    }
                    catch (err) {

                        return resolve(err.stack || err.message || "unknow error");

                    }

                }

            }
            
            return resolve(connection);

        });


    },

    close: conn => {
        conn.close(err => {
            if (err) console.error(err.message);
            
            console.log("关闭连接");
        });
    }

};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值