快速入门旨在介绍如何创建PolarDB PostgreSQL版(兼容Oracle)集群、进行基本设置以及连接数据库集群,使您能够了解从购买PolarDB PostgreSQL版(兼容Oracle)到开始使用的流程。
使用流程
通常,从购买PolarDB PostgreSQL版(兼容Oracle)(创建新集群)到可以开始使用,您需要完成如下操作。
步骤一:创建PolarDB PostgreSQL版(兼容Oracle)集群
- 登录PolarDB控制台。
- 单击页面左上角创建新集群。
- 选择包年包月或按量付费。说明
- 包年包月:在创建集群时支付计算节点(一个主节点和一个只读节点)的费用,而存储空间会根据实际数据量按小时计费,并从账户中按小时扣除。如果您要长期使用该集群,包年包月方式更为经济,而且购买时长越长,折扣越多。
- 按量付费:无需预先支付费用,计算节点和存储空间(根据实际数据量)均按小时计费,并从账户中按小时扣除。如果您只需短期使用该集群,可以选择按量付费,用完即可释放,节省费用。
- 设置如下参数。
参数 说明 地域 集群所在的地理位置。购买后无法更换地域。 说明 请确保PolarDB与需要连接的ECS创建于同一个地域,否则它们无法通过内网互通,只能通过外网互通,无法发挥最佳性能。创建方式 创建PolarDB集群的方式。 - 创建主集群:创建一个全新的PolarDB集群。
- 从回收站恢复:您可以通过从回收站中恢复已删除集群的备份来创建新集群。
- 原版本:已删除集群的版本。
- 已删除集群:已删除的集群名称。
- 历史备份:选择想要恢复的备份。
说明 其他选项用于创建其它引擎的数据库。主可用区 集群的主可用区。 - 可用区是地域中的一个独立物理区域,不同可用区之间没有实质性区别。
- 您可以选择将PolarDB与ECS创建在同一可用区或不同的可用区。
- 您只需要选择主可用区,系统会自动选择备可用区。
网络类型 固定为VPC专有网络,无需选择。 VPC网络 VPC交换机
请确保PolarDB与需要连接的ECS创建于同一个VPC,否则它们无法通过内网互通,无法发挥最佳性能。 - 如果您已创建符合您网络规划的VPC,直接选择该VPC。例如,如果您已创建ECS,且该ECS所在的VPC符合您的规划,那么选择该VPC。
- 如果您未创建符合您网络规划的VPC,您可以使用默认VPC和交换机:
- 默认VPC:
- 在您选择的地域中是唯一的。
- 网段掩码是16位,如172.31.0.0/16,最多可提供65536个私网IP地址。
- 不占用阿里云为您分配的VPC配额。
- 默认交换机:
- 在您选择的可用区中是唯一的。
- 网段掩码是20位,如172.16.0.0/20,最多可提供4096个私网IP地址。
- 不占用VPC中可创建交换机的配额。
- 默认VPC:
- 如果以上默认VPC和交换机无法满足您的要求,您可以自行创建VPC和交换机,详情请参见创建和管理专有网络。
兼容性 - MySQL 8.0(与MySQL 8.0完全兼容),原生支持并行查询,特定场景下性能提升十倍,详情请参见概述。
- MySQL 5.7(与MySQL 5.7完全兼容)。
- MySQL 5.6(与MySQL 5.6完全兼容)。
- PostgreSQL 11(与PostgreSQL 11 完全兼容)。
- PostgreSQL 14(与PostgreSQL 14 完全兼容)。
- 兼容Oracle语法(高度兼容Oracle语法)。
说明- 当前华北1(青岛)、英国(伦敦)和澳大利亚(悉尼)四个地域暂不支持PostgreSQL 11、PostgreSQL 14和兼容Oracle语法。
- PostgreSQL 14版本当前处于试用阶段。如有需求,请点击此处申请试用。
系列 默认为集群版(2-16个节点)【推荐】。 子系列 默认为独享规格。 节点规格 按需选择。所有PolarDB节点均为独享型,性能稳定可靠。 更多关于计算节点规格的详情,请参见规格与定价。
节点个数 如果源集群系列为集群版(2-16个节点)【推荐】, 系统将默认创建规格相同的两个节点(一主一只读),无需选择。 说明 如果主节点故障,系统会自动将只读节点切换为新的主节点,并重新生成一个只读节点,关于只读节点的更多信息,请参见产品架构。数据库代理类型 默认为企业独享版。 存储类型 PolarDB支持PSL5和PSL4两种存储类型: - PSL5:PolarDB历史版本中支持的存储类型。性能好,可靠性和可用性更强。
- PSL4:PolarDB全新推出的存储类型,采用阿里巴巴自研的硬件压缩盘(Smart-SSD)技术,在物理SSD磁盘层面压缩、解压缩存储的数据,保持性能影响可控的情况下,使单位容量数据的存储价格更低。
说明 对于已创建的集群,存储类型不支持切换。如需切换存储类型,建议您购买一个新的集群并配置预期的存储类型,将原有集群的数据迁移到新集群即可。关于两种存储类型的详细对比,请参见如何选择PSL4和PSL5。
存储计费类型 PolarDB支持按容量计费(按量付费)和按空间计费(包年包月)两种存储计费类型: - 按容量计费(按量付费):按容量计费采用Serverless方式,购买时无需选择容量,随着数据增长而在线自动扩容,只按实际数据量所占的存储空间大小收费。
- 按空间计费(包年包月):按空间计费是指在购买数据库集群时您需预支付集群的存储空间费用。
关于两种存储计费类型的购买方式,请参见存储空间计费方式。
说明 当商品类型为包年包月时,存储计费类型支持选择按容量计费(按量付费)或按空间计费(包年包月);当商品类型为按量付费时,不支持该配置,系统默认存储按量计费。存储费用 无需选择。系统会根据实际数据使用量按小时计费,详情请参见规格与定价。 说明 创建集群时无需选择存储容量,存储容量随数据量的增减而自动弹性伸缩。开启TDE 选择是否开启TDE加密。启用TDE加密后,PolarDB将对集群数据文件进行加密,对于业务访问透明,会有5%~10%的性能损失。 说明 TDE功能开启后不可关闭。集群名称 输入集群名称,集群名称需满足如下要求: - 不能以
http://
或https://
开头。 - 长度为2~256个字符。
如果留空,系统将为自动生成一个集群名称,创建集群后还可以修改。
资源组 从已创建资源组中选择一个目标资源组。 说明 资源组是在单个云账号下将一组相关资源进行统一管理的容器,一个资源只能归属于一个资源组,详情请参见RAM资源分组与授权。 - 设置购买数量后,单击立即购买。说明 最多可以一次性创建50个集群,适用于游戏批量开服等业务场景。
- 在确认订单页面确认订单信息,阅读并选中服务协议,单击立即开通即可。
开通成功后,需要10~15分钟创建集群,之后您就可以在集群列表中看到新创建的集群。
说明- 当集群中的节点状态为创建中时,整个集群可能仍未创建完成,此时集群不可用。只有当集群状态为运行中时,集群才可以正常使用。
- 请确认已选中正确的地域,否则无法看到您创建的集群。
- 当您的数据量较大时,推荐您购买PolarDB存储包,相比按小时付费,预付费购买存储包有折扣,购买的容量越大,折扣力度就越大。
步骤二:设置集群白名单
- 登录PolarDB控制台。
- 在控制台左上角,选择集群所在地域。
- 找到目标集群,单击集群ID。
- 在左侧导航栏,单击 。
- 在集群白名单页面,您可以新增IP白名单分组或配置已有白名单。
- 新增白名单分组
- 单击新增IP白名单分组。
- 在新增IP白名单分组对话框,输入分组名称和允许访问的IP白名单地址。说明 IP白名单分组名称需满足如下要求:
- 由小写字母、数字、下划线(_)组成。
- 由字母开头、字母或数字结尾。
- 长度为2~120个字符。
- 配置白名单
- 单击目标IP白名单分组名称右侧的配置。
- 在配置白名单对话框,输入允许访问的IP白名单地址。说明
- 每个集群都默认包含一个
default
的白名单分组,且只包含IP地址127.0.0.1
,表示任何IP地址均无法访问该数据库集群。 - 若将IP白名单设置为
%
或者0.0.0.0/0
,表示允许任何IP地址访问数据库集群。该设置将极大降低数据库的安全性,如非必要请勿使用。
- 每个集群都默认包含一个
- 新增白名单分组
- 单击确定即可。说明 目前支持创建50个IP白名单,所有IP白名单累积支持添加1000个IP地址或地址段。
步骤三:创建数据库账号
- 登录PolarDB控制台。
- 在控制台左上角,选择集群所在地域。
- 找到目标集群,单击集群ID。
- 在左侧导航栏中,单击 。
- 单击创建账号。
- 设置以下参数:
参数 说明 账号名 填写账号名称。要求如下:
- 以小写字母开头,以字母或数字结尾。
- 由小写字母、数字或下划线组成。
- 长度为2~16个字符。
- 不能使用某些预留的用户名,如root、admin。
账号类型 - 创建高权限账号,选择高权限账号。
- 创建普通账号,选择普通账号。
密码 设置账号的密码。要求如下: - 由大写字母、小写字母、数字或特殊字符组成,至少包含其中三类。
- 长度为8~32个字符。
- 特殊字符为:
!@#$%^&*()_+-=
确认密码 再次输入密码。 备注 备注该账号的相关信息,便于后续账号管理。要求如下: - 不能以http://或https://开头。
- 必须以大小写字母或中文开头。
- 可以包含大小写字母、中文、数字、下划线(_)或连字符(-)。
- 长度为2~256个字符。
- 单击确定。
步骤四:确认集群参数默认值并配置参数
具体操作请参见配置参数。
步骤五:连接数据库集群
通过客户端连接PolarDB PostgreSQL版(兼容Oracle),本文以DMS为例,操作步骤如下:
- 登录PolarDB控制台。
- 在控制台左上角,选择集群所在地域。
- 找到目标集群,单击集群ID。
- 单击基本信息页面右上角的登录数据库。
- 在弹出的对话框中,输入PolarDB集群中创建的数据库账号和数据库密码。
- 单击登录。说明 如果您是首次使用DMS连接PolarDB集群,系统会提示您授权白名单,单击确认后即可完成授权。
- 登录后刷新DMS页面,在左侧导航栏中,单击已登录实例。
- 找到目标数据库,双击目标数据库即可切换到目标数据库。
更多连接方式请参见连接数据库集群。
步骤六:创建示例数据库
- 以下示例将为您演示如何创建表
dept
、表emp
和表jobhist
。CREATE TABLE dept ( deptno NUMBER(2) NOT NULL CONSTRAINT dept_pk PRIMARY KEY, dname VARCHAR2(14) CONSTRAINT dept_dname_uq UNIQUE, loc VARCHAR2(13) );
CREATE TABLE emp ( empno NUMBER(4) NOT NULL CONSTRAINT emp_pk PRIMARY KEY, ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2) CONSTRAINT emp_sal_ck CHECK (sal > 0), comm NUMBER(7,2), deptno NUMBER(2) CONSTRAINT emp_ref_dept_fk REFERENCES dept(deptno) );
CREATE TABLE jobhist ( empno NUMBER(4) NOT NULL, startdate DATE NOT NULL, enddate DATE, job VARCHAR2(9), sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2), chgdesc VARCHAR2(80), CONSTRAINT jobhist_pk PRIMARY KEY (empno, startdate), CONSTRAINT jobhist_ref_emp_fk FOREIGN KEY (empno) REFERENCES emp(empno) ON DELETE CASCADE, CONSTRAINT jobhist_ref_dept_fk FOREIGN KEY (deptno) REFERENCES dept (deptno) ON DELETE SET NULL, CONSTRAINT jobhist_date_chk CHECK (startdate <= enddate) );
- 以下示例将为您演示如何在表中插入数据。
INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK'); INSERT INTO dept VALUES (20,'RESEARCH','DALLAS'); INSERT INTO dept VALUES (30,'SALES','CHICAGO'); INSERT INTO dept VALUES (40,'OPERATIONS','BOSTON');
INSERT INTO emp VALUES (7369,'SMITH','CLERK',7902,'17-DEC-80',800,NULL,20); INSERT INTO emp VALUES (7499,'ALLEN','SALESMAN',7698,'20-FEB-81',1600,300,30); INSERT INTO emp VALUES (7521,'WARD','SALESMAN',7698,'22-FEB-81',1250,500,30); INSERT INTO emp VALUES (7566,'JONES','MANAGER',7839,'02-APR-81',2975,NULL,20); INSERT INTO emp VALUES (7654,'MARTIN','SALESMAN',7698,'28-SEP-81',1250,1400,30); INSERT INTO emp VALUES (7698,'BLAKE','MANAGER',7839,'01-MAY-81',2850,NULL,30); INSERT INTO emp VALUES (7782,'CLARK','MANAGER',7839,'09-JUN-81',2450,NULL,10); INSERT INTO emp VALUES (7788,'SCOTT','ANALYST',7566,'19-APR-87',3000,NULL,20); INSERT INTO emp VALUES (7839,'KING','PRESIDENT',NULL,'17-NOV-81',5000,NULL,10); INSERT INTO emp VALUES (7844,'TURNER','SALESMAN',7698,'08-SEP-81',1500,0,30); INSERT INTO emp VALUES (7876,'ADAMS','CLERK',7788,'23-MAY-87',1100,NULL,20); INSERT INTO emp VALUES (7900,'JAMES','CLERK',7698,'03-DEC-81',950,NULL,30); INSERT INTO emp VALUES (7902,'FORD','ANALYST',7566,'03-DEC-81',3000,NULL,20); INSERT INTO emp VALUES (7934,'MILLER','CLERK',7782,'23-JAN-82',1300,NULL,10);
INSERT INTO jobhist VALUES (7369,'17-DEC-80',NULL,'CLERK',800,NULL,20,'New Hire'); INSERT INTO jobhist VALUES (7499,'20-FEB-81',NULL,'SALESMAN',1600,300,30,'New Hire'); INSERT INTO jobhist VALUES (7521,'22-FEB-81',NULL,'SALESMAN',1250,500,30,'New Hire'); INSERT INTO jobhist VALUES (7566,'02-APR-81',NULL,'MANAGER',2975,NULL,20,'New Hire'); INSERT INTO jobhist VALUES (7654,'28-SEP-81',NULL,'SALESMAN',1250,1400,30,'New Hire'); INSERT INTO jobhist VALUES (7698,'01-MAY-81',NULL,'MANAGER',2850,NULL,30,'New Hire'); INSERT INTO jobhist VALUES (7782,'09-JUN-81',NULL,'MANAGER',2450,NULL,10,'New Hire'); INSERT INTO jobhist VALUES (7788,'19-APR-87','12-APR-88','CLERK',1000,NULL,20,'New Hire'); INSERT INTO jobhist VALUES (7788,'13-APR-88','04-MAY-89','CLERK',1040,NULL,20,'Raise'); INSERT INTO jobhist VALUES (7788,'05-MAY-90',NULL,'ANALYST',3000,NULL,20,'Promoted to Analyst'); INSERT INTO jobhist VALUES (7839,'17-NOV-81',NULL,'PRESIDENT',5000,NULL,10,'New Hire'); INSERT INTO jobhist VALUES (7844,'08-SEP-81',NULL,'SALESMAN',1500,0,30,'New Hire'); INSERT INTO jobhist VALUES (7876,'23-MAY-87',NULL,'CLERK',1100,NULL,20,'New Hire'); INSERT INTO jobhist VALUES (7900,'03-DEC-81','14-JAN-83','CLERK',950,NULL,10,'New Hire'); INSERT INTO jobhist VALUES (7900,'15-JAN-83',NULL,'CLERK',950,NULL,30,'Changed to Dept 30'); INSERT INTO jobhist VALUES (7902,'03-DEC-81',NULL,'ANALYST',3000,NULL,20,'New Hire'); INSERT INTO jobhist VALUES (7934,'23-JAN-82',NULL,'CLERK',1300,NULL,10,'New Hire');
步骤七:查询数据
您可以使用SELECT语句来查询表,以下示例将查询emp
表中所有的列。
SELECT * FROM emp;
empno | ename | job | mgr | hiredate | sal | comm | deptno
-------+--------+-----------+------+--------------------+---------+---------+--------
7369 | SMITH | CLERK | 7902 | 17-DEC-80 00:00:00 | 800.00 | | 20
7499 | ALLEN | SALESMAN | 7698 | 20-FEB-81 00:00:00 | 1600.00 | 300.00 | 30
7521 | WARD | SALESMAN | 7698 | 22-FEB-81 00:00:00 | 1250.00 | 500.00 | 30
7566 | JONES | MANAGER | 7839 | 02-APR-81 00:00:00 | 2975.00 | | 20
7654 | MARTIN | SALESMAN | 7698 | 28-SEP-81 00:00:00 | 1250.00 | 1400.00 | 30
7698 | BLAKE | MANAGER | 7839 | 01-MAY-81 00:00:00 | 2850.00 | | 30
7782 | CLARK | MANAGER | 7839 | 09-JUN-81 00:00:00 | 2450.00 | | 10
7788 | SCOTT | ANALYST | 7566 | 19-APR-87 00:00:00 | 3000.00 | | 20
7839 | KING | PRESIDENT | | 17-NOV-81 00:00:00 | 5000.00 | | 10
7844 | TURNER | SALESMAN | 7698 | 08-SEP-81 00:00:00 | 1500.00 | 0.00 | 30
7876 | ADAMS | CLERK | 7788 | 23-MAY-87 00:00:00 | 1100.00 | | 20
7900 | JAMES | CLERK | 7698 | 03-DEC-81 00:00:00 | 950.00 | | 30
7902 | FORD | ANALYST | 7566 | 03-DEC-81 00:00:00 | 3000.00 | | 20
7934 | MILLER | CLERK | 7782 | 23-JAN-82 00:00:00 | 1300.00 | | 10
(14 rows)
如果您需要查询指定的列,可以执行如下命令:
SELECT ename, sal, sal * 24 AS yearly_salary, deptno FROM emp;
ename | sal | yearly_salary | deptno
--------+---------+---------------+--------
SMITH | 800.00 | 19200.00 | 20
ALLEN | 1600.00 | 38400.00 | 30
WARD | 1250.00 | 30000.00 | 30
JONES | 2975.00 | 71400.00 | 20
MARTIN | 1250.00 | 30000.00 | 30
BLAKE | 2850.00 | 68400.00 | 30
CLARK | 2450.00 | 58800.00 | 10
SCOTT | 3000.00 | 72000.00 | 20
KING | 5000.00 | 120000.00 | 10
TURNER | 1500.00 | 36000.00 | 30
ADAMS | 1100.00 | 26400.00 | 20
JAMES | 950.00 | 22800.00 | 30
FORD | 3000.00 | 72000.00 | 20
MILLER | 1300.00 | 31200.00 | 10
(14 rows)
如果您要查询部门20中工资超过1000的员工,可以执行如下命令:
SELECT ename, sal, deptno FROM emp WHERE deptno = 20 AND sal > 1000;
ename | sal | deptno
-------+---------+--------
JONES | 2975.00 | 20
SCOTT | 3000.00 | 20
ADAMS | 1100.00 | 20
FORD | 3000.00 | 20
(4 rows)
请求按排序顺序返回查询结果,例如按姓名顺序返回查询结果,可以执行如下命令:
SELECT ename, sal, deptno FROM emp ORDER BY ename;
ename | sal | deptno
--------+---------+--------
ADAMS | 1100.00 | 20
ALLEN | 1600.00 | 30
BLAKE | 2850.00 | 30
CLARK | 2450.00 | 10
FORD | 3000.00 | 20
JAMES | 950.00 | 30
JONES | 2975.00 | 20
KING | 5000.00 | 10
MARTIN | 1250.00 | 30
MILLER | 1300.00 | 10
SCOTT | 3000.00 | 20
SMITH | 800.00 | 20
TURNER | 1500.00 | 30
WARD | 1250.00 | 30
(14 rows)
如果您需要查询某一列中不同的值,例如查询job
列中有哪些职业,可以使用如下命令:
SELECT DISTINCT job FROM emp;
job
-----------
ANALYST
CLERK
MANAGER
PRESIDENT
SALESMAN
(5 rows)