我创建了一个连接到RDS for PostgreSQL的数据库链接,并尝试查看数据
首先
在自主数据库中,可以创建与Oracle之外的数据库,如Amazon Redshift、MySQL、PostgreSQL、Snowflake等之间的数据库链接。
目前,以下是前提条件:
– 目标数据库能够从公共互联网访问。
– 目标数据库已设置允许SSL/TLS连接。
因此,這次我們在Autonomous Database中創建了一個連接到RDS for PostgreSQL的數據庫鏈接,並嘗試從Autonomous Database中查看RDS for PostgreSQL內的數據。
1. PostgreSQL的RDS配置
我們將事先設定虛擬私有雲 (VPC) 的網路,以便自動化的資料庫能夠從自己的出站IP連接到RDS for PostgreSQL。
使用psql命令连接到RDS for PostgreSQL。
[opc@tools ~]$ psql -U postgres -h testpg.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
Password for user postgres:
psql (14.2, server 14.6)
SSL connection (cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256)
Type "help" for help.
postgres=>
创建用于验证的数据库testdb。
postgres=> CREATE DATABASE testdb;
CREATE DATABASE
postgres=>
我将连接到创建的数据库testdb。
postgres=> \c testdb
psql (14.2, server 14.6)
SSL connection (cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256)
You are now connected to database "testdb" as user "postgres".
testdb=>
创建一个名为dept的表格,用于进行验证。
testdb=> CREATE TABLE dept (
testdb(> deptno INT,
testdb(> dname VARCHAR(14),
testdb(> loc VARCHAR(13),
testdb(> PRIMARY KEY (deptno)
testdb(> );
CREATE TABLE
testdb=>
向表dept中添加数据。
testdb=> INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK');
INSERT 0 1
testdb=> INSERT INTO dept VALUES (20,'RESEARCH','DALLAS');
INSERT 0 1
testdb=>
查看dept表的内容。
testdb=> SELECT * FROM dept;
deptno | dname | loc
--------+------------+----------
10 | ACCOUNTING | NEW YORK
20 | RESEARCH | DALLAS
(2 rows)
testdb->
退出psql。
testdb-> \q
[opc@tools ~]$
2. 连接到自主数据库
使用 SQL*Plus 连接到自主数据库。
[opc@tools ~]$ sqlplus admin/Demo#1Demo#1@testatp1_medium
SQL*Plus: Release 19.0.0.0.0 - Production on 火 5月 23 12:29:53 2023
Version 19.16.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
最終正常ログイン時間: 月 5月 22 2023 10:45:45 +09:00
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.1.0
に接続されました。
SQL>
创建用于从Autonomous Database连接到RDS for PostgreSQL的凭据。
使用DBMS_CLOUD.CREATE_CREDENTIAL存储过程,创建一个名为RDS_PG_CRED的凭证,用于从Autonomous Database连接到RDS for PostgreSQL。
在username参数中指定PostgreSQL的用户名,在password参数中指定该用户的密码。
SQL> BEGIN
2 DBMS_CLOUD.CREATE_CREDENTIAL(
3 credential_name => 'RDS_PG_CRED',
4 username => 'postgres',
5 password => 'Demo#1Demo#1'
6 );
7 END;
8 /
PL/SQL procedure successfully completed.
SQL>
已成功创建了 RDS_PG_CRED 凭证。
创建一个连接从Autonomous Database到RDS for PostgreSQL的数据库链接。
使用DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK过程,在Autonomous Database和RDS for PostgreSQL之间创建数据库链接。指定DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK的每个参数如下所示。
SQL> BEGIN
2 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
3 db_link_name => 'RDS_PG_LINK',
4 hostname => 'testpg.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com',
5 port => '5432',
6 service_name => 'testdb',
7 credential_name => 'RDS_PG_CRED',
8 gateway_params => JSON_OBJECT('db_type' value 'POSTGRES'),
9 ssl_server_cert_dn => NULL
10 );
11 END;
12 /
PL/SQL procedure successfully completed.
SQL>
5. 通过数据库链接,从Autonomous Database中引用RDS for PostgreSQL内的数据。
由于可以在自主数据库(Autonomous Database)和RDS for PostgreSQL之间创建数据库连接,因此我可以尝试通过自主数据库中的数据库链接来查看RDS for PostgreSQL中的数据。
在指定引用表时,需要以小写字母括在双引号中,例如”dept”。
在指定引用表时,如果要指定模式,同样需要以”模式名”.”表名”的形式进行写作。
SQL> SELECT * FROM "dept"@RDS_PG_LINK;
deptno dname loc
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
SQL>
我們成功地通過Autonomous Database通過數據庫鏈接讀取了RDS for PostgreSQL中的數據。
请看
使用Oracle-Managed异构连接创建到非Oracle数据库的数据库链接
创建凭据过程
创建数据库链接过程
从您的自治数据库访问Amazon Redshift、Snowflake和其他非Oracle数据库