华为云用户手册

  • 绑定手机令牌 登录 云堡垒机 系统。 选择右上角用户名,单击“个人中心”,进入个人中心管理页面 图1 个人中心页面 选择“手机令牌”页签,进入个人手机令牌管理页面。 按照界面提示和实际令牌类型,执行绑定操作。 微信小程序手机令牌 打开手机微信,依次按照操作指导,获取绑定动态口令,输入6位“动态密码”,验证通过绑定手机令牌。 APP版手机令牌 打开已安装好的手机令牌APP,扫描页面操作指导步骤2的二维码,获取绑定动态口令,输入6位“动态密码”,验证通过绑定手机令牌。 “手机令牌”页签更新为已绑定手机令牌页面
  • 部门概述 “部门”是用于划分组织结构,标识用户和资源的组织。系统默认有一个部门“总部”,仅可在“总部”基础上创建部门分支,且“总部”不可删除。 根据部门划分用户组织结构后,下级部门用户不能查看上级部门信息,包括上级部门组织结构、用户、主机资源、应用资源、应用发布服务器、资源账户,以及上级部门配置的策略信息和运维审计数据。 不同部门的用户,仅同部门和上级部门管理员可管理用户。 仅系统管理员admin或拥有“部门”模块权限的用户,可管理系统部门组织结构,包括新建部门、编辑部门、删除部门、查询部门用户和查询部门资源等。 图1 部门管理 父主题: 系统部门
  • 后续管理 帐户同步策略创建完成后,可在策略列表页面,管理已创建策略,包括管理关联资源、删除策略、启停策略、立即执行策略等。 若需补充关联资源,可单击“关联”,快速关联资源账户、帐户组。 若需删除策略,可选择目标策略,单击“删除”,立即删除策略。 若需禁用策略同步帐户,可勾选一个或多个“已启用”状态的策略,单击“禁用”,策略状态变更为“已禁用”,策略立即失效。 若需立即同步主机帐户,可单击“立即执行”,立即执行帐户同步任务。
  • PG_PLTEMPLATE PG_PLTEMPLATE系统表存储过程语言的“模板”信息。 表1 PG_PLTEMPLATE字段 名称 类型 描述 tmplname name 该模板所应用的语言的名称。 tmpltrusted boolean 如果语言被认为是可信的,则为真。 tmpldbacreate boolean 如果语言是由数据库所有者创建的,则为真。 tmplhandler text 调用处理器函数的名称。 tmplinline text 匿名块处理器的名称,如果没有则为NULL。 tmplvalidator text 校验函数的名称,如果没有则为NULL。 tmpllibrary text 实现语言的共享库的路径。 tmplacl aclitem[] 模板的访问权限(未使用)。 父主题: 系统表
  • PG_OPCLASS PG_OPCLASS系统表定义索引访问方法操作符类。 每个操作符类为一种特定数据类型和一种特定索引访问方法定义索引字段的语义。一个操作符类本质上指定一个特定的操作符族适用于一个特定的可索引的字段数据类型。索引的字段实际可用的族中的操作符集是接受字段的数据类型作为它们的左边的输入的那个。 表1 PG_OPCLASS字段 名字 类型 引用 描述 oid oid - 行标识符(隐藏属性,必须明确选择才会显示)。 opcmethod oid PG_AM.oid 操作符类所属的索引访问方法。 opcname name - 操作符类的名称。 opcnamespace oid PG_NAMESPACE.oid 操作符类所属的命名空间。 opcowner oid PG_AUTHID.oid 操作符类所有者。 opcfamily oid PG_OPFAMILY.oid 包含此操作符类的操作符族。 opcintype oid PG_TYPE.oid 操作符类索引的数据类型。 opcdefault boolean - 如果操作符类是opcintype的缺省,则为真。 opckeytype oid PG_TYPE.oid 索引数据的类型,如果和opcintype相同则为0。 一个操作符类的opcmethod必须匹配包含它的操作符族的opfmethod。同样,对于任意给定的opcmethod和opcintype的组合,不能有超过一个PG_OPCLASS行有opcdefault为真。 父主题: 系统表
  • PG_JOBS PG_JOBS系统表存储用户创建的定时任务的任务详细信息,定时任务线程定时轮询pg_jobs系统表中的时间,当任务到期会触发任务的执行。该系统表属于Shared Relation,所有创建的job记录对所有数据库可见。 表1 PG_JOBS字段 名字 类型 描述 job_id integer 作业ID,主键,是唯一的(有唯一索引)。 what text 作业内容。 log_user oid 创建者的UserID。 priv_user oid 作业执行者的UserID。 job_db oid 标识作业执行的数据库OID。 job_nsp oid 标识作业运行时所在的命名空间OID。 job_node oid 标识当前作业是在哪个CN上创建和执行。 is_broken boolean 标识当前作业是否为失效状态,当作业连续失败16次后,会将is_broken自动设置为true,后续不再执行该作业。 start_date timestamp without time zone 作业第一次开始执行时间,时间精确到毫秒。 next_run_date timestamp without time zone 下次定时执行任务的时间,时间精确到毫秒。 failure_count smallint 失败计数,作业连续执行失败16次,不再继续执行。 interval text 作业执行的重复时间间隔。 last_start_date timestamp without time zone 上次运行开始时间,时间精确到毫秒。 last_end_date timestamp without time zone 上次运行的结束时间,时间精确到毫秒。 last_suc_date timestamp without time zone 上次成功运行的开始时间,时间精确到毫秒。 this_run_date timestamp without time zone 正在运行任务的开始时间,时间精确到毫秒。 父主题: 系统表
  • PG_LANGUAGE PG_LANGUAGE系统表登记编程语言,用户可以用这些语言或接口写函数或者存储过程。 表1 PG_LANGUAGE字段 名字 类型 引用 描述 oid oid - 行标识符(隐藏属性,必须明确选择才会显示)。 lanname name - 语言的名称。 lanowner oid PG_AUTHID.oid 语言的所有者。 lanispl boolean - 内部语言为假(比如SQL),用户定义语言为真。目前,gs_dump仍然使用该字段判断哪些语言需要转储,但可能在将来会被其它机制所取代。 lanpltrusted boolean - 如果是可信语言则为真,即系统相信它不会被授予任何正常SQL执行环境之外的权限。只有初始用户可以在用非可信的语言创建函数。 lanplcallfoid oid PG_PROC.oid 对于非内部语言,这是指该语言处理器的引用,语言处理器是一个特殊函数, 负责执行以某种语言写的所有函数。 laninline oid PG_PROC.oid 此字段引用一个负责执行“inline”匿名代码块的函数(DO块)。如果不支持内联块则为0。 lanvalidator oid PG_PROC.oid 此字段引用一个语言校验器函数,它负责检查新创建函数的语法和有效性。如果没有提供校验器,则为0。 lanacl aclitem[] - 访问权限。 父主题: 系统表
  • PG_NAMESPACE PG_NAMESPACE系统表存储命名空间,即存储schema相关的信息。 表1 PG_NAMESPACE字段 名称 类型 描述 nspname name 命名空间的名称。 nspowner oid 命名空间的所有者。 nsptimeline bigint 在DN上创建此命名空间时的时间线。此字段为内部使用,仅在DN上有效。 nspacl aclitem[] 访问权限。具体请参见GRANT和REVOKE。 permspace bigint schema永久表空间限额。 usedspace bigint schema已用永久表空间大小。 父主题: 系统表
  • PG_LARGEOBJECT PG_LARGEOBJECT系统表保存那些标记着“大对象”的数据。一个大对象是使用其创建时分配的OID标识的。每个大对象都分解成足够小的小段或者“页面”以便以行的形式存储在PG_LARGEOBJECT里。每页的数据定义为LOBLKSIZE。 需要有系统管理员权限才可以访问此系统表。 表1 PG_LARGEOBJECT字段 名字 类型 引用 描述 loid oid PG_LARGEOBJECT_METADATA.oid 包含本页的大对象的标识符。 pageno integer - 本页在其大对象数据中的页码,从0开始计算。 data bytea - 实际存储在大对象中的数据。这些数据不会超过LOBLKSIZE字节,且可能更小。 PG_LARGEOBJECT的每一行保存一个大对象的一个页面,从该对象内部的字节偏移(pageno * LOBLKSIZE)开始。这种实现允许稀疏存储:页面可能丢失,并且可以比LOBLKSIZE字节少(即使它们不是对象的最后一页)。大对象中丢失的区域会被读为0。 父主题: 系统表
  • PG_INHERITS PG_INHERITS系统表记录关于表继承层次的信息。数据库里每个直接的子系表都有一条记录。间接的继承可以通过追溯记录链来判断。 表1 PG_INHERITS字段 名字 类型 引用 描述 inhrelid oid PG_CLASS.oid 子表的OID。 inhparent oid PG_CLASS.oid 父表的OID。 inhseqno integer - 如果一个子表存在多个直系父表(多重继承),这个数字表示此继承字段的排列顺序。计数从1开始。 父主题: 系统表
  • PG_INDEX PG_INDEX系统表存储索引的一部分信息,其他的信息大多数在PG_CLASS中。 表1 PG_INDEX字段 名称 类型 描述 indexrelid oid 此索引的pg_class项的OID。 indrelid oid 使用该索引的表在pg_class项的OID。 indnatts smallint 索引中的字段数目。 indisunique boolean 如果为真,为唯一索引。 indisprimary boolean 如果为真,该索引为该表的主键。该字段为真时,indisunique也总是为真。 indisexclusion boolean 如果为真,该索引支持排他约束。 indimmediate boolean 如果为真,在插入数据时会立即执行唯一性检查。 indisclustered boolean 如果为真,则该表最后以此索引进行了聚簇。 indisusable boolean 如果为真,此索引对INSERT/SELECT可用。 indisvalid boolean 如果为真,则此索引可以用于查询。如果为假,则该索引可能不完整,仍然必须在INSERT/UPDATE操作时进行更新,但不能安全的被用于查询。如果是唯一索引,则唯一属性也不为真。 indcheckxmin boolean 如果为真,查询不能使用此索引,直到pg_index此行的xmin低于其快照的TransactionXmin,因为该表可能包含它们可见的不兼容行断开的HOT链。 indisready boolean 如果为真,表示此索引对插入数据可用。如果为假,在插入或修改数据时忽略此索引。 indkey int2vector 这是一个包含indnatts值的数组,这些数组值表示此索引所建立的表字段。比如一个值为1 3的意思是第一个字段和第三个字段组成这个索引键。数组中的0表示对应的索引属性是一个表字段上的表达式,而不是一个简单的字段引用。 indcollation oidvector 索引用到的各列的ID。 indclass oidvector 对于索引键中的每个字段,该字段都包含要使用的操作符类的OID,详见PG_OPCLASS。 indoption int2vector 存储列前标识位,该标识位是由索引的访问方法定义。 indexprs pg_node_tree 表达式树(以nodeToString()形式表现)用于那些非简单字段引用的索引属性。它是一个列表,个数与INDKEY中的零值个数相同。如果所有索引属性都是简单的引用,则为空。 indpred pg_node_tree 部分索引谓词的表达式树(以nodeToString()的形式表现)。如果不是部分索引,则为空。 父主题: 系统表
  • PG_EXTENSION_DATA_SOURCE PG_EXTENSION_DATA_SOURCE系统表存储外部数据源对象的信息。一个外部数据源对象(Data Source)包含了外部数据库的一些口令编码等信息,主要配合Extension Connector使用。 表1 PG_EXTENSION_DATA_SOURCE字段 名字 类型 引用 描述 oid oid - 行标识符(隐藏属性,必须明确选择才会显示)。 srcname name - 外部数据源对象的名称。 srcowner oid PG_AUTHID.oid 外部数据源对象的所有者。 srctype text - 外部数据源对象的类型,缺省为空。 srcversion text - 外部数据源对象的版本,缺省为空。 srcacl aclitem[] - 访问权限。 srcoptions text[] - 外部数据源对象的指定选项,使用“keyword=value”格式的字符串。 父主题: 系统表
  • PG_DESCRIPTION PG_DESCRIPTION系统表可以给每个数据库对象存储一个可选的描述(注释)。许多内置的系统对象的描述提供了PG_DESCRIPTION的初始内容。 这个表的功能类似PG_SHDESCRIPTION,用于记录整个集群范围内共享对象的注释。 表1 PG_DESCRIPTION字段 名字 类型 引用 描述 objoid oid 任意OID属性 描述所属对象的OID。 classoid oid PG_CLASSoid 对象显示的系统表的OID。 objsubid integer - 对于一个表字段的注释,为字段号(objoid和classoid指向表自身)。对于其它对象类型,为0。 description text - 对该对象描述的任意文本。 父主题: 系统表
  • PG_DB_ROLE_SETTING PG_DB_ROLE_SETTING系统表存储数据库运行时每个角色与数据绑定的配置项的默认值 。 表1 PG_DB_ROLE_SETTING字段 名称 类型 描述 setdatabase oid 配置项所对应的数据库,如果未指定数据库,则为0。 setrole oid 配置项所对应的角色,如果未指定角色,则为0。 setconfig text[] 运行时配置项的默认值。 父主题: 系统表
  • PG_CAST PG_CAST系统表存储数据类型之间的转化关系。 表1 PG_CAST字段 名称 类型 描述 castsource oid 源数据类型的OID。 casttarget oid 目标数据类型的OID。 castfunc oid 转化函数的OID。0表示不需要转化函数。 castcontext "char" 源数据类型和目标数据类型间的转化方式: e表示只能进行显式转化(使用CAST或::语法)。 i表示只能进行隐式转化。 a表示类型间同时支持隐式和显式转化。 castmethod "char" 转化方法: f表示使用castfunc字段中指定的函数进行转化。 b表示类型间是二进制强制转化,不使用castfunc。 父主题: 系统表
  • PG_ATTRIBUTE PG_ATTRIBUTE系统表存储关于表字段的信息。 表1 PG_ATTRIBUTE字段 名称 类型 描述 attrelid oid 该字段所属的表。 attname name 字段名。 atttypid oid 字段类型。 attstattarget integer 控制ANALYZE为该字段设置的统计细节的级别。 零值表示不收集统计信息。 负数表示使用系统缺省的统计对象。 正数值的确切信息是和数据类型相关的。 对于标量数据类型,A TTS TATTARGET既是要收集的“最常用数值”的目标数目,也是要创建的柱状图的目标数量。 attlen smallint 是本字段类型pg_type.typlen的拷贝。 attnum smallint 字段编号。 attndims integer 如果该字段是数组,该值表示数组的维数,否则是0 。 attcacheoff integer 在磁盘上总是-1 ,但是如果加载入内存中的行描述器中,它可能会被更新为缓冲在行中字段的偏移量。 atttypmod integer 记录创建新表时支持的类型特定的数据(比如,varchar字段的最大长度)。它传递给类型相关的输入和长度转换函数当做第三个参数。其值对那些不需要ATTTYPMOD的类型通常为-1。 attbyval boolean pg_type.typbyval字段值的拷贝。 attstorage "char" pg_type.typstorage字段值的拷贝。 attalign "char" pg_type.typalign字段值的拷贝。 attnotnull boolean 代表一个非空约束。可以改变这个字段来打开或者关闭该约束。 atthasdef boolean 该字段是否存在缺省值,此时它对应pg_attrdef表里实际定义此值的记录。 attisdropped boolean 该字段是否已经被删除,不再有效。如果被删除,该字段物理上仍然存在表中,但会被分析器忽略,因此不能再通过SQL访问。 attislocal boolean 该字段是否局部定义在对象中。一个字段可以同时是局部定义和继承的。 attcmprmode tinyint 对某一列指定压缩方式。压缩方式包括: ATT_CMPR_NOCOMPRESS ATT_CMPR_DELTA ATT_CMPR_DICTIONARY ATT_CMPR_PREFIX ATT_CMPR_NUMSTR attinhcount integer 该字段所拥有的直接父表的个数。如果一个字段的父表个数非零,则它就不能被删除或重命名。 attcollation oid 对此列定义的校对列。 attacl aclitem[] 列级访问权限控制。 attoptions text[] 属性级可选项。 attfdwoptions text[] 属性级外数据选项。 attinitdefval bytea 存储了此列默认的值表达式。行存表的ADD COLUMN需要使用此字段。 attkvtype tinyint 该字段的kv_type属性。取值如下: 0表示默认值,用于非时序表 1表示维度属性(TSTAG),仅用于时序表 2表示指标属性(TSFIELD),仅用于时序表 3时间属性(TSTIME),仅用于时序表 父主题: 系统表
  • PG_AM PG_AM系统表存储有关索引访问方法的信息。系统支持的每种索引访问方法都有一行。 表1 PG_AM字段 名字 类型 引用 描述 oid oid - 行标识符(隐藏属性,必须明确选择才会显示)。 amname name - 访问方法的名称。 amstrategies smallint - 访问方法的操作符策略个数,或者如果访问方法没有一个固定的操作符策略集则为0。 amsupport smallint - 访问方法的支持过程个数。 amcanorder boolean - 这种访问方式是否支持通过索引字段值的命令扫描排序。 amcanorderbyop boolean - 这种访问方式是否支持通过索引字段上操作符的结果的命令扫描排序。 amcanbackward boolean - 访问方式是否支持向后扫描。 amcanunique boolean - 访问方式是否支持唯一索引。 amcanmulticol boolean - 访问方式是否支持多字段索引。 amoptionalkey boolean - 访问方式是否支持第一个索引字段上没有任何约束的扫描。 amsearcharray boolean - 访问方式是否支持ScalarArrayOpExpr搜索。 amsearchnulls boolean - 访问方式是否支持IS NULL/NOT NULL搜索。 amstorage boolean - 允许索引存储的数据类型与列的数据类型是否不同。 amclusterable boolean - 是否允许在一个这种类型的索引上集群。 ampredlocks boolean - 是否允许这种类型的一个索引管理细粒度的谓词锁定。 amkeytype oid PG_TYPE.oid 存储在索引里数据的类型,如果不是一个固定的类型则为0。 aminsert regproc PG_PROC.oid “插入此行”函数。 ambeginscan regproc PG_PROC.oid “准备索引扫描” 函数。 amgettuple regproc PG_PROC.oid “下一个有效行”函数,如果没有则为0。 amgetbitmap regproc PG_PROC.oid “抓取所有的有效行” 函数,如果没有则为0。 amrescan regproc PG_PROC.oid “(重新)开始索引扫描”函数。 amendscan regproc PG_PROC.oid “索引扫描后清理” 函数。 ammarkpos regproc PG_PROC.oid “标记当前扫描位置”函数。 amrestrpos regproc PG_PROC.oid “恢复已标记的扫描位置”函数。 ammerge regproc PG_PROC.oid “归并多个索引对象”函数。 ambuild regproc PG_PROC.oid “建立新索引”函数。 ambuildempty regproc PG_PROC.oid “建立空索引”函数。 ambulkdelete regproc PG_PROC.oid 批量删除函数。 amvacuumcleanup regproc PG_PROC.oid VACUUM后的清理函数。 amcanreturn regproc PG_PROC.oid 检查是否索引支持唯一索引扫描的函数,如果没有则为0。 amcostestimate regproc PG_PROC.oid 估计一个索引扫描开销的函数。 amoptions regproc PG_PROC.oid 用于分析和验证索引的reloptions函数。 父主题: 系统表
  • PG_AGGREGATE PG_AGGREGATE系统表存储与聚集函数有关的信息。PG_AGGREGATE里的每条记录都是一条pg_proc里面的记录的扩展。PG_PROC记录承载该聚集的名字、输入和输出数据类型,以及其它一些和普通函数类似的信息。 表1 PG_AGGREGATE字段 名字 类型 引用 描述 aggfnoid regproc PG_PROC.oid 此聚集函数的PG_PROC OID。 aggtransfn regproc PG_PROC.oid 转换函数。 aggcollectfn regproc PG_PROC.oid 收集函数。 aggfinalfn regproc PG_PROC.oid 最终处理函数(如果没有则为0)。 aggsortop oid PG_OPERATOR.oid 关联排序操作符(如果没有则为0)。 aggtranstype oid PG_TYPE.oid 此聚集函数的内部转换(状态)数据的数据类型。 agginitval text - 转换状态的初始值。这是一个文本数据域,它包含初始值的外部字符串表现形式。如果数据域是null,则转换状态值从null开始。 agginitcollect text - 收集状态的初始值。这是一个文本数据域,它包含初始值的外部字符串表现形式。如果数据域是null,则收集状态值从null开始。 父主题: 系统表
  • 游标概述 为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。 当游标作为存储过程的返回值时,如果使用JDBC调用该存储过程,返回的游标将不可用。 游标的使用分为显式游标和隐式游标。对于不同的SQL语句,游标的使用情况不同,详细信息请参见表1。 表1 游标使用情况 SQL语句 游标 非查询语句 隐式的 结果是单行的查询语句 隐式的或显式的 结果是多行的查询语句 显式的 父主题: 游标
  • 结构 PL/SQL块中可以包含子块,子块可以位于PL/SQL中任何部分。PL/SQL块的结构如下: 声明部分:声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数。 DECLARE 不涉及变量声明时声明部分可以没有。 对匿名块来说,没有变量声明部分时,可以省去DECLARE关键字。 对存储过程来说,没有DECLARE, AS相当于DECLARE。即便没有变量声明的部分,关键字AS也必须保留。 执行部分:过程及SQL语句,程序的主要部分。必选。 BEGIN 执行异常部分:错误处理。可选。 EXCEPTION 结束 END;/ 禁止在PL/SQL块中使用连续的Tab,连续的Tab可能会造成在使用gsql工具带“-r”参数执行PL/SQL块时出现异常。
  • 数据类型转换 数据库中允许有些数据类型进行隐式类型转换(赋值、函数调用的参数等),有些数据类型间不允许进行隐式数据类型转换,可尝试使用 GaussDB (DWS)提供的类型转换函数,例如CAST进行数据类型强转。 GaussDB(DWS)数据库常见的隐式类型转换,请参见表1。 GaussDB(DWS)支持的DATE的效限范围是:公元前4713年到公元294276年。 表1 隐式类型转换表 原始数据类型 目标数据类型 备注 CHAR VARCHAR2 - CHAR NUMBER 原数据必须由数字组成。 CHAR DATE 原数据不能超出合法日期范围。 CHAR RAW - CHAR CLOB - VARCHAR2 CHAR - VARCHAR2 NUMBER 原数据必须由数字组成。 VARCHAR2 DATE 原数据不能超出合法日期范围。 VARCHAR2 CLOB - NUMBER CHAR - NUMBER VARCHAR2 - DATE CHAR - DATE VARCHAR2 - RAW CHAR - RAW VARCHAR2 - CLOB CHAR - CLOB VARCHAR2 - CLOB NUMBER 原数据必须由数字组成。 INT4 CHAR - 父主题: 存储过程
  • PL/pgSQL语言函数 PL/pgSQL类似于Oracle的PL/SQL,是一种可载入的过程语言。 用PL/pgSQL创建的函数可以被用在任何可以使用内建函数的地方。例如,可以创建复杂条件的计算函数并且后面用它们来定义操作符或把它们用于索引表达式。 SQL被大多数数据库用作查询语言。它是可移植的并且容易学习。但是每一个SQL语句必须由数据库服务器单独执行。 这意味着客户端应用必须发送每一个查询到数据库服务器、等待它被处理、接收并处理结果、做一些计算,然后发送更多查询给服务器。如果客户端和数据库服务器不在同一台机器上,所有这些会引起进程间通信并且将带来网络负担。 通过PL/pgSQL,可以将一整块计算和一系列查询分组在数据库服务器内部,这样就有了一种过程语言的能力并且使SQL更易用,同时能节省的客户端/服务器通信开销。 客户端和服务器之间的额外往返通信被消除。 客户端不需要的中间结果不必被整理或者在服务器和客户端之间传送。 多轮的查询解析可以被避免。 PL/pgSQL可以使用SQL中所有的数据类型、操作符和函数。 应用PL/pgSQL创建函数的语法为CREATE FUNCTION。正如前面所说,PL/pgSQL类似于Oracle的PL/SQL,是一种可载入的过程语言。其应用方法与存储过程相似,只是存储过程无返回值,函数有返回值。 父主题: 用户自定义函数
  • 存储过程 商业规则和业务逻辑可以通过程序存储在GaussDB(DWS)中,这个程序就是存储过程。 存储过程是SQL,PL/SQL,Java语句的组合。存储过程使执行商业规则的代码可以从应用程序中移动到数据库。从而,代码存储一次能够被多个程序使用。 存储过程的创建及调用办法请参考CREATE PROCEDURE。 PL/pgSQL语言函数节所提到的PL/pgSQL语言创建的函数与存储过程的应用方法相通。下面各节中,除非特别声明,否则内容通用于存储过程和PL/pgSQL语言函数。 父主题: 存储过程
  • 示例 示例一:执行gs_dumpall,导出所有数据库全量信息(dbadmin用户为管理员用户),导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。 gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_backup.sql -p 8000 -h 10.10.10.100 gs_dumpall[port=''][2017-07-21 15:57:31]: dumpall operation successfulgs_dumpall[port=''][2017-07-21 15:57:31]: total time: 9627 ms 示例二:执行gs_dumpall,仅导出所有数据库定义(dbadmin用户为管理员用户),导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。 gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_backup.sql -p 8000 -h 10.10.10.100 -s gs_dumpall[port=''][2018-11-14 11:28:14]: dumpall operation successfulgs_dumpall[port=''][2018-11-14 11:28:14]: total time: 4147 ms 示例三:执行gs_dumpall,仅导出所有数据库中数据,并对导出文件进行加密,导出文件为文本格式。执行命令后,会有很长的打印信息,最终出现total time即代表执行成功。示例中将不体现中间的打印信息。 gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_backup.sql -p 8000 -h 10.10.10.100 -a --with-encryption AES128 --with-key 1234567812345678gs_dumpall[port=''][2018-11-14 11:32:26]: dumpall operation successfulgs_dumpall[port=''][2018-11-14 11:23:26]: total time: 4147 ms
  • 示例 示例一:执行gs_dumpall,导出所有数据库的公共全局表空间信息和用户信息(dbadmin用户为管理员用户),导出文件为文本格式。 gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_globals.sql -p 8000 -h 10.10.10.100 -ggs_dumpall[port=''][2018-11-14 19:06:24]: dumpall operation successfulgs_dumpall[port=''][2018-11-14 19:06:24]: total time: 1150 ms 示例二: 执行gs_dumpall,导出所有数据库的公共全局表空间信息(dbadmin用户为管理员用户),并对导出文件进行加密,导出文件为文本格式。 gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_tablespace.sql -p 8000 -h 10.10.10.100 -t --with-encryption AES128 --with-key 1212121212121212gs_dumpall[port=''][2018-11-14 19:00:58]: dumpall operation successfulgs_dumpall[port=''][2018-11-14 19:00:58]: total time: 186 ms 示例三:执行gs_dumpall,导出所有数据库的公共全局用户信息(dbadmin用户为管理员用户),导出文件为文本格式。 gs_dumpall -W password -U dbadmin -f /home/dbadmin/backup/MPPDB_user.sql -p 8000 -h 10.10.10.100 -rgs_dumpall[port=''][2018-11-14 19:03:18]: dumpall operation successfulgs_dumpall[port=''][2018-11-14 19:03:18]: total time: 162 ms
  • 注意事项 GDS支持并发导入导出,gds -t参数用于设置gds的工作线程池大小,控制并发场景下同时工作的工作线程数且不会加速单个sql任务。gds -t缺省值为8,上限值为200。在使用管道功能进行导入导出时,-t参数应不低于业务并发数。如果是双集群互联互通场景,-t参数应不低于业务并发数的两倍。 由于管道“读取即删除”的特点,需确保导入或导出过程中除GDS程序外无其他程序读取管道文件,避免导入过程中数据丢失或者任务报错及导出的文件内容混乱。 不支持对具有相同location的外表并发导入导出,即GDS的多个线程同时读取管道文件或者同时写入管道文件。 GDS的单个导入导出任务只识别一个管道文件,因此不要对GDS外表设置带有通配符({}[]?)的location地址。如: CREATE FOREIGN TABLE foreign_test_pipe_tr( like test_pipe ) SERVER gsmpp_server OPTIONS (LOCATION 'gsfs://192.168.0.1:7789/foreign_test_*', FORMAT 'text', DELIMITER ',', NULL '', EOL '0x0a' ,file_type 'pipe',auto_create_pipe 'false');
  • 常见问题和定位方法: 问题1:"/***/postgres_public_foreign_test_pipe_tr.pipe" must be named pipe. 定位方法:GDS的外表file_type类型为pipe但是操作的文件却是一个普通文件类型。应该排查postgres_public_foreign_test_pipe_tr.pipe是否是为管道文件。 问题2:could not open pipe "/***/postgres_public_foreign_test_pipe_tw.pipe" cause by Permission denied. 定位方法:GDS没有权限打开管道文件。 问题3:could not open source file /*****/postgres_public_foreign_test_pipe_tw.pipe because timeout 300s for WRITING. 定位方法:GDS导出时打开管道文件超时,一般由于auto_create_pipe为false时候,管道文件在300秒内未被创建,或者创建了但是300秒内没有程序读取该管道文件。 问题4:could not open source file /*****/postgres_public_foreign_test_pipe_tw.pipe because timeout 300s for READING. 定位方法:GDS导出时打开管道文件超时,一般由于auto_create_pipe为false时候,管道文件在300秒内未被创建或者创建了但是300秒之内没有程序写入该管道文件。 问题5:could not poll writing source pipe file "/****/postgres_public_foreign_test_pipe_tw.pipe" timeout 300s. 定位方法:GDS导出时超过300秒未等到管道上的写事件,一般由于该管道文件超过300秒没有被读取。 问题6:could not poll reading source pipe file "/****/postgres_public_foreign_test_pipe_tw.pipe" timeout 300s. 定位方法:GDS导入时超过300秒未等到管道上的读事件,一般由于该管道文件超过300秒没有被写入。 问题7:could not open pipe file "/***/postgres_public_foreign_test_pipe_tw.pipe" for "WRITING" with error No such device or address. 定位方法:表示当前"/***/postgres_public_foreign_test_pipe_tw.pipe"管道文件没有程序正在读取导致GDS无法以写的方式打开管道文件。
  • 示例 示例一:执行gs_dump导出数据,用户jack不具备导出数据库human_resource的权限,而角色role1具备该权限,要实现导出数据库human_resource,可以在导出命令中设置--role角色为role1,使用role1的权限,完成导出目的。导出文件格式为tar归档格式。 human_resource=# CREATE USER jack IDENTIFIED BY "password";gs_dump -U jack -W password -f /home//backup/MPPDB_backup11.tar -p 8000 -h 10.10.10.100 human_resource --role role1 --rolepassword password -F tgs_dump[port='8000'][human_resource][2017-07-21 16:21:10]: dump database human_resource successfullygs_dump[port='8000'][human_resource][2017-07-21 16:21:10]: total time: 4239 ms 示例二:执行gs_dump导出数据,用户jack不具备导出模式public的权限,而角色role1具备该权限,要实现导出模式public,可以在导出命令中设置--role角色为role1,使用role1的权限,完成导出目的。导出文件格式为tar归档格式。 human_resource=# CREATE USER jack IDENTIFIED BY "1234@abc";gs_dump -U jack -W password -f /home//backup/MPPDB_backup12.tar -p 8000 -h 10.10.10.100 human_resource -n public --role role1 --rolepassword password -F tgs_dump[port='8000'][human_resource][2017-07-21 16:21:10]: dump database human_resource successfullygs_dump[port='8000'][human_resource][2017-07-21 16:21:10]: total time: 3278 ms 示例三:执行gs_dumpall导出数据,用户jack不具备导出所有数据库的权限,而角色role1具备该权限,要实现导出所有数据库,可以在导出命令中设置--role角色为role1,使用role1的权限,完成导出目的。导出文件格式为文本归档格式。 human_resource=# CREATE USER jack IDENTIFIED BY "password";gs_dumpall -U jack -W password -f /home//backup/MPPDB_backup.sql -p 8000 -h 10.10.10.100 --role role1 --rolepassword passwordgs_dumpall[port='8000'][human_resource][2018-11-14 17:26:18]: dumpall operation successfulgs_dumpall[port='8000'][human_resource][2018-11-14 17:26:18]: total time: 6437 ms
  • 示例 示例一:执行gs_dump,导出hr模式全量信息,并对导出文件进行压缩,导出文件格式为文本格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_schema_backup.sql -p 8000 -h 10.10.10.100 human_resource -n hr -Z 6 -F pgs_dump[port=''][human_resource][2017-07-21 16:05:55]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 16:05:55]: total time: 2425 ms 示例二:执行gs_dump,仅导出hr模式的数据,导出文件格式为tar归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_schema_data_backup.tar -p 8000 -h 10.10.10.100 human_resource -n hr -a -F tgs_dump[port=''][human_resource][2018-11-14 15:07:16]: dump database human_resource successfullygs_dump[port=''][human_resource][2018-11-14 15:07:16]: total time: 1865 ms 示例三:执行gs_dump,仅导出hr模式的定义,导出文件格式为目录归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_schema_def_backup -p 8000 -h 10.10.10.100 human_resource -n hr -s -F dgs_dump[port=''][human_resource][2018-11-14 15:11:34]: dump database human_resource successfullygs_dump[port=''][human_resource][2018-11-14 15:11:34]: total time: 1652 ms 示例四:执行gs_dump,导出human_resource数据库时,排除hr模式,导出文件格式为自定义归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_schema_backup.dmp -p 8000 -h 10.10.10.100 human_resource -N hr -F cgs_dump[port=''][human_resource][2017-07-21 16:06:31]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 16:06:31]: total time: 2522 ms 示例五:执行gs_dump,同时导出hr和public模式,且仅导出模式定义,并对导出文件进行加密,导出文件格式为tar归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_schema_backup1.tar -p 8000 -h 10.10.10.100 human_resource -n hr -n public -s --with-encryption AES128 --with-key 1234567812345678 -F tgs_dump[port=''][human_resource][2017-07-21 16:07:16]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 16:07:16]: total time: 2132 ms 示例六:执行gs_dump,导出human_resource数据库时,排除hr和public模式,导出文件格式为自定义归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_schema_backup2.dmp -p 8000 -h 10.10.10.100 human_resource -N hr -N public -F cgs_dump[port=''][human_resource][2017-07-21 16:07:55]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 16:07:55]: total time: 2296 ms 示例七:执行gs_dump,导出public模式下所有表(视图、序列和外表)和hr模式中staffs表,包含数据和表定义,导出文件格式为自定义归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_backup3.dmp -p 8000 -h 10.10.10.100 human_resource -t public.* -t hr.staffs -F cgs_dump[port=''][human_resource][2018-12-13 09:40:24]: dump database human_resource successfullygs_dump[port=''][human_resource][2018-12-13 09:40:24]: total time: 896 ms
  • 示例 示例一:执行gs_dump,导出表hr.staffs的定义和数据,并对导出文件进行压缩,导出文件格式为文本格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup.sql -p 8000 -h 10.10.10.100 human_resource -t hr.staffs -Z 6 -F pgs_dump[port=''][human_resource][2017-07-21 17:05:10]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 17:05:10]: total time: 3116 ms 示例二:执行gs_dump,只导出表hr.staffs的数据,导出文件格式为tar归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_data_backup.tar -p 8000 -h 10.10.10.100 human_resource -t hr.staffs -a -F t gs_dump[port=''][human_resource][2017-07-21 17:04:26]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 17:04:26]: total time: 2570 ms 示例三:执行gs_dump,导出表hr.staffs的定义,导出文件格式为目录归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_def_backup -p 8000 -h 10.10.10.100 human_resource -t hr.staffs -s -F d gs_dump[port=''][human_resource][2017-07-21 17:03:09]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 17:03:09]: total time: 2297 ms 示例四:执行gs_dump,不导出表hr.staffs,导出文件格式为自定义归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup4.dmp -p 8000 -h 10.10.10.100 human_resource -T hr.staffs -F cgs_dump[port=''][human_resource][2017-07-21 17:14:11]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 17:14:11]: total time: 2450 ms 示例五:执行gs_dump,同时导出两个表hr.staffs和hr.employments,导出文件格式为文本格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup1.sql -p 8000 -h 10.10.10.100 human_resource -t hr.staffs -t hr.employments -F pgs_dump[port=''][human_resource][2017-07-21 17:19:42]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 17:19:42]: total time: 2414 ms 示例六:执行gs_dump,导出时,排除两个表hr.staffs和hr.employments,导出文件格式为文本格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup2.sql -p 8000 -h 10.10.10.100 human_resource -T hr.staffs -T hr.employments -F pgs_dump[port=''][human_resource][2017-07-21 17:21:02]: dump database human_resource successfullygs_dump[port=''][human_resource][2017-07-21 17:21:02]: total time: 3165 ms 示例七:执行gs_dump,导出表hr.staffs的定义和数据,只导出表hr.employments的定义,导出文件格式为tar归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup3.tar -p 8000 -h 10.10.10.100 human_resource -t hr.staffs -t hr.employments --exclude-table-data hr.employments -F tgs_dump[port=''][human_resource][2018-11-14 11:32:02]: dump database human_resource successfullygs_dump[port=''][human_resource][2018-11-14 11:32:02]: total time: 1645 ms 示例八:执行gs_dump,导出表hr.staffs的定义和数据,并对导出文件进行加密,导出文件格式为文本格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup4.sql -p 8000 -h 10.10.10.100 human_resource -t hr.staffs --with-encryption AES128 --with-key 1212121212121212 -F pgs_dump[port=''][human_resource][2018-11-14 11:35:30]: dump database human_resource successfullygs_dump[port=''][human_resource][2018-11-14 11:35:30]: total time: 6708 ms 示例九:执行gs_dump,导出public模式下所有表(包括视图、序列和外表)和hr模式中staffs表,包含数据和表定义,导出文件格式为自定义归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_table_backup5.dmp -p 8000 -h 10.10.10.100 human_resource -t public.* -t hr.staffs -F cgs_dump[port=''][human_resource][2018-12-13 09:40:24]: dump database human_resource successfullygs_dump[port=''][human_resource][2018-12-13 09:40:24]: total time: 896 ms 示例十: 执行gs_dump,仅导出依赖于t1模式下的test1表对象的视图信息,导出文件格式为目录归档格式。 gs_dump -W password -U jack -f /home//backup/MPPDB_view_backup6 -p 8000 -h 10.10.10.100 human_resource -t t1.test1 --include-depend-objs --exclude-self -F dgs_dump[port=''][jack][2018-11-14 17:21:18]: dump database human_resource successfullygs_dump[port=''][jack][2018-11-14 17:21:23]: total time: 4239 ms
共100000条