如何将Oracle Cloud数据库连接到Oracle Linux 8
上的nodejs后端数据库对于许多实用软件应用程序至关重要,因为它们允许对数据进行持久,分析和操纵。将应用程序连接到数据库是开发人员的常见要求,并且此功能通常由各种编程语言支持。
一种这样的语言就是nodejs,它提供了用于在基于节点的应用程序和Oracle数据库之间建立连接的oracledb
Node package。
要开始连接到云数据库,您将需要一个部署的Oracle数据库,您可以从中访问其云钱包。请参阅Oracle的Autonomous Databases。
软件版本
本教程假设Oracle Linux 8和Oracle自主数据库21C。我们将使用节点V18和oracledb
5.1.0。截至2023年3月,本教程是准确的。
如何开始
- 我们建议您首先更新您的所有软件包:
sudo yum update -y && sudo yum upgrade -y
2。确保安装了这些Linux软件包:
sudo yum install nodejs
sudo yum install wget
sudo yum install glibc
3。使用以下外壳代码下载并安装Oracle Instant Client for Linux x86–64 Version 21.9 Basic Package (OL8 RPM)。还可以在链接网页的底部找到详细的安装说明:
wget https://download.oracle.com/otn_software/linux/instantclient/219000/oracle-instantclient-basic-21.9.0.0.0-1.el8.x86_64.rpm
sudo yum install oracle-instantclient-basic-21.9.0.0.0-1.el8.x86_64.rpm
4。更新您的PATH
环境:
export PATH=/usr/lib/oracle/21/client64/bin:$PATH
5。 Provision Oracle Cloud上的自主数据库实例,然后下载钱包
Oracle Cloud Console的屏幕截图,导致数据库钱包的下载
6。解开钱包:
sudo cp Wallet_*.zip /usr/lib/oracle/21/client64/lib/network/admin/
sudo sh -c 'cd /usr/lib/oracle/21/client64/lib/network/admin/ && unzip -B Wallet_*.zip'
应该存在包括/usr/lib/oracle/21/client64/lib/network/admin/tnsnames.ora
在内的钱包文件。
7。在同一目录中创建这两个文件:
package.json
:
{
"name": "Demo",
"version": "1.0.0",
"private": true,
"description": "Demo app",
"keywords": [
"myapp"
],
"dependencies": {
"oracledb": "^5.1.0"
},
"author": "You",
"license": "MIT"
}
example.js
:
const oracledb = require("oracledb");
async function run() {
let connection;
try {
connection = await oracledb.getConnection({
user: "myuser", // TODO CHANGE THIS
password: "mypassword", // TODO CHANGE THIS
connectionString: "db_high", // TODO CHANGE THIS
});
console.log("Successfully connected to Oracle Database");
// Create a table
await connection.execute(`begin
execute immediate 'drop table todoitem';
exception when others then if sqlcode <> -942 then raise; end if;
end;`);
await connection.execute(`create table todoitem (
id number generated always as identity,
description varchar2(4000),
creation_ts timestamp with time zone default current_timestamp,
done number(1,0),
primary key (id))`);
// Insert some data
const sql = `insert into todoitem (description, done) values(:1, :2)`;
const rows = [
["Task 1", 0],
["Task 2", 0],
["Task 3", 1],
["Task 4", 0],
["Task 5", 1],
];
let result = await connection.executeMany(sql, rows);
console.log(result.rowsAffected, "Rows Inserted");
connection.commit();
// Now query the rows back
result = await connection.execute(
`select description, done from todoitem`,
[],
{ resultSet: true, outFormat: oracledb.OUT_FORMAT_OBJECT }
);
const rs = result.resultSet;
let row;
while ((row = await rs.getRow())) {
if (row.DONE) console.log(row.DESCRIPTION, "is done");
else console.log(row.DESCRIPTION, "is NOT done");
}
await rs.close();
} catch (err) {
console.error(err);
} finally {
if (connection) {
try {
await connection.close();
} catch (err) {
console.error(err);
}
}
}
}
run();
相应地更新user
和password
。并将connectionString
更改为/usr/lib/oracle/21/client64/lib/network/admin/tnsnames.ora
中的等效值。
8。安装并运行应用程序:
npm install
node example.js
,你去了!如果您看到一些日志,并且看不到任何错误,则意味着连接是建立的!
参考
安全港口陈述
此渠道/文章/故事中提供的信息仅用于信息目的,不能用作任何合同协议的一部分。内容不能保证提供任何材料,代码或功能,也不应成为做出购买决策的唯一基础。本网站上的帖子是我自己的,不一定反映了Oracle或Mythics,LLC的观点或作品。
这项工作是根据Creative Commons Attribution 4.0 International License许可的。