华为云用户手册

  • pg_last_xlog_replay_location() 描述:获取最后一个事务日志在恢复时重放的位置。如果恢复仍在进行,事务日志将持续递增。如果已经完成恢复,则将保持在恢复期间最后接收WAL记录的值。如果未进行恢复但服务器正常启动时,则这个函数返回NULL。 返回值类型:text 示例: 1 2 3 4 5 SELECT pg_last_xlog_replay_location(); pg_last_xlog_replay_location ------------------------------ 0/2B16530 (1 row)
  • pg_last_xlog_receive_location() 描述:获取最后接收事务日志的位置并通过流媒体复制同步到磁盘。在流复制仍在进行,事务日志将持续递增。如果恢复已完成,则这个值将保持最后接收事务记录的状态并在恢复期间同步到磁盘。如果不能用流复制,或还没有开始,这个函数返回NULL。 返回值类型:text 示例: 1 2 3 4 5 SELECT pg_last_xlog_receive_location(); pg_last_xlog_receive_location ------------------------------- (1 row)
  • pg_xlog_replay_resume() 描述:如果恢复处于暂停状态,则重新启动。 当恢复暂停时,没有发生数据库更改。如果是在热备里,所有新的查询将看到一致的数据库快照,并且不会有进一步的查询冲突产生,直到恢复继续。 如果不能使用流复制,则暂停状态将无限的延续。当流复制正在进行时,将连续接收WAL记录,最终将填满可用磁盘空间,这个进度取决于暂停的持续时间,WAL生成的速度和可用的磁盘空间。 返回值类型:void
  • pg_xlog_replay_completion() 描述:显示当前DN上xlog redo的进度信息。 返回值类型:record 示例: 1 2 3 4 5 SELECT * FROM pg_xlog_replay_completion(); replay_start | replay_current | replay_end | replay_percent --------------+----------------+------------+---------------- 0/2ACAB80 | 0/2B16530 | 0/4F62B090 | 0% (1 row) 函数返回信息如下: 表1 pg_xlog_replay_completion()字段 名称 类型 描述 replay_start integer Xlog Redo的起始LSN replay_current integer Xlog Redo的当前replay的LSN replay_end integer 最大的需要Xlog Redo的LSN replay_percent integer Xlog Redo的当前完成的百分比
  • pg_data_sync_from_dummy_completion() 描述:显示当前DN上Failover过程中数据页文件同步的进度信息。 返回值类型:record 示例: 1 2 3 4 5 SELECT * FROM pg_data_sync_from_dummy_completion(); start_index | current_index | total_index | sync_percent -------------+---------------+-------------+-------------- 0 | 0 | 0 | 100% (1 row) 函数返回信息如下: 表2 pg_data_sync_from_dummy_completion()字段 名称 类型 描述 start_index integer 数据页文件同步的起始编号 current_index integer 数据页文件同步的当前编号 total_index integer 数据页文件同步的最大编号 sync_percent integer 数据页文件当前完成的百分比
  • MERGE MERGE是一种ANSI标准的SQL语法运算符,用于从一个或多个源中选择行来更新或插入表或视图。用户可指定更新或插入目标表或视图的条件。 DSC使用多种方法将MERGE迁移到GaussDB(DWS)兼容的SQL中。 配置参数mergeImplementation: 默认设置为WITH。设为此值时,目标查询将转换成公用表表达式。 图11 输入:MERGE(1) 图12 输出:MERGE(2) 也可设置为SPLIT。设为此值时,MERGE语句将被分解为多个INSERT和UPDATE语句。 图13 输入:MERGE(3) 图14 输出:MERGE(4)
  • DELAYED 在MySQL 5.7中,DELAYED关键字被接受,但被服务器忽略。 输入示例 1 2 3 4 5 6 7 8 9 # DELAYED 延迟 INSERT DELAYED INTO exmp_tb2 VALUES(99, 15.68, 'good', '2018-11-12'); INSERT DELAYED INTO exmp_tb2 VALUES(80, 12.3, 'cheap', '2018-11-11'); INSERT DELAYED INTO exmp_tb2 VALUES(DEFAULT, 128.23, 'nice', '2018-10-11'); INSERT DELAYED INTO exmp_tb2 VALUES(DEFAULT, DEFAULT, 'nice', '2018-12-14'); INSERT DELAYED INTO exmp_tb2 VALUES(DEFAULT, DEFAULT, 'nice', DEFAULT); INSERT DELAYED INTO exmp_tb2 (tb2_id, tb2_price) VALUES(DEFAULT, DEFAULT); INSERT DELAYED INTO exmp_tb2 (tb2_id, tb2_price, tb2_note) VALUES(DEFAULT, DEFAULT, DEFAULT); INSERT DELAYED INTO exmp_tb2 (tb2_id, tb2_price, tb2_note, tb2_date) VALUES(DEFAULT, DEFAULT, DEFAULT, DEFAULT); 输出示例 1 2 3 4 5 6 7 8 9 -- DELAYED 延迟 INSERT INTO "public"."exmp_tb2" VALUES (99,15.68,'good','2018-11-12'); INSERT INTO "public"."exmp_tb2" VALUES (80,12.3,'cheap','2018-11-11'); INSERT INTO "public"."exmp_tb2" VALUES (DEFAULT,128.23,'nice','2018-10-11'); INSERT INTO "public"."exmp_tb2" VALUES (DEFAULT,DEFAULT,'nice','2018-12-14'); INSERT INTO "public"."exmp_tb2" VALUES (DEFAULT,DEFAULT,'nice',DEFAULT); INSERT INTO "public"."exmp_tb2" ("tb2_id","tb2_price") VALUES (DEFAULT,DEFAULT); INSERT INTO "public"."exmp_tb2" ("tb2_id","tb2_price","tb2_note") VALUES (DEFAULT,DEFAULT,DEFAULT); INSERT INTO "public"."exmp_tb2" ("tb2_id","tb2_price","tb2_note","tb2_date") VALUES (DEFAULT,DEFAULT,DEFAULT,DEFAULT); 父主题: INSERT
  • HASH索引 GaussDB(DWS)不支持HASH索引。DSC工具迁移时会根据GaussDB(DWS)的特性将其迁移为普通索引。 内联HASH索引。 输入示例 1 2 3 4 5 6 7 8 9 10 11 12 CREATE TABLE `public`.`test_create_table03` ( `DEMAND_ID` INT(11) NOT NULL AUTO_INCREMENT, `DEMAND_NAME` CHAR(100) NOT NULL, `THEME` VARCHAR(200) NULL DEFAULT NULL, `SEND_ID` INT(11) NULL DEFAULT NULL, `SEND_NAME` CHAR(20) NULL DEFAULT NULL, `SEND_TIME` DATETIME NULL DEFAULT NULL, `DEMAND_CONTENT` TEXT NOT NULL, PRIMARY KEY(`DEMAND_ID`), INDEX CON_INDEX(DEMAND_CONTENT(100)) USING HASH , INDEX SEND_INFO_INDEX USING HASH (SEND_ID,SEND_NAME(10),SEND_TIME) ); 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CREATE TABLE "public"."test_create_table03" ( "demand_id" SERIAL NOT NULL, "demand_name" CHAR(400) NOT NULL, "theme" VARCHAR(800) DEFAULT NULL, "send_id" INTEGER DEFAULT NULL, "send_name" CHAR(80) DEFAULT NULL, "send_time" TIMESTAMP WITHOUT TIME ZONE DEFAULT NULL, "demand_content" TEXT NOT NULL, PRIMARY KEY ("demand_id") ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("demand_id"); CREATE INDEX "con_index" ON "public"."test_create_table03" ("demand_content"); CREATE INDEX "send_info_index" ON "public"."test_create_table03" ("send_id","send_name","send_time"); ALTER TABLE创建HASH索引。 输入示例 1 2 3 4 5 6 7 CREATE TABLE IF NOT EXISTS `public`.`runoob_alter_test`( `dataType1` int NOT NULL AUTO_INCREMENT, `dataType2` FLOAT(10,2), PRIMARY KEY(`dataType1`) )ENGINE=InnoDB DEFAULT CHARSET=utf8; ALTER TABLE runoob_alter_test ADD KEY alterTable_addKey_indexType(dataType1) USING HASH; 输出示例 1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE IF NOT EXISTS "public"."runoob_alter_test" ( "datatype1" SERIAL NOT NULL, "datatype2" REAL, PRIMARY KEY ("datatype1") ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("datatype1"); CREATE INDEX "altertable_addkey_indextype" ON "public"."runoob_alter_test" ("datatype1"); CREATE INDEX创建HASH索引。 输入示例 1 2 3 4 5 6 7 8 CREATE TABLE `public`.`test_index_table06` ( `ID` INT(11) NOT NULL AUTO_INCREMENT, `FNAME` VARCHAR(30) NOT NULL, `INAME` VARCHAR(30) NOT NULL, PRIMARY KEY (`ID`) ); CREATE INDEX FNAME_INDEX ON TEST_INDEX_TABLE06(FNAME(10)) USING HASH; CREATE INDEX NAME_01 ON TEST_INDEX_TABLE06(FNAME(10),INAME(10)) USING HASH; 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 CREATE TABLE "public"."test_index_table06" ( "id" SERIAL NOT NULL, "fname" VARCHAR(120) NOT NULL, "iname" VARCHAR(120) NOT NULL, PRIMARY KEY ("id") ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("id"); CREATE INDEX "fname_index" ON "public"."test_index_table06" ("fname"); CREATE INDEX "name_01" ON "public"."test_index_table06" ("fname","iname"); 父主题: 索引
  • 功能描述 SET CONSTRAINTS设置当前事务检查行为的约束条件。 IMMEDIATE约束是在每条语句后面进行检查。DEFERRED约束一直到事务提交时才检查。每个约束都有自己的模式。 从创建约束条件开始,一个约束总是设定为DEFERRABLE INITIALLY DEFERRED,DEFERRABLE INITIALLY IMMEDIATE,NOT DEFERRABLE三个特性之一。第三种总是IMMEDIATE,并且不会受SET CONSTRAINTS影响。前两种以指定的方式启动每个事务,但是其行为可以在事务里用SET CONSTRAINTS改变。 带着一个约束名列表的SET CONSTRAINTS改变这些约束的模式(都必须是可推迟的)。如果有多个约束匹配某个名字,则所有都会被影响。SET CONSTRAINTS ALL改变所有可推迟约束的模式。 当SET CONSTRAINTS把一个约束从DEFERRED改成IMMEDIATE的时候,新模式反作用式地起作用:任何将在事务结束准备进行的数据修改都将在SET CONSTRAINTS的时候执行检查。如果违反了任何约束,SET CONSTRAINTS都会失败(并且不会修改约束模式)。因此,SET CONSTRAINTS可以用于强制在事务中某一点进行约束检查。 目前,只有外键约束被该设置影响。检查和唯一约束总是不可推迟的。
  • 包拆分 包规范迁移为以包名命名的模式,包体中的存储过程和函数迁移为Packagename.procedurename和Packagename.funtionname。 设置pkgSchemaNaming=true后,可以进行迁移。 输入: PACKAGE1.FUNC1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 CREATE OR REPLACE PACKAGE BODY pack AS FUNCTION get_fullname(n_emp_id NUMBER) RETURN VARCHAR2 IS v_fullname VARCHAR2(46); BEGIN SELECT first_name || ',' || last_name INTO v_fullname FROM employees WHERE employee_id = n_emp_id; RETURN v_fullname; END get_fullname; PROCEDURE get_salary(n_emp_id NUMBER) RETURN NUMBER IS n_salary NUMBER(8,2); BEGIN SELECT salary INTO n_salary FROM employees WHERE employee_id = n_emp_id; END get_salary; END pack; / 输出 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 CREATE OR REPLACE FUNCTION pack.get_fullname ( n_emp_id NUMBER ) RETURN VARCHAR2 IS v_fullname VARCHAR2 ( 46 ) ; BEGIN SELECT first_name || ',' || last_name INTO v_fullname FROM employees WHERE employee_id = n_emp_id ; RETURN v_fullname ; END ; / CREATE OR REPLACE FUNCTION pack.get_salary ( n_emp_id NUMBER ) RETURN NUMBER IS n_salary NUMBER ( 8 ,2 ) ; BEGIN SELECT salary INTO n_salary FROM employees WHERE employee_id = n_emp_id ; RETURN n_salary ; END ; / 若pkgSchemaNaming为false,可拆分包。 当bas_lookup_misc_pkg调用insert_fnd_data_change_logs时,不会迁移insert_fnd_data_change_logs。 输入 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 CREATE OR REPLACE PACKAGE BODY SAD.bas_dml_lookup_pkg IS g_pkg_name CONSTANT VARCHAR2(30) := 'bas_dml_ic_price_rule_pkg' ; g_func_name VARCHAR2(100); FUNCTION func_name RETURN VARCHAR2 IS l_func_name VARCHAR2(100) ; BEGIN l_func_name := g_pkg_name || '.' || g_func_name ; RETURN l_func_name ; END ; PROCEDURE data_change_logs ( pi_table_name IN VARCHAR2 , pi_table_key_columns IN VARCHAR2 , po_error_msg OUT VARCHAR2 ) IS BEGIN g_func_name := 'insert_fnd_data_change_logs_t'; INSERT INTO fnd_data_change_logs_t ( logid, table_name, table_key_columns ) VALUES ( fnd_data_change_logs_t_s.NEXTVAL , pi_table_name, pi_table_key_columns ); EXCEPTION WHEN OTHERS THEN po_error_msg := 'Others Exception raise in ' || func_name || ',' || SQLERRM; END data_change_logs; END bas_dml_lookup_pkg; / 输出 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 CREATE OR REPLACE FUNCTION SAD.bas_dml_lookup_pkg#func_name RETURN VARCHAR2 IS MIG_PV_VAL_DUMMY_G_PKG_NAME VARCHAR2(30) := MIG_ORA_EXT.MIG_FN_GET_PKG_VARIABLE ( 'SAD', 'BAS_DML_LOOKUP_PKG', 'G_PKG_NAME' )::VARCHAR2(30) ; MIG_PV_VAL_DUMMY_G_FUNC_NAME VARCHAR2(100) := MIG_ORA_EXT.MIG_FN_GET_PKG_VARIABLE ( 'SAD', 'BAS_DML_LOOKUP_PKG', 'G_FUNC_NAME' )::VARCHAR2(100) ; l_func_name VARCHAR2(100) ; BEGIN l_func_name := MIG_PV_VAL_DUMMY_G_PKG_NAME || '.' || MIG_PV_VAL_DUMMY_G_FUNC_NAME ; RETURN l_func_name ; END ; / CREATE OR REPLACE PROCEDURE SAD.bas_dml_lookup_pkg#data_change_logs ( pi_table_name IN VARCHAR2 , pi_table_key_columns IN VARCHAR2 , po_error_msg OUT VARCHAR2 ) IS MIG_PV_VAL_DUMMY_G_FUNC_NAME VARCHAR2(30) := MIG_ORA_EXT.MIG_FN_GET_PKG_VARIABLE ( 'SAD' ,'BAS_DML_LOOKUP_PKG' ,'G_FUNC_NAME' )::VARCHAR2(30) ; BEGIN MIG_PV_VAL_DUMMY_G_FUNC_NAME := 'insert_fnd_data_change_logs_t' ; INSERT INTO fnd_data_change_logs_t ( logid,table_name,table_key_columns ) VALUES ( NEXTVAL ( 'fnd_data_change_logs_t_s' ) , pi_table_name, pi_table_key_columns ) ; MIG_ORA_EXT.MIG_FN_SET_PKG_VARIABLE ( 'SAD', 'BAS_DML_LOOKUP_PKG', 'G_FUNC_NAME', MIG_PV_VAL_DUMMY_G_FUNC_NAME ) ; EXCEPTION WHEN OTHERS THEN po_error_msg := 'Others Exception raise in ' || SAD.bas_dml_lookup_pkg#func_name( ) || ',' || SQLERRM ; MIG_ORA_EXT.MIG_FN_SET_PKG_VARIABLE ( 'SAD', 'BAS_DML_LOOKUP_PKG', 'G_FUNC_NAME', MIG_PV_VAL_DUMMY_G_FUNC_NAME ) ; END ; / PACKAGE关键字 内核需要将包标签添加到从包转换来的函数和存储过程。 输入 1 2 3 4 5 6 7 8 9 10 11 12 13 14 CREATE OR REPLACE PACKAGE BODY SAD.bas_dml_lookup_pkg IS FUNCTION func_name RETURN VARCHAR2 IS l_func_name VARCHAR2(100) ; BEGIN l_func_name := 'bas_dml_lookup_pkg' || '.' || 'func_name' ; RETURN l_func_name ; END ; END bas_dml_lookup_pkg ; / 输出 1 2 3 4 5 6 7 8 9 10 11 CREATE OR REPLACE FUNCTION func_name RETURN VARCHAR2 PACKAGE IS l_func_name VARCHAR2(100) ; BEGIN l_func_name := 'bas_dml_lookup_pkg' || '.' || 'func_name' ; RETURN l_func_name ; END ; / 父主题: PL/SQL包
  • 创建索引 为了加速文本搜索,可以创建GIN索引。 1 CREATE INDEX pgweb_idx_1 ON tsearch.pgweb USING gin(to_tsvector('english', body)); to_tsvector()函数有两个版本,只输一个参数的版本和输两个参数的版本。 只输一个参数时,系统默认采用default_text_search_config所指定的分词器。 创建索引时必须使用to_tsvector的两参数版本,否则索引内容可能不一致。只有指定了分词器名称的全文检索函数才可以在索引表达式中使用。因为索引的内容不受default_text_search_config的影响。由于default_text_search_config的值可以随时调整,从而导致不同条目生成的tsvector采用了不同的分词器,并且无法区分究竟使用了哪个分词器。正确地转储和恢复这样的索引也是不支持的。 在上述创建索引中to_tsvector使用了两个参数,只有当查询时也使用了两个参数,且参数值与索引中相同时,才会使用该索引。例如,WHERE to_tsvector('english', body) @@ 'a & b' 可以使用索引,但WHERE to_tsvector(body) @@ 'a & b'不能使用索引。这确保索引各条目是使用相同的分词器创建的。 索引中的分词器名称由另一列指定时可以建立更复杂的表达式索引。例如: 1 CREATE INDEX pgweb_idx_2 ON tsearch.pgweb USING gin(to_tsvector('zhparser', body)); 本示例中zhparser仅支持UTF8/GBK的数据库编码格式,在Encoding为SQL_ASCII下会报错。 其中body是pgweb表中的一列。当对索引的各条目使用了哪个分词器进行记录时,允许在同一索引中存在混合分词器。在某些场景下这将是有用的。例如,文档集合中包含不同语言的文档时。再次强调,打算使用索引的查询必须措辞匹配,例如,WHERE to_tsvector(config_name, body) @@ 'a & b'与索引中的to_tsvector措辞匹配。 索引甚至可以连接列: 1 CREATE INDEX pgweb_idx_3 ON tsearch.pgweb USING gin(to_tsvector('english', title || ' ' || body)); 另一个方法是创建一个单独的tsvector列控制to_tsvector的输出。下面的例子是title和body的连接, 当其它是NULL的时候,使用coalesce确保一个字段仍然会被索引: 1 2 ALTER TABLE tsearch.pgweb ADD COLUMN textsearchable_index_col tsvector; UPDATE tsearch.pgweb SET textsearchable_index_col = to_tsvector('english', coalesce(title,'') || ' ' || coalesce(body,'')); 然后为加速搜索创建一个GIN索引: 1 CREATE INDEX textsearch_idx_4 ON tsearch.pgweb USING gin(textsearchable_index_col); 现在,就可以执行一个快速全文搜索了: 1 2 3 4 5 6 7 8 9 10 11 SELECT title FROM tsearch.pgweb WHERE textsearchable_index_col @@ to_tsquery('science & Computer') ORDER BY last_mod_date DESC LIMIT 10; title -------- Computer science (1 rows) 相比于一个表达式索引,单独列方法的一个优势是:它没有必要在查询时明确指定分词器以便能使用索引。正如上面例子所示,查询可以依赖于default_text_search_config。另一个优势是搜索比较快速,因为它没有必要重新利用to_tsvector调用来验证索引匹配。表达式索引方法更容易建立,且它需要较少的磁盘空间,因为tsvector形式没有明确存储。 父主题: 表和索引
  • 软件要求 操作系统要求 DSC兼容的操作系统如表4所示。 表4 兼容的操作系统 服务器 操作系统 版本 通用x86服务器 SUSE Linux Enterprise Server 11 SP1(SUSE11.1) SP2(SUSE11.2) SP3(SUSE11.3) SP4(SUSE11.4) SUSE Linux Enterprise Server 12 SP0(SUSE12.0) SP1(SUSE12.1) SP2(SUSE12.2) SP3(SUSE12.3) RHEL 6.4-x86_64(RedHat6.4) 6.5-x86_64(RedHat6.5) 6.6-x86_64(RedHat6.6) 6.7-x86_64(RedHat6.7) 6.8-x86_64(RedHat6.8) 6.9-x86_64(RedHat6.9) 7.0-x86_64(RedHat7.0) 7.1-x86_64(RedHat7.1) 7.2-x86_64(RedHat7.2) 7.3-x86_64(RedHat7.3) 7.4-x86_64(RedHat7.4) CentOS 6.4(CentOS6.4) 6.5(CentOS6.5) 6.6(CentOS6.6) 6.7(CentOS6.7) 6.8(CentOS6.8) 6.9(CentOS6.9) 7.0(CentOS7.0) 7.1(CentOS7.1) 7.2(CentOS7.2) 7.3(CentOS7.3) 7.4(CentOS7.4) Windows 7.0,10,11 其他软件要求 DSC对其他软件版本的要求如表5所示。 表5 其他软件要求 软件 用途 JDK 1.8.0_141 or later Used to run DSC. Perl 5.8.8 Used to migrate Perl files. Perl 5.28.2 and later Used to migrate Perl files in Windows. Python 3.8.2 Used to verify post migration script.
  • NOT IN expression NOT IN (value [, ...]) 右侧括号中的是一个表达式列表。左侧表达式的结果与表达式列表的内容进行比较。如果在列表中的内容没有符合左侧表达式结果的内容,则NOT IN的结果为true。如果有符合的内容,则NOT IN的结果为false。 示例如下: 1 2 3 4 5 SELECT 8000+500 NOT IN (10000, 9000) AS RESULT; result ---------- t (1 row) 如果查询语句返回结果为空,或者表达式列表不符合表达式的条件且右侧表达式列表返回结果至少一处为空,则NOT IN的返回结果为null,而不是false。这样的处理方式和SQL返回空值的布尔组合规则是一致的。 提示:在所有情况下X NOT IN Y等价于NOT(X IN Y)。
  • IN expression IN (value [, ...]) 右侧括号中的是一个表达式列表。左侧表达式的结果与表达式列表的内容进行比较。如果列表中的内容符合左侧表达式的结果,则IN的结果为true。如果没有相符的结果,则IN的结果为false。 示例如下: 1 2 3 4 5 SELECT 8000+500 IN (10000, 9000) AS RESULT; result ---------- f (1 row)
  • 参数说明 database_name 需要修改属性的数据库名称。 取值范围:字符串,要符合标识符的命名规范。 connlimit 数据库可以接收的最大并发连接数(管理员用户连接除外)。 取值范围:整数,建议填写1~50的整数。-1(缺省)表示没有限制。 new_name 数据库的新名称。 取值范围:字符串,要符合标识符的命名规范。 new_owner 数据库的新所有者。 取值范围:字符串,有效的用户名。 configuration_parameter value 把指定的数据库会话参数值设置为给定的值。如果value是DEFAULT或者RESET,则在新的会话中使用系统的缺省设置。OFF关闭设置。 取值范围:字符串, DEFAULT OFF RESET FROM CURRENT 根据当前会话连接的数据库设置该参数的值。 RESET configuration_parameter 重置指定的数据库会话参数值。 RESET ALL 重置全部的数据库会话参数值。 修改数据库默认表空间,会将旧表空间中的所有表和索引转移到新表空间中,该操作不会影响其他非默认表空间中的表和索引。 修改的数据库会话参数值,将在下一次会话中生效。
  • 示例 设置music数据库的连接数为10: 1 ALTER DATABASE music CONNECTION LIMIT= 10; 将music名称改为music1: 1 ALTER DATABASE music RENAME TO music1; 将数据库music1的所属者改为tom: 1 ALTER DATABASE music1 OWNER TO tom; 设置music1的表空间为PG_DEFAULT: 1 ALTER DATABASE music1 SET TABLESPACE PG_DEFAULT; 关闭在数据库music1上缺省的索引扫描: 1 ALTER DATABASE music1 SET enable_indexscan TO off; 重置enable_indexscan参数: 1 ALTER DATABASE music1 RESET enable_indexscan;
  • 注意事项 只有拥有数据库所有者权限的用户才能执行ALTER DATABASE命令,系统管理员默认拥有此权限。如果是非系统管理员,针对所要修改属性的不同,对其还有以下权限约束: 修改数据库名称,必须拥有CREATEDB权限。 修改数据库所有者,当前用户必须是该数据库的所有者,且拥有CREATEDB权限,并确保该用户是新所有者角色的成员。 修改数据库默认表空间,该用户必须是该数据库的所有者或系统管理员,且拥有新表空间的CREATE权限。该语法会从物理上将一个数据库原来缺省表空间上的表和索引移至新的表空间。注意不在缺省表空间的表和索引不受此影响。 修改某个按数据库设置的相关参数,只有数据库所有者或者系统管理员可以改变这些设置。 修改某个数据库对象隔离属性,只有数据库所有者或者系统管理员可以执行此操作。 不能重命名当前使用的数据库,如果需要重新命名,须连接至其他数据库上。 不支持修改现有数据库的兼容模式,只能在创建数据库时指定兼容模式,详情请参见CREATE DATABASE。
  • 语法格式 修改数据库的最大连接数。 1 2 ALTER DATABASE database_name [ [ WITH ] CONNECTION LIMIT connlimit ]; 修改数据库名称。 1 2 ALTER DATABASE database_name RENAME TO new_name; 若该数据库中有OBS冷热表,则不支持修改数据库名。 修改数据库所属者。 1 2 ALTER DATABASE database_name OWNER TO new_owner; 修改数据库默认表空间。 1 2 ALTER DATABASE database_name SET TABLESPACE new_tablespace; 修改数据库的表空间时不能修改为OBS表空间。 修改数据库指定会话参数值。 1 2 ALTER DATABASE database_name SET configuration_parameter { { TO | = } { value | DEFAULT } | FROM CURRENT }; 数据库配置参数重置。 1 2 ALTER DATABASE database_name RESET { configuration_parameter | ALL };
  • 软件要求 操作系统要求 Data Studio的操作系统配置要求如下表所示。 表1 支持操作系统及相应软件包 服务器 操作系统 支持版本 通用x86服务器 Windows Windows 7 (64 bit) Windows 10 (64 bit) Windows 2012 (64 bit) Windows 2016 (64 bit) 浏览器要求 Data Studio的浏览器要求如下表所示。 操作系统 版本 Windows IE 11及以上 其他软件要求 Data Studio的软件配置要求如下表所示。 表2 Data Studio软件要求 软件 规格 Java 推荐与操作系统位数对应的Open JDK 1.8版本 GNU libc 显示DDL,导入DDL,导出DDL和数据操作只支持GN系统libc 2.17以上的版本。 表3 支持的数据库版本 数据库 版本 GaussDB(DWS) 1.2.x 1.5.x 8.0.x 8.1.x 8.2.x 保证最佳体验的情况下,推荐的最小屏幕分辨率是1080 x 768。低于此分辨率,界面会异常。
  • 支持序列DDL Data Studio支持用户进行显示序列DDL和导出序列DDL操作,包括“显示DDL”,“导出DDL”,“导出DDL和数据”。 在“对象浏览器”窗格中,右键单击序列名,显示菜单选项。 选择“显示DDL”选项查看DDL语句。 选择“导出DDL”选项导出DDL语句。 选择“导出DDL和数据”选项导出DDL和select语句。 如下图所示: 只有序列所有者或系统管理员,或具有序列的select权限的用户,才能进行上述操作。
  • 创建序列 在“对象浏览器”窗格,右键单击“序列”,然后选择“创建序列”。Data Studio弹出“创建序列”对话框。 设置相关参数以创建序列。 在“序列名称”字段输入序列名称。 勾选“区分大小写”,“序列名称”字段文本将区分大小写。例如,输入的序列名称为“Employee”,则序列名称将创建为“Employee”。 在“最小值”字段输入最小值。 在“增量”字段输入要递增的值。 在“最大值”字段输入最大值。 最大和最小值的取值范围应在-9223372036854775808到9223372036854775807之间。 在“初始值”字段输入序列的起始值。 在“缓存数值”字段输入缓存信息。缓存值表示存储在内存中用于快速访问的数字序列。 勾选“循环”,可在序列数达到最大或最小值时进行循环。 该模式名称自动填充到“模式”字段。 在“表”中选择对应表。 在“列”中选择对应列。 单击“完成”。 状态栏显示已完成操作的状态。 可在“SQL预览”页签自动查看输入数据的SQL查询。
  • 参数说明 schema_name 现有模式的名字。 取值范围:已存在的模式名。 RENAME TO new_name 修改模式的名字。 new_name:模式的新名字。 取值范围:字符串,要符合标识符命名规范。 OWNER TO new_owner 修改模式的所有者。非系统管理员要改变模式的所有者,该用户还必须是新的所有角色的直接或间接成员, 并且该成员必须在此数据库上有CREATE权限。 new_owner:模式的新所有者。 取值范围:已存在的用户名/角色名。 WITH PERM SPACE 修改模式的永久表存储空间上限。非系统管理员要改变模式的存储空间上限,该用户还必须是新的所有角色的直接或间接成员, 并且该成员必须在此数据库上有CREATE权限。 space_limit:新的模式永久表存储空间上限。 取值范围:字符串格式为正整数+单位,单位当前支持K/M/G/T/P。解析后的数值以K为单位,且范围不能够超过64比特表示的有符号整数,即1KB~9007199254740991KB。
  • = 描述:比较两个roaringbitmap是否相等。 返回值类型:bool 示例: 1 2 3 4 5 6 7 8 9 10 SELECT rb_build('{1,2,3}') = rb_build('{1,2,3}'); ?column? ---------- t (1 row) SELECT rb_build('{2,3}') = rb_build('{1,2,3}'); ?column? ---------- f (1 row)
  • && 描述:两个roaringbitmap如果有交集返回true,否则返回false。 返回值类型:bool 示例: 1 2 3 4 5 6 7 8 9 10 SELECT rb_build('{2,3,4}') && rb_build('{2,3}'); ?column? ---------- t (1 row) SELECT rb_build('{2,3,4}') && rb_build('{7,8,9}'); ?column? ---------- f (1 row)
  • FULLTEXT全文索引 GaussDB(DWS)不支持FULLTEXT全文索引。DSC工具迁移时会根据GaussDB(DWS)的特性进行相应适配。 内联FULLTEXT全文索引。 输入示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ## A. CREATE TABLE `public`.`test_create_table02` ( `ID` INT(11) NOT NULL PRIMARY KEY, `TITLE` CHAR(255) NOT NULL, `CONTENT` TEXT NULL, `CREATE_TIME` DATETIME NULL DEFAULT NULL, FULLTEXT (`CONTENT`) ); ## B. CREATE TABLE IF NOT EXISTS `public`.`runoob_dataType_test` ( `id` INT PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(128) NOT NULL, FULLTEXT INDEX (name) ); ## C. CREATE TABLE IF NOT EXISTS `public`.`runoob_dataType_test` ( `id` INT PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(128) NOT NULL, FULLTEXT INDEX (name ASC) ); 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 -- A. CREATE TABLE "public"."test_create_table02" ( "id" INTEGER NOT NULL PRIMARY KEY, "title" CHAR(1020) NOT NULL, "content" TEXT, "create_time" TIMESTAMP WITHOUT TIME ZONE DEFAULT NULL ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("id"); CREATE INDEX "idx_test_create_table02_content" ON "public"."test_create_table02" USING GIN(to_tsvector(coalesce("content",''))); -- B. CREATE TABLE IF NOT EXISTS "public"."runoob_datatype_test" ( "id" SERIAL PRIMARY KEY, "name" VARCHAR(512) NOT NULL ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("id"); CREATE INDEX "idx_runoob_datatype_test_name" ON "public"."runoob_datatype_test" USING GIN(to_tsvector(coalesce("name",''))); -- C. CREATE TABLE IF NOT EXISTS "public"."runoob_datatype_test" ( "id" SERIAL PRIMARY KEY, "name" VARCHAR(512) NOT NULL ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("id"); CREATE INDEX "idx_runoob_datatype_test_name" ON "public"."runoob_datatype_test" USING GIN(to_tsvector(coalesce("name",''))); ALTER TABLE创建全文索引。 输入示例 1 2 3 4 5 6 7 8 9 CREATE TABLE `public`.`test_create_table05` ( `ID` INT(11) NOT NULL AUTO_INCREMENT, `USER_ID` INT(20) NOT NULL, `USER_NAME` CHAR(20) NULL DEFAULT NULL, `DETAIL` VARCHAR(100) NULL DEFAULT NULL, PRIMARY KEY (`ID`) ); ALTER TABLE TEST_CREATE_TABLE05 ADD FULLTEXT INDEX USER_ID_INDEX_02(USER_ID); ALTER TABLE TEST_CREATE_TABLE05 ADD FULLTEXT USER_NAME_INDEX_02(USER_NAME); 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 13 CREATE TABLE "public"."test_create_table05" ( "id" SERIAL NOT NULL, "user_id" INTEGER NOT NULL, "user_name" CHAR(80) DEFAULT NULL, "detail" VARCHAR(400) DEFAULT NULL, PRIMARY KEY ("id") ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("id"); CREATE INDEX "user_id_index_02" ON "public"."test_create_table05" USING GIN(to_tsvector(coalesce("user_id",''))); CREATE INDEX "user_name_index_02" ON "public"."test_create_table05" USING GIN(to_tsvector(coalesce("user_name",''))); CREATE INDEX创建全文索引。 输入示例 1 2 3 4 5 6 7 CREATE TABLE `public`.`test_index_table02` ( `ID` INT(11) NOT NULL PRIMARY KEY, `TITLE` CHAR(255) NOT NULL, `CONTENT` TEXT NULL, `CREATE_TIME` INT(10) NULL DEFAULT NULL ); CREATE FULLTEXT INDEX CON_INDEX ON TEST_INDEX_TABLE02(CONTENT); 输出示例 1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE "public"."test_index_table02" ( "id" INTEGER NOT NULL PRIMARY KEY, "title" CHAR(1020) NOT NULL, "content" TEXT, "create_time" INTEGER DEFAULT NULL ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("id"); CREATE INDEX "con_index" ON "public"."test_index_table02" USING GIN(to_tsvector(coalesce("content",''))); 父主题: 索引
  • 参数说明 name 一个需要修改的现有的类型的名字(可以有模式修饰) 。 new_name 该类型的新名称。 new_owner 新所有者的用户名 。 new_schema 该类型的新模式 。 attribute_name 拟增加、更改或删除的属性的名称。 new_attribute_name 拟改名的属性的新名称。 data_type 拟新增属性的数据类型,或是拟更改的属性的新类型名。 new_enum_value 枚举类型新增加的标签值,是一个非空的长度不超过64个字节的字符串。 neighbor_enum_value 一个已有枚举标签值,新值应该被增加在紧接着该枚举值之前或者之后的位置上。 existing_enum_value 现有的要重命名的枚举值,是一个非空的长度不超过64个字节的字符串 CASCADE 自动级联更新需更新类型以及相关联的记录和继承它们的子表。 RESTRICT 如果需联动更新类型是已更新类型的关联记录,则拒绝更新。这是缺省选项。 ADD ATTRIBUTE、DROP ATTRIBUTE和ALTER ATTRIBUTE选项可以组合成一个列表同时执行。 例如,在一条命令中同时增加多个属性或是更改多个属性的类型。 要使用ALTER TYPE,必须是该类型的所有者。 要修改类型的模式,还必须在新模式上拥有CREATE权限。 要修改所有者,必须是新的所有角色的直接或间接成员, 并且该角色必须在此类型的模式上有CREATE权限。 (这些限制强制要求修改所有者不能执行任何通过删除和重建该类型无法实现的操作。 不过,系统管理员拥有以任何方式修改任意类型的所有权。) 要增加一个属性或是修改一个属性的类型,也必须有该类型的USAGE权限。
  • 示例 重命名数据类型: 1 ALTER TYPE compfoo RENAME TO compfoo1; 修改用户定义类型compfoo1的所有者为usr1: 1 ALTER TYPE compfoo1 OWNER TO usr1; 把用户定义类型compfoo1的模式改为usr1: 1 ALTER TYPE compfoo1 SET SCHEMA usr1; 给数据类型compfoo1增加一个新的属性f3: 1 ALTER TYPE compfoo1 ADD ATTRIBUTE f3 int; 给枚举类型bugstatus添加一个标签值: 1 ALTER TYPE bugstatus ADD VALUE IF NOT EXISTS 'regress' BEFORE 'closed'; 重命名枚举类型bugstatus的一个标签值: 1 ALTER TYPE bugstatus RENAME VALUE 'create' TO 'new';
  • 语法格式 修改类型 1 2 3 4 5 6 7 8 9 10 11 12 ALTER TYPE name action [, ... ] ALTER TYPE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER } ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name [ CASCADE | RESTRICT ] ALTER TYPE name RENAME TO new_name ALTER TYPE name SET SCHEMA new_schema ALTER TYPE name ADD VALUE [ IF NOT EXISTS ] new_enum_value [ { BEFORE | AFTER } neighbor_enum_value ] ALTER TYPE name RENAME VALUE existing_enum_value TO new_enum_value where action is one of: ADD ATTRIBUTE attribute_name data_type [ COLLATE collation ] [ CASCADE | RESTRICT ] DROP ATTRIBUTE [ IF EXISTS ] attribute_name [ CASCADE | RESTRICT ] ALTER ATTRIBUTE attribute_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ CASCADE | RESTRICT ] 给复合类型增加新的属性。 1 ALTER TYPE name ADD ATTRIBUTE attribute_name data_type [ COLLATE collation ] [ CASCADE | RESTRICT ]
  • pgxc_stat_xlog_space() 描述:显示所有主DN上Xlog空间使用信息。 返回值类型:record 函数返回信息如下: 表7 pgxc_stat_xlog_space() 名称 类型 描述 node_name name 节点名称 xlog_files bigint pg_xlog目录下,去除backup、archive_status等子目录,所有识别为xlog文件的数目。 xlog_size bigint pg_xlog目录下,去除backup、archive_status等子目录,所有识别为xlog文件的文件大小之和,单位为MB。 other_size bigint pg_xlog目录下backup、archive_status等子目录文件的大小之和,单位为MB。 示例: 1 2 3 4 5 6 7 8 9 10 SELECT * FROM pgxc_stat_xlog_space(); node_name | xlog_files | xlog_size | other_size --------------+------------+-----------+------------ dn_6001_6002 | 73 | 1168 | 0 dn_6003_6004 | 73 | 1168 | 0 dn_6005_6006 | 73 | 1168 | 0 cn_5003 | 79 | 1264 | 0 cn_5001 | 72 | 1152 | 0 cn_5002 | 73 | 1168 | 0 (6 rows)
  • pg_stat_get_stream_replications() 描述:显示当前DN上所有的复制统计信息。 返回值类型:record 函数返回信息如下: 表5 pg_stat_get_stream_replications() 名称 类型 描述 local_role text 本地的角色 static_connections integer 连接统计 db_state text 数据库状态 detail_information text 详细信息 示例: 1 2 3 4 5 SELECT * FROM pg_stat_get_stream_replications(); local_role | static_connections | db_state | detail_information ------------+--------------------+----------+-------------------- Normal | 0 | Normal | Normal (1 row)
共100000条