• [热门活动] 华为云云数据库GaussDB T于2019年12月31日00:00(北京时间)转商通知
    尊敬华为云客户:华为云计划于2019/12/31 00:00:00(北京时间)将云数据库 GaussDB T产品正式转商用。服务正式商用后,将于2019/12/31 00:00(北京时间)正式开始收费,计费模式为包周期和按需计费。华为云在此提醒您,如果您不再需要使用该服务,请及时删除资源,以免产生费用。更多关于GaussDB T的产品介绍,请您点击了解。如您有任何问题,可随时通过工单或者服务热线(4000-955-988或950808)与我们联系。感谢您对华为云的支持!
  • [问题求助] GaussDB 200 6.5.1单节点安装后,创建集群启动MPPDB服务失败
    GaussDB 200 6.5.1单节点安装后,创建集群启动MPPDB服务失败,希望有遇到此问题的大神帮助分析一下,谢谢![2019-09-02 05:02]Begin to export default keytab files.[2019-09-02 05:02]End to export default keytab files.[2019-09-02 05:02]Start service for Service[name: MPPDB, displayName: MPPDB, cluster: CVICSE].[2019-09-02 05:02]Start role for ROLE[name: MPPDBServer, serviceDisplayName: MPPDB, cluster: CVICSE].[2019-09-02 05:02]Start roleInstance for MPPDBServer#192.168.22.95@host0.[2019-09-02 05:02]RoleInstance prepare to start complete for MPPDBServer#192.168.22.95@host0.[2019-09-02 05:02]RoleInstance start failure [{ScriptExecutionResult=ScriptExecutionResult [exitCode=1, output=, errMsg=]}] for MPPDBServer#192.168.22.95@host0.[2019-09-02 05:02]Role start failure for Service[name: MPPDB, displayName: MPPDB, cluster: CVICSE].[2019-09-02 05:02]RESID_OM_STEPCOMMON_0006 failure, because Failed to start the entity.
  • [热门活动] GaussDB 100 存储过程综合练习(一)
                                                                                     存储过程综合练习练习一;输入部门名称,显示内部成员的工号,姓名、基本工资及总薪资。要求员工按照字母顺序依次显示。 建表语句;create table test_sections(SECTION_ID BINARY_INTEGER  primary key auto_increment , SECTION_NAME VARCHAR(20 BYTE), SECTION_EMPLOYEE BINARY_INTEGER) ;添加数据;insert into test_sections values(1,'开发部' ,0);   insert into test_sections values(2,'维护部' ,0);      insert into test_sections values(3,'运营部' ,0);部门表: ----------------------------------- -------- ------------------------------------SECTION_ID                          NOT NULL BINARY_INTEGERSECTION_NAME                                 VARCHAR(20 BYTE)SECTION_EMPLOYEE                             BINARY_INTEGER建表语句;create table test_employee(EMPLOYEE_ID BINARY_INTEGER primary key auto_increment ,SECTION_ID BINARY_INTEGER ,EMPLOYEE_NAME VARCHAR(20 BYTE) ,BASE_PAY BINARY_INTEGER ,EMPLOYEE_SALARY BINARY_INTEGER) ;添加数据;insert into test_employee values(1,1,'张三',4000,5000);   insert into test_employee values(2,2,'李四',3000,4100);   insert into test_employee values(3,3,'王五',3500,4000);   insert into test_employee values(4,1,'赵六',4020,5010)   insert into test_employee values(5,1,'张小三',3080,4400)   insert into test_employee values(6,1,'李小四',4000,5000)   insert into test_employee values(7,1,'王小五',4000,5000)   insert into test_employee values(8,1,'赵小六',4000,5000)   insert into test_employee values(9,1,'马七',4000,5000)   insert into test_employee values(10,2,'马小七',4000,5000)   insert into test_employee values(7,1,'wxw',4000,5000)员工信息表;----------------------------------- -------- ------------------------------------EMPLOYEE_ID                         NOT NULL BINARY_INTEGERSECTION_ID                                   BINARY_INTEGEREMPLOYEE_NAME                                VARCHAR(20 BYTE)BASE_PAY                                     BINARY_INTEGEREMPLOYEE_SALARY                              BINARY_INTEGER 更新部门人数;    update  test_sections  set  SECTION_EMPLOYEE=(select count(1) from test_employee where  test_sections.SECTION_ID=test_employee.SECTION_ID ) ; 创建存储过程; create or replace procedure test_select(name in varchar2 ) is  letter varchar2(5) :='a' ; -- 定义变量,用来存储首字母,从a开始,循环递增至z 。  type cur_type is ref cursor ; -- 声明游标类型。  result_set cur_type; --定义游标变量。  TYPE record_type is record(         emp_id test_employee.EMPLOYEE_ID%type,                              emp_name test_employee.EMPLOYEE_NAME%type,         sec_name test_sections.SECTION_NAME%type,         emp_bas test_employee.BASE_PAY%type ,         emp_sal test_employee.EMPLOYEE_SALARY%type );    --声明记录类型。  result_record  record_type;   --定义记录变量。  department_count int ;  --记录输入的部门是否存在。  is_have int  ;   --记录部门内是否有员工。  employee_num int ; --记录是否还有以某个字母开头的当前部门的员工。 begin  select count(*) into department_count from test_sections where SECTION_NAME like name;  if department_count<1 then            dbms_output.put_line('部门名称输入有误!');            return;        end if;  select t3.SECTION_EMPLOYEE into employee_num from test_sections t3 where t3.SECTION_NAME like name;  if employee_num=0  then            dbms_output.put_line('部门暂无员工!');            return;        end if;  loop   exit when letter='z' ;   letter:=chr(ascii(letter)+1);   open result_set for select t1.EMPLOYEE_ID,t1.EMPLOYEE_NAME,t2.SECTION_NAME,t1.BASE_PAY,t1.EMPLOYEE_SALARY                         from test_employee t1                      join test_sections t2  on t1.SECTION_ID=t2.SECTION_ID           where t2.SECTION_NAME=name and EMPLOYEE_NAME like  letter||'%' ;            select count(*) into is_have from test_employee where  EMPLOYEE_NAME like  letter||'%'  ;   if is_have>0 then    dbms_output.put_line('首字母'||letter||':');    dbms_output.put_line('员工编号  员工姓名  所在部门  基本工资  实发工资');   end if ;    loop    fetch result_set into result_record ;    exit when result_set%notfound;     dbms_output.put_line(  result_record.emp_id||'                            '||result_record.emp_name||'                  '||result_record.sec_name      ||'                    '||result_record.emp_bas||'                       '||result_record.emp_sal);   end loop;  end loop ;  dbms_output.put_line('打印完毕!');  exception  when no_data_found then   dbms_output.put_line('部门名称有误!');  when  others  then   dbms_output.put_line('程序异常!'); end ; / call test_select('开发部'); call test_select('支撑部');  各位看官,看都看完了,点个赞再走呗!     
  • [热门活动] GaussDB 100 分区表管理
    操作场景GaussDB 100分区表支持范围分区(Range Partition)、列表分区(List Partition)、哈希分区(Hash Partition)与间隔分区(INTERVAL Partition)。表分区功能可以改善数据库的查询性能,增强可用性,方便维护,以及均衡I/O等。相关概念GaussDB 100数据库支持的分区表为范围分区表、列表分区表、哈希分区表和间隔分区表。范围分区表:将数据基于范围映射到每一个分区,这个范围是由创建分区表时指定的分区键决定的。这种分区方式是最为常用的,并且分区键经常采用日期,例如将销售数据按照月份进行分区。间隔分区表:间隔分区表是一种特殊的范围分区表。对于普通的范围分区,用户预先创建了多少个分区,如果添加不在该分区的数据时,数据库会报错,这种情况下,用户可以手动添加分区,也可以使用间隔分区。比如用户会按照每天一个分区的方式使用range分区表,在业务部署时会创建一批分区(如3个月)以备后续使用,但是3个月后需要再次创建,不然后续的业务数据入库会报错。range分区的这种方式增加了维护成本,需要内核支持分区的自动创建功能。如果使用间隔分区,用户可以不必关心后续分区的创建,既减少分区的设计成本和维护成本。列表分区表:将庞大的表分割成小的、易于管理的小块。哈希分区表:在很多情况下,用户无法预测某个列上的数据变化范围,因而无法实现创建固定数量的范围分区或列表分区。在这种情况下,哈希分区提供了一种在指定数量的分区中均等地划分数据的方法,写入表中的数据均匀地分布在各个分区中,用户无法预测数据将被写入哪个分区中。例如,如果销售城市不是相对固定的,而是遍布全国各地,很难对表进行列表分区,此时可以对该表进行哈希分区。分区表和普通表相比具有以下优点:改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索效率。增强可用性:如果分区表的某个分区出现故障,表在其他分区的数据仍然可用。方便维护:如果分区表的某个分区出现故障,需要修复数据,只修复该分区即可。均衡I/O:可以把不同的分区映射到不同的磁盘以平衡I/O,改善整个系统性能。操作步骤按照以下方式对范围分区表进行操作。删除已存在的重名表,以一个已存在的表“staffs_p”为例。DROP TABLE IF EXISTS staffs_p;创建分区表staffs_p。CREATE TABLE staffs_p(  staff_ID    NUMBER(6) not null,  FIRST_NAME     VARCHAR2(20),  LAST_NAME      VARCHAR2(25),  EMAIL          VARCHAR2(25),  PHONE_NUMBER   VARCHAR2(20),  HIRE_DATE      DATE,  employment_ID         VARCHAR2(10),  SALARY         NUMBER(8,2),  COMMISSION_PCT NUMBER(2,2),  MANAGER_ID     NUMBER(6),  section_ID  NUMBER(4))PARTITION BY RANGE (staff_ID)(  partition P_050_BEFORE values less than (50),  partition P_100 values less than (100) ,  partition P_150 values less than (150) ,  partition P_200 values less than (200));删除分区P_200_AFTER。ALTER TABLE staffs_p DROP PARTITION P_200_AFTER;增加分区P_250,范围为 200 <= P_250 <=250。ALTER TABLE staffs_p ADD PARTITION P_250 VALUES LESS THAN (250);查询分区P_150。SELECT * FROM staffs_p PARTITION (P_150);创建分区表索引创建分区表索引HR_staffS_p1_index1,不指定索引分区的名字。CREATE INDEX HR_staffS_p1_index1 ON staffs_p (staff_ID) LOCAL;创建分区表索引HR_staffS_p1_index2,并指定索引分区的名字。CREATE INDEX HR_staffS_p1_index2 ON staffs_p (section_ID) LOCAL(    PARTITION section_ID1_index,    PARTITION section_ID2_index TABLESPACE USERS,    PARTITION section_ID3_index TABLESPACE USERS,    PARTITION section_ID4_index,    PARTITION staff_ID5_index) TABLESPACE USERS;按照以下方式对哈希分区表进行操作。删除已存在的重名表,以一个已存在的表“staffs_p2017和staffs_p2018”为例。DROP TABLE IF EXISTS staffs_p2017; DROP TABLE IF EXISTS staffs_p2018;创建分区表创建指定分区个数,但不指定分区名的哈希分区表。CREATE TABLE staffs_p2018(  staff_ID    NUMBER(6) not null,  FIRST_NAME     VARCHAR2(20),  LAST_NAME      VARCHAR2(25),  EMAIL          VARCHAR2(25),  PHONE_NUMBER   VARCHAR2(20),  HIRE_DATE      DATE,  employment_ID         VARCHAR2(10),  SALARY         NUMBER(8,2),  COMMISSION_PCT NUMBER(2,2),  MANAGER_ID     NUMBER(6),  section_ID  NUMBER(4))PARTITION BY HASH (staff_ID) PARTITIONS 5 STORE IN(USERS,USERS);创建指定分区名,但不指定分区个数的哈希分区表。CREATE TABLE staffs_p2017(  staff_ID    NUMBER(6) not null,  FIRST_NAME     VARCHAR2(20),  LAST_NAME      VARCHAR2(25),  EMAIL          VARCHAR2(25),  PHONE_NUMBER   VARCHAR2(20),  HIRE_DATE      DATE,  employment_ID         VARCHAR2(10),  SALARY         NUMBER(8,2),  COMMISSION_PCT NUMBER(2,2),  MANAGER_ID     NUMBER(6),  section_ID  NUMBER(4))PARTITION BY HASH(staff_ID)(  PARTITION P_01 tablespace USERS,  PARTITION P_02 tablespace USERS,  PARTITION P_03 tablespace USERS,  PARTITION P_04 tablespace USERS,  PARTITION P_05 tablespace USERS);删除分区执行删除操作时,最后一个分区的数据添加到前边的某个分区里,然后将最后一个分区删掉。如果只剩下一个分区,删除时会报错。ALTER TABLE staffs_p2017 COALESCE PARTITION;ALTER TABLE staffs_p2018 COALESCE PARTITION;增加分区part_06。ALTER TABLE staffs_p2017 ADD PARTITION part_06;查询分区查询指定分区名的哈希分区表的分区。查询分区P_04。SELECT * FROM staffs_p2017 PARTITION(P_04);查询指定分区个数的哈希分区表的分区。--通过联合查询系统表SYS.SYS_TABLE_PARTS和SYS.SYS_TABLES查询出分区名。SELECT * FROM SYS.SYS_TABLE_PARTS WHERE TABLE# = (SELECT ID FROM SYS.SYS_TABLES WHERE NAME='STAFFS_P2018');USER#        TABLE#       PART#        NAME                                                             HIBOUNDLEN   HIBOUNDVAL                                                       SPACE#       ORG_SCN              ENTRY                INITRANS     PCTFREE      FLAGS        BHIBOUNDVAL                                                      ROWCNT       BLKCNT       EMPCNT       AVGRLN       SAMPLESIZE   ANALYZETIME ------------ ------------ ------------ ---------------------------------------------------------------- ------------ ---------------------------------------------------------------- ------------ -------------------- -------------------- ------------ ------------ ------------ ---------------------------------------------------------------- ------------ ------------ ------------ ------------ ------------ ---------------------- 2            71           10           SYS_P1023                                                        0                                                                             3            2189599603179522     4393751543808        2            8            0                                                                                                                                              2            71           20           SYS_P1024                                                        0                                                                             3            2189599603179523     4393751543808        2            8            0                                                                                                                                              2            71           30           SYS_P1025                                                        0                                                                             3            2189599603179524     4393751543808        2            8            0                                                                                                                                              2            71           40           SYS_P1026                                                        0                                                                             3            2189599603179525     4393751543808        2            8            0 4 rows fetched.--查询名为SYS_P1024的分区的数据。SELECT * FROM STAFFS_P2018 PARTITION(SYS_P1024);创建分区表索引创建分区表索引HR_staffS_p1_index_2017,不指定索引分区的名字。CREATE INDEX HR_staffS_p1_index_2017 ON staffs_p2017 (staff_ID) LOCAL;创建分区表索引HR_staffS_p1_index_2017_1,并指定索引分区的名字。CREATE INDEX HR_staffS_p1_index_2017_1 ON staffs_p2017 (employment_ID) LOCAL(    PARTITION employment_ID1_index,    PARTITION employment_ID2_index TABLESPACE USERS,    PARTITION employment_ID3_index TABLESPACE USERS,    PARTITION employment_ID4_index,    PARTITION employment_ID5_index) TABLESPACE USERS;按照以下方式对间隔分区表进行操作。删除已存在的重名表,以一个已存在的表“staffs_p2016”为例。DROP TABLE IF EXISTS staffs_p2016;创建分区表staffs_p2016。CREATE TABLE staffs_p2016(  staff_ID    NUMBER(6) not null,  FIRST_NAME     VARCHAR2(20),  LAST_NAME      VARCHAR2(25),  EMAIL          VARCHAR2(25),  PHONE_NUMBER   VARCHAR2(20),  HIRE_DATE      DATE,  employment_ID         VARCHAR2(10),  SALARY         NUMBER(8,2),  COMMISSION_PCT NUMBER(2,2),  MANAGER_ID     NUMBER(6),  section_ID  NUMBER(4))PARTITION BY RANGE (staff_ID)INTERVAL (2)(  partition P_50 values less than (50),  partition P_100 values less than (100),  partition P_150 values less than (150));删除分区--通过联合查询系统表SYS.SYS_TABLE_PARTS和SYS.SYS_TABLES查询出分区名。SELECT * FROM SYS.SYS_TABLE_PARTS WHERE TABLE# = (SELECT ID FROM SYS.SYS_TABLES WHERE NAME='STAFFS_P2016');USER#        TABLE#       PART#        NAME                                                             HIBOUNDLEN   HIBOUNDVAL                                                       SPACE#       ORG_SCN              ENTRY                INITRANS     PCTFREE      FLAGS        BHIBOUNDVAL                                                      ROWCNT       BLKCNT       EMPCNT       AVGRLN       SAMPLESIZE   ANALYZETIME ------------ ------------ ------------ ---------------------------------------------------------------- ------------ ---------------------------------------------------------------- ------------ -------------------- -------------------- ------------ ------------ ------------ ---------------------------------------------------------------- ------------ ------------ ------------ ------------ ------------ ---------------------- 2            70           10           P_50                                                             2            50                                                               3            47529132593153       4393751543808        2            8            0                                     2            70           20           P_100                                                            3            100                                                              3            47529132687361       4393751543808        2            8            0                                     2            70           30           P_150                                                            3            150                                                              3            47529132744705       4393751543808        2            8            0                                     3 rows fetched.--删除名为P_50的分区。ALTER TABLE staffs_p2016 DROP PARTITION P_50;增加分区间隔分区表会随着用户添加的数据动态扩展,无需手动增加。自动生成的分区名可以从SYS.SYS_TABLE_PARTS表查询出来。查询分区--通过联合查询系统表SYS.SYS_TABLE_PARTS和SYS.SYS_TABLES查询出分区名。SELECT * FROM SYS.SYS_TABLE_PARTS WHERE TABLE# = (SELECT ID FROM SYS.SYS_TABLES WHERE NAME='STAFFS_P2016');USER#        TABLE#       PART#        NAME                                                             HIBOUNDLEN   HIBOUNDVAL                                                       SPACE#       ORG_SCN              ENTRY                INITRANS     PCTFREE      FLAGS        BHIBOUNDVAL                                                      ROWCNT       BLKCNT       EMPCNT       AVGRLN       SAMPLESIZE   ANALYZETIME ------------ ------------ ------------ ---------------------------------------------------------------- ------------ ---------------------------------------------------------------- ------------ -------------------- -------------------- ------------ ------------ ------------ ---------------------------------------------------------------- ------------ ------------ ------------ ------------ ------------ ---------------------- 0            242          20           P_100                                                            3            100                                                              0            6386343436210177     4393751543808        2            8            0                                           0            242          30           P_150                                                            3            150                                                              0            6386343436247041     4393751543808        2            8            0                                           2 rows fetched.--查询名为P_150的分区的数据。SELECT * FROM STAFFS_P2016 PARTITION(P_150);创建分区表索引创建分区表索引HR_staffS_p1_index_20162,并指定索引分区的名字。CREATE INDEX HR_staffS_p1_index_20162 ON staffs_p2016 (section_ID) LOCAL(    PARTITION section_ID2_index,    PARTITION section_ID3_index) TABLESPACE USERS;创建分区表索引HR_staffS_p1_index_2016,不指定索引分区的名字。CREATE INDEX HR_staffS_p1_index_2016 ON staffs_p2016 (staff_ID) LOCAL;按照以下方式对列表分区表进行操作。删除已存在的重名表,以一个已存在的表“education”为例。DROP TABLE IF EXISTS education;创建分区表education。CREATE TABLE education(staff_id INT NOT NULL, higest_degree CHAR(12), graduate_school VARCHAR(64), graduate_date DATETIME, education_note VARCHAR(70))PARTITION BY LIST(higest_degree)(PARTITION doctor VALUES ('doctor') TABLESPACE USERS,PARTITION master VALUES ('master') TABLESPACE USERS,PARTITION undergraduate VALUES ('undergraduate') TABLESPACE USERS);删除分区undergraduate。ALTER TABLE education DROP PARTITION undergraduate;增加分区postdoctor。ALTER TABLE education ADD PARTITION postdoctor VALUES('postdoctor');查询分区postdoctor。SELECT * FROM education PARTITION (postdoctor);创建分区表索引创建分区表索引idx_education1,不指定索引分区的名字。CREATE INDEX idx_education1 ON education(staff_id) LOCAL;创建分区表索引idx_education2,并指定索引分区的名字。CREATE INDEX idx_education2 ON education(higest_degree) LOCAL(    PARTITION higest_degree1_index,    PARTITION higest_degree4_index,    PARTITION higest_degree5_index) TABLESPACE USERS; 
  • [热门活动] GaussDB 100 数据库的使用——配置客户端接入认证
    配置客户端接入认证操作场景如果主机需要远程连接数据库,必须进行客户端接入认证。GaussDB 100支持用户通过配置用户白名单、IP白名单、IP黑名单的方式,有效管控远程连接。默认情况下系统只允许本地访问,即无法远程连接数据库。用户白名单:可通过添加zhba.conf有效条目,以限制指定用户只能从限定的IP访问数据库。IP白名单:配置TCP_INVITED_NODES参数,限制只能从指定IP访问数据库。IP黑名单:配置TCP_EXCLUDED_NODES参数,限制不能从指定IP访问数据库。其中IP黑名单的优先级最高,一个IP地址同时配置在用户白名单、IP白名单和IP黑名单中,那么用户无法通过该IP地址远程连接数据库。同时启用了用户白名单、IP白名单、IP黑名单时:用户白名单中的用户可以通过用户白名单中的IP地址和IP白名单中的IP地址远程连接数据库(同时该IP地址不在黑名单中)。如果客户端的IP地址在用户白名单zhba.conf或IP白名单中,且不在IP黑名单中,无论用户是否在用户白名单中,均可以校验成功,允许登录。远程访问接入策略请参见图1。图1 接入认证示意图说明: SYS在本地免密登录时,不受用户白名单、IP白名单、IP黑名单控制。SYS用户使用加密口令登录时,受IP黑名单控制。注意事项开启IP白名单检测功能前,要求至少配置了TCP_INVITED_NODES或TCP_EXCLUDED_NODES中的一种,否则将报如下错误:GS-00254 : For invited and excluded nodes is both empty, ip whitelist function can't be enabledSYS用户仅能在本地登录。前提条件在配置用户白名单和IP黑白名单前,请先检查是否已经配置了侦听IP(LSNR_ADDR)和侦听端口号(LSNR_PORT),否则黑白名单配置将不生效。方法如下。方法一:检查服务端是否设置了侦听IP和侦听端口号。SELECT NAME,VALUE FROM DV_PARAMETERS WHERE NAME = 'LSNR_ADDR';SELECT NAME,VALUE FROM DV_PARAMETERS WHERE NAME = 'LSNR_PORT'; 如果设置了,任务结束。如果没有设置,请使用如下方式设置服务端侦听IP和侦听端口号,利用数据库的浮动IP功能,立即生效。ALTER SYSTEM ADD LSNR_ADDR '192.168.1.1'; 方法二:检查服务端是否设置了侦听IP和侦听端口号。SELECT NAME,VALUE FROM DV_PARAMETERS WHERE NAME = 'LSNR_ADDR';SELECT NAME,VALUE FROM DV_PARAMETERS WHERE NAME = 'LSNR_PORT'; 如果设置了,任务结束。如果没有设置,请使用如下命令设置服务端侦听IP和侦听端口号,然后执行步骤2ALTER SYSTEM SET LSNR_ADDR='127.0.0.1,192.168.1.1'; ALTER SYSTEM SET LSNR_PORT = 1888;重启数据库使配置侦听IP和侦听端口号生效。cd ${GSDB_DATA}/binpython zctl.py -t stoppython zctl.py -t start 操作步骤-配置用户白名单假设服务器IP为192.168.1.1,侦听端口号为1888。使用安装GaussDB 100数据库的操作系统用户,登录GaussDB 100所在服务器。查询已配置的用户白名单。zsql gaussdba/xxx@127.0.0.1:1888SELECT * FROM SYS.DV_HBA;说明;xxx请替换为用户密码。 在zhba.conf文件中添加hba条目,格式为type、user、address。cd ${GSDB_DATA}/cfgvim zhba.confhost user 127.0.0.1,192.168.3.222,20AB::9217:acff:feab:fcd0/64说明:  192.168.3.222 表示一个IPV4主机。192.168.3.0/24 表示一个IPV4子网网段192.168.3.0所有IP。20AB::9217:acff:feab:fcd0 表示一个IPV6主机。20AB::9217:acff:feab:fcd0/64 表示前缀为64的IPV6网段。address列表声明允许连接的指定用户的IP地址范围,可以逗号分隔声明多个。各hba条目间无关联关系,声明顺序不影响功能。如果user中包含特殊字符(例如#、TAB键等特殊字符)需要写成“user”格式。例如:host "#abc" 127.0.0.1、host "abc" 127.0.0.1 表示将双引号中的字符串整体作为user。如果user是“*”或者* 表示所有用户。IP地址支持IPV4、IPV6地址、或指定子网掩码长度表示一个子网网段。如下均为合法格式:编辑zhba.conf文件时,空格不能使用Tab键输入,否则,在线加载用户白名单时会报错“GS-00220, hba line(20) format is not correct”。在线加载用户白名单。 使用zsql连接数据库。zsql gaussdba/xxx@127.0.0.1:1888说明;xxx请替换为用户密码。数据库实例运行时,通过下面的语句在线加载用户白名单,立即生效。ALTER SYSTEM RELOAD HBA CONFIG;通过查询视图DV_HBA确认用户白名单是否配置成功。SELECT * FROM SYS.DV_HBA;操作步骤-配置IP白名单和IP黑名单假设服务器IP为192.168.1.1,侦听端口号为1888。需配置的远程连接IP为192.168.2.*,需禁止接入的IP为192.168.10.*,192.168.2.225。使用安装GaussDB 100数据库的操作系统用户,登录GaussDB 100所在服务器。查询已配置的IP白名单和IP黑名单。zsql gaussdba/xxx@127.0.0.1:1888SELECT VALUE FROM DV_PARAMETERS WHERE NAME = 'TCP_INVITED_NODES';SELECT VALUE FROM DV_PARAMETERS WHERE NAME = 'TCP_EXCLUDED_NODES';说明;xxx请替换为用户密码。 在线配置IP白名单或IP黑名单。该配置立即生效,无需重启数据库。说明: 白名单设置子网字符串不能超过1024字节,如果超过会报错。 配置IP白名单。ALTER SYSTEM SET TCP_INVITED_NODES = '(127.0.0.1,192.168.1.1, 192.168.2.*)';配置IP黑名单。ALTER SYSTEM SET TCP_EXCLUDED_NODES = '(192.168.10.*, 192.168.2.225)';在线开启IP白名单检测功能。该配置立即生效,无需重启数据库。ALTER SYSTEM SET TCP_VALID_NODE_CHECKING = true;配置后可以执行如下命令检查:SELECT NAME, VALUE FROM DV_PARAMETERS WHERE NAME = 'TCP_VALID_NODE_CHECKING';NAME                                                             VALUE ---------------------------------------------------------------- -------------------- TCP_VALID_NODE_CHECKING                                          TRUE 
  • [分享交流] GaussDB100 物理备份
    物理备份前提条件数据库在ARCHIVELOG模式下运行,并将Redo日志存档至多个位置。通过系统视图V$DATABASE,可查看当前日志归档模式。修改日志归档模式,请参见设置Redo日志模式。维护控制文件(CONTROL_FILES)的多个并发备份。可以在创建数据库时指定控制文件的路径。如未指定,则Gauss100 OLTP将自动创建三个控制文件,并使用默认的文件名。定时备份物理数据文件(Data File),并将备份存储在安全介质上。备份操作只能在数据库主机上执行,且主机状态为OPEN。操作步骤以Gauss100 OLTP管理员用户身份,登录服务器。使用zsql连接Gauss100 OLTP数据库。zsql gaussdba/xxx@127.0.0.1:1888说明;xxx请替换为用户密码。 gaussdba为数据库管理员用户。127.0.0.1表示本地登录数据库,如果远程连接请输入数据库所在主机的IP。远程连接详情请参考《Gauss100 OLTP V300R001C00用户指南(单机)》的“连接数据库”章节。1888为端口号。执行备份命令。更多BACKUP命令信息,请参见《Gauss100 OLTP V300R001C00研发支持文档(单机)》 全量压缩备份BACKUP DATABASE FULL FORMAT '/home/gaussdba/data/backup_c_bak' AS COMPRESSED BACKUPSET;增量压缩备份BACKUP DATABASE INCREMENTAL LEVEL 1 FORMAT '/home/gaussdba/data/backup1_incr.bak' AS COMPRESSED BACKUPSET;压缩备份时指定压缩级别BACKUP DATABASE FULL FORMAT '/home/gaussdba/data/backup_compress_bak' AS COMPRESSED BACKUPSET LEVEL 3;差异增量备份:基于上一次Level 0或者Level 1备份之后进行的备份。累积增量备份:基于上一次level 0进行的备份。全量备份。BACKUP DATABASE FULL FORMAT '/home/gaussdba/data/backup01.bak';差异增量备份。BACKUP DATABASE INCREMENTAL LEVEL 0 FORMAT '/home/gaussdba/data/backup0_incr.bak';BACKUP DATABASE INCREMENTAL LEVEL 1 FORMAT '/home/gaussdba/data/backup1_incr.bak';累积增量备份。BACKUP DATABASE INCREMENTAL LEVEL 1 CUMULATIVE FORMAT '/home/gaussdba/data/backup1_incr_cum.bak';说明: “Level 0”为基准备份。第一次执行“Level 1”增量备份前必须执行“Level 0”备份。“Level 1”为基于上一次“Level 1”或者“Level 0”进行的备份。压缩备份。
  • [技术干货] GaussDB 100 事务
    事务COMMIT_MODE参数描述:COMMIT_MODE是一个高级参数,用于设置日志写入磁盘的方式,包括立即处理、批量处理两种。取值范围:IMMEDIATE:立即处理。对事务不进行缓存,接收到后立即写入磁盘。此方式可以减少事务的吞吐量。BATCH:先缓存,再批量处理。先缓存事务的redo到redo log中,达到一定量后再批量写入磁盘。默认值:IMMEDIATECOMMIT_WAIT_LOGGING参数描述:进行事务操作时,是否等待相关redo日志写入磁盘。取值范围:WAIT:待相关redo日志写入磁盘后,再进行事务操作。NOWAIT:无需等待相关redo日志写入磁盘,即可进行事务操作。默认值:WAITLOCK_WAIT_TIMEOUT参数描述:设置事务等待的阈值,等待时间超过该阈值则报错。取值范围:整数,[0,2^32-1],单位:毫秒。默认值: 0,表示无限等待。DB_ISOLEVEL参数描述:设置事务的隔离级别,保证不读脏数据。取值范围:RC:Read Committed,一个sql语句内读取到的数据,是同一个版本的快照数据。CC:Current Committed,一个sql语句内读取到的数据,每一行都是读取时刻的最新已提交数据,所有读取出来的数据不再是一个快照数据。默认值: RC_SERIALIZED_COMMIT参数描述:指定事务提交时,是否串行提交。取值范围:TRUE/FALSE。默认值: FALSETC_LEVEL参数描述:设置事务补偿级别,如果>0,在网络等故障时产生未决事务,在故障恢复后,可自动处理未决事务。取值范围:整数,[0,2^32-1]默认值: 0
  • [技术干货] GaussDB 100 DML语法一览表
    DML语法一览表DML(Data Manipulation Language数据操作语言),用于对数据库表中的数据进行操作。如:插|入、更新、删除。数据操作表1 数据操作功能相关SQL插|入数据INSERT删除数据DELETE修改数据UPDATE合并语句MERGE替换语句REPLACE其他表2 其他语句功能相关SQL查看执行计划EXPLAIN PLAN 
  • [技术干货] GaussDB 100 数据库物理备份
    BACKUP功能描述数据库物理备份。注意事项仅允许在各节点open模式下执行。需要在nomount状态下启动,手动切换到open模式再执行backup。--nomount启动后,使用SYS用户登录数据库。zsql / as SYSDBA;--切换到open模式,test是数据库名称。 ALTER DATABASE MOUNT; ALTER DATABASE test archivelog; ALTER DATABASE OPEN;语法格式BACKUP DATABASE { FULL | INCREMENTAL LEVEL level [CUMULATIVE]}                  { FORMAT 'dest_format' }                 [ AS [ZLIB | ZSTD | LZ4] COMPRESSED BACKUPSET [LEVEL compress_level]]                 [ TAG 'tag' ] [ PARALLELISM count ] [ SECTION THRESHOLD size ]                 [ EXCLUDE FOR TABLESPACE space_list]参数说明FULL全量备份。INCREMENTAL LEVEL level增量备份。level取值为0或1。level 0为基准增量,即为全量备份。 level 1为基于上一次的level 1或者level 0的增量备份。CUMULATIVE累积增量备份。FORMAT指定备份集路径。dest_format备份路径格式。'path'或者 'disk:path'或者'nbu:policy:path'。'path'与 'disk:path' 等价,表示备份目的地为磁盘,path为具体的路径。'nbu:policy:path',nbu表示备份到nbu, policy为nbu上对应的policy, path为具体的路径。path长度需小于255。AS [ZLIB | ZSTD | LZ4] COMPRESSED BACKUPSET备份集进行压缩。[ZLIB | ZSTD | LZ4]表示压缩算法,不指定默认为ZLIB。推荐使用ZSTD。ZLIB :ZLIB压缩率略低于ZSTD,高于LZ4,但是压缩速率远低于ZSTD。ZSTD:ZSTD压缩率高,压缩速率略低于LZ4。LZ4:LZ4压缩率低于ZSTD,压缩速率高。LEVEL compress_level压缩备份时,可设置压缩级别,级别越高,压缩率越高,速度越慢。compress_level 取值范围[1, 9]的整数,级别1速度最快,级别9压缩率最高;压缩备份不指定压缩级别时,将采用默认级别1进行压缩备份。tag备份集标签。长度小于30的字符串。PARALLELISM count当备份介质为磁盘时,可以开启多个并发线程进行备份,以提高备份速度。count的取值是[1, 8]范围内的整数。不指定并发数量时,将默认启动4个并发线程。SECTION THRESHOLD size并行备份时,可指定数据文件的切分阈值,合适的切分阈值可以有效提高并行备份效率。size的取值范围为[128M, 32T]。切分阈值太大,会造成并行效率下降,切分阈值太小,会产生太多的备份文件数量,因此不建议用户指定切分阈值。不指定时,数据库会自动计算最优的切分阈值。EXCLUDE FOR TABLESPACE space_list备份排除部分表空间。space_list为排除表空间名称列表,当排除的表空间有多个时,中间使用逗号分隔。示例全量备份到磁盘。BACKUP DATABASE FULL FORMAT '?/full0822.bak';增量备份到磁盘。--将LEVEL的值设为0,进行基准增量备份。 BACKUP DATABASE INCREMENTAL LEVEL 0 FORMAT '?/incr.bak' tag 'incr0822_bak';--基于上面的LEVEL 1备份进行增量备份。 BACKUP DATABASE INCREMENTAL LEVEL 1 FORMAT '?/incr0823.bak' tag 'incr0823_bak';累积增量备份--基于上一次的level 0备份进行增量备份 BACKUP DATABASE INCREMENTAL LEVEL 1 CUMULATIVE FORMAT '?/incr0824.bak' tag 'incr0824_bak';备份压缩--全量备份压缩 BACKUP DATABASE FULL FORMAT '?/full001.bak' tag 'full001_bak' as compressed backupset; --增量备份压缩 BACKUP DATABASE INCREMENTAL LEVEL 0 FORMAT '?/incr001.bak' tag 'incr001_bak' as compressed backupset; --全量备份zstd压缩 BACKUP DATABASE FULL FORMAT '?/fullzstd.bak' as zstd compressed backupset; --全量备份lz4压缩 BACKUP DATABASE FULL FORMAT '?/fulllz4.bak' as lz4 compressed backupset;并行备份--数据库自动计算切分阈值,并发数量为6 BACKUP DATABASE FULL FORMAT '?/full011.bak' tag 'full011_bak' PARALLELISM 6; --用户指定切分阈值为1G,并发数量为2 BACKUP DATABASE FULL FORMAT '?/full012.bak' tag 'full012_bak' PARALLELISM 2 SECTION THRESHOLD 1G;备份排除部分表空间--备份排除表空间spc1。 BACKUP DATABASE FORMAT '?/exclude_bak1' EXCLUDE FOR TABLESPACE spc1; --备份排除表空间spc1和spc2。 BACKUP DATABASE FORMAT '?/exclude_bak2' EXCLUDE FOR TABLESPACE spc1,spc2;
  • [技术干货] GaussDB 100 重建数据库
    BUILD DATABASE功能描述在高可用模式下,重建数据库。语法格式BUILD [CASCADED STANDBY | STANDBY] DATABASE        [COMPRESS [ ZLIB | ZSTD |LZ4 ] [ LEVEL n ] ]参数说明CASCADED STANDBY重建为一个级联备机数据库。STANDBY重建为一个备机数据库。COMPRESS [ ZLIB | ZSTD |LZ4 ]重建数据库时对主机数据库发送的日志和数据进行压缩。[ZLIB | ZSTD | LZ4]表示压缩算法,不指定默认为ZSTD。推荐使用ZSTD。ZLIB :ZLIB压缩率略低于ZSTD,高于LZ4,但是压缩速率远低于ZSTD。ZSTD:ZSTD压缩率高,压缩速率略低于LZ4。LZ4:LZ4压缩率低于ZSTD,压缩速率高。LEVEL n压缩级别n,压缩级别的范围是[1, 9]。若不指定压缩级别,则默认级别是1。说明: 若不指定参数CASCADED STANDBY和STANDBY,则备机数据库重建完成后本数据库的角色取决于对端数据库的角色。如果对端是主机,则重建数据库后本数据库角色是备机; 如果对端是备机,则重建数据库后本数据库角色是级联备机。示例用ZSTD压缩算法,压缩级别1进行build。build database compress zstd level 1; Succeed.
  • [热门活动] 华为云精编实战课程——7天玩转数据仓库课程进度回复帖
    (请严格按照回复示例进行回复,如回复格式不对,将不予奖励,谢谢)回复示例:华为云账户名:XXXX课程完成截图:(必须 包含课程名称、华为云账户名和完成进度条)请按照以上要求,在本课程下回帖。
  • [热门活动] GaussDB 100 中存储过程的基本语法总结
    存储过程1,定义;一组完成特定功能的sql语句的集合。2,创建存储过程  格式;CREATE [ OR REPLACE ] PROCEDURE [ IF NOT EXISTS ] [schema_name.]procedure_name(args_list)---------in、out、in out   { IS | AS }         [ param_list ]          --声明变量,可以有缺省值。                                            --普通变量、系统游标变量、普通游标变量、记录变量   BEGIN        statement;    --过程体(可以为基本语句、动态语句、控制语句、异常语句或其他语句。)                                    --   基本语句;1,赋值语句                                     --                          赋值语句;(1) := (2)case  when  条件1 then …… ,else …… end case;(3) 函数 如sum() 、upper等                                    --                     2,sql语句;支持7种                                    --                                insert ,delete,update ,select……into(后面卡伊跟参数列表或记录变量) 、merge、rollback、commit                                    --                      其他语句怎么办? --------通过execute immediate 下发                                    --   动态语句; execute immediate statemnet [into 变量名1 ] [using {in/out} 变量名2]                                     --   控制语句;控制语句逻辑,实现分支,循环,跳转等功能                                    --                              注意;如果语句块已形成死循环且无响应,可以在客户端新起连接,                                    --                               查询系统表DV_SESSIONS获取对应的session ID,然后使用“ALTER SYSTEM KILL session_id;”语句恢复。                                    --                   七中:GOTO、FOR循环、LOOP、WHILE循环、CASE WEHN、IF。                                    --                                           (1)goto语句;定义标签;<<标签名>>, 使用 goto 标签名                                    --                                           (2)FOR index_name IN [REVERSE] lower_bound..upper_bound                                    --                                                                               --                                           (3)loop                                    --                                                         exit when 条件1;                                    --                                                         continue when 条件2 ;                                    --                                                    end loop;                                    --   异常语句;系统预定义异常的处理、用户自定义异常的处理以及内部定义异常的处理。                                    --                   这三种异常处理均支持通过sqlcode和sqlerrm获取错误代码和错误消息。                                    --           格式;EXCEPTION                                     --                              { [ WHEN expr THEN sql ] [...]                                    --                                 [ WHEN OTHERS THEN sql1 ]                                    --                               }                                                        --                   系统预定义异常;如ZERO_DIVIDE、TOO_MANY_ROWS、VALUE_ERROR等。                                    --   其他语句;                                    --                   记录变量---%ROWTYPE ----支持继承以下变量的数据类型:表、游标变量。                                    --                   普通变量---%TYPE----支持继承以下变量的数据类型:列(格式为“表名.列名”)、记录变量、普通变量。   END;   /      说明;文中“--”为注解符号,在Gauss存储过程中,不能使用单行注释“//”   ‍                以上为本人对存储过程简单的理解与总结,获取更多详细资料请参照网址;http://platformdoc.huawei.com/hedex/hdx.do?lib=DeveSingle_V3R1C00SPC200BASIC&id=ZH-CN_TOPIC_0136909316&tocURL=resources/zh-cn_topic_0136909316.html&productId=1655&keyword=%2525u5b58%2525u50a8&keyword=%2525u8fc7%2525u7a0b              
  • [技术干货] 华为云数据仓库服务-Express加速查询功能于2019年7月22日00:00(北京时间)转商通知
    尊敬的华为云客户::华为云计划于2019/7/22 00:00(北京时间)将数据仓库服务-Express加速查询功能转商。正式商用后,Express加速查询功能将于2019/07/22 00:00(北京时间)开始收费。数据仓库服务-Express价格30元/TB,按需计费,根据Express实际扫描的字节数收费所有DWS集群默认使用该功能,为了保障您的权益,在此建议您在服务正式商用后(2019/07/22 00:00),如果您需要继续Express查询加速功能,请前往服务产品页了解具体计费说明;如果您不再需要使用,请停止进行OBS外表查询,并与我们联系帮助您屏蔽Express功能,避免产生不必要的费用。更多关于数据仓库服务-Express的产品介绍,请您点击了解。如您有任何问题,可随时通过工单或者服务热线(950808)与我们联系。感谢您对华为云的支持!
  • [技术干货] GaussDB 200架构简介
    转自:https://bbs.huaweicloud.com/blogs/259fdf7fa92c11e9b759fa163e330718GaussDB 200是一个基于开源数据库Postgres-XC开发的分布式并行关系型数据库系统。GaussDB 200采用Share-nothing架构,由多个拥有独立且互不共享CPU、内存、存储等系统资源的节点组成。在这样的系统架构中,业务数据被分散存储在多个物理节点上,数据分析任务被推送到数据所在位置就近执行,通过控制模块的协调,并行地完成大规模的数据处理工作,实现对数据处理的快速响应。Share-nothing又称为无共享架构,和其他架构的对比请参见下图Share-nothing架构具备如下优点:最易于扩展的架构为商业智能BI(Business Intelligence)和数据分析的高并发、大数据量计算提供按需扩展的能力自动化的并行处理机制内部自动并行处理,无需人工分区或优化数据加载与访问方式与一般数据库相同数据分布在所有的并行节点上每个节点只处理其中一部分数据最优化的I/O处理所有的节点同时进行并行处理节点之间完全无共享,无I/O冲突增加节点实现存储、查询及加载性能的线性扩展GaussDB 200由多个MPPDBServer组成,结构具体如下图所示。
  • [资料下载] 【资料下载】2018华为云技术私享会北京站-华为云上数据仓库技术与实践
    活动已经顺利结束,为了方便大家回顾下载当天私享会的会场资料,小编汇总整理当天资料,待补充内容后续再补充,持续刷新中~~欢迎大家阅读下载。2018年5月26日议题:华为自研分布式并行OLAP数据库技术揭秘讲师:数据仓库产品技术Leader/任阳PDF下载:15984视频回放:https://bbs.huaweicloud.com/videos/a02ee93e327c457c8908e8b607eb9063华为云上数据仓库服务及应用实践讲师:数据仓库高级产品经理/李新剑PDF下载:15983视频回放:https://bbs.huaweicloud.com/videos/7e73a1bc2e344c4daa7e228cf06229da数据仓库在建筑工程大数据中的应用讲师:广联达大数据技术部研究员/刘全超PDF下载:16005视频回放:https://bbs.huaweicloud.com/videos/38c2dba48dff42c28ac375665ed9d03a云上大数据BI分析的创新与实践讲师:EI大数据高级产品经理/王冠PDF下载:15985视频回放:https://bbs.huaweicloud.com/videos/0d6cb5227c104a28b415ed113e238835