华为云用户手册

  • 参数说明 groupname 节点组名称。 取值范围:字符串,要符合标识符命名规范。且最大长度不超过63个字符。 节点组命名支持ASCII字符集上所有字符,但是建议用户按照标识符命名规范命名。 nodename 节点名称。 取值范围:字符串,要符合标识符命名规范。且最大长度不超过63个字符。 不指定该参数时,需要指定bucketcnt值,表示创建属于installation node group的child node group bucketcnt bucket_cnt bucket_cnt表示bucket桶数量。 取值范围:[32,16384),并且必须是2的幂次方。 不指定该参数时,需要指定WITH的值。 BUCKETS [ ( bucketnumber [, ... ] ) ] BUCKETS子句是集群管理工具的内部用法,该子句不建议用户直接使用,以免对集群的正常使用造成影响。 groupparent parent_group_name parent_group_name表示当前child node group所属的parent node group名字。
  • PG_RUNNING_XACTS PG_RUNNING_XACTS视图显示当前节点运行事务的信息。 表1 PG_RUNNING_XACTS字段 名称 类型 描述 handle integer 事务在GTM对应的句柄。 gxid xid 事务id号。 state tinyint 事务状态。 3:prepared。 0:starting。 node text 节点名称。 xmin xid 节点上当前数据涉及的最小事务号。 vacuum boolean 表示当前事务是否是lazy vacuum事务。 t(true):表示是。 f(false):表示不是。 timeline bigint 数据库重启次数。 prepare_xid xid 处于prepared状态的事务的id,若事务不在prepared状态,值为0。 pid bigint 事务对应的线程id。 next_xid xid CN传给DN的事务id。 父主题: 系统视图
  • 语法格式 1 2 3 4 5 6 7 8 9 10 11 12 13 CREATE [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name [ (column_name [, ...] ) ] [ WITH ( {storage_parameter = value} [, ... ] ) ] [ COMPRESS | NOCOMPRESS ] [ TABLESPACE tablespace_name ] [ DISTRIBUTE BY { REPLICATION | HASH ( column_name [, ...] ) | RANGE ( column_name [, ...] ) { SLICE REFERENCES tablename | ( slice_less_than_item [, ...] ) | ( slice_start_end_item [, ...] ) } | LIST ( column_name [, ...] ) { SLICE REFERENCES tablename | ( slice_values_item [, ...] ) } } ] [ TO { GROUP groupname | NODE ( nodename [, ... ] ) } ] AS query [ WITH [ NO ] DATA ]; 各个字段详细信息见语法格式。
  • 参数说明 UNLOGGED 指定表为非日志表。在非日志表中写入的数据不会被写入到预写日志中,这样就会比普通表快很多。但是,这也是不安全的,非日志表在冲突或异常关机后会被自动删截。非日志表中的内容也不会被复制到备用服务器中。在该类表中创建的索引也不会被自动记录。 使用场景:非日志表不能保证数据的安全性,用户应该在确保数据已经做好备份的前提下使用,例如系统升级时进行数据的备份。 故障处理:当异常关机等操作导致非日志表上的索引发生数据丢失时,用户应该对发生错误的索引进行重建。 GLOBAL | LOCAL 创建临时表时可以在TEMP或TEMPORARY前指定GLOBAL或LOCAL关键字。目前这两个关键字的设立,仅是为了兼容SQL标准,实际上无论指定GLOBAL还是LOCAL,GaussDB都会创建本地临时表。 TEMPORARY | TEMP 如果指定TEMP或TEMPORARY关键字,则创建的表为临时表。临时表只在当前会话可见,本会话结束后会自动删除。因此,在除当前会话连接的CN以外的其他CN故障时,仍然可以在当前会话上创建和使用临时表。由于临时表只在当前会话创建,对于涉及对临时表操作的DDL语句,会产生DDL失败的报错。因此,建议DDL语句中不要对临时表进行操作。TEMP和TEMPORARY等价。 临时表通过每个会话独立的以pg_temp开头的SCHEMA来保证只对当前会话可见,因此,不建议用户在日常操作中手动删除以pg_temp,pg_toast_temp开头的SCHEMA。 如果建表时不指定TEMPORARY/TEMP关键字,而指定表的SCHEMA为当前会话的pg_temp_开头的SCHEMA,则该表会被创建为临时表。 临时表只对当前会话可见,因此不支持与\parallel on并行执行一起使用。 临时表不支持DN故障或者主备切换。 table_name 要创建的表名。 取值范围:字符串,要符合标识符命名规范。 column_name 新表中要创建的字段名。 取值范围:字符串,要符合标识符命名规范。 WITH ( storage_parameter [= value] [, ... ] ) 这个子句为表或索引指定一个可选的存储参数。参数的详细说明如下所示。 FILLFACTOR 一个表的填充因子(fillfactor)是一个介于10和100之间的百分数。100(完全填充)是默认值。在Ustore存储引擎下,该值得默认值为92。如果指定了较小的填充因子,INSERT操作仅按照填充因子指定的百分率填充表页。每个页上的剩余空间将用于在该页上更新行,这就使得UPDATE有机会在同一页上放置同一条记录的新版本,这比把新版本放置在其他页上更有效。对于一个从不更新的表将填充因子设为100是最佳选择,但是对于频繁更新的表,选择较小的填充因子则更加合适。 取值范围:10~100 ORIENTATION 取值范围: ROW(缺省值):表的数据将以行式存储。 COMPRESSION 指定表数据的压缩级别,它决定了表数据的压缩比以及压缩时间。一般来讲,压缩级别越高,压缩比也越大,压缩时间也越长;反之亦然。实际压缩比取决于加载的表数据的分布特征。 取值范围: 行存表不支持压缩。 COMPRESS / NOCOMPRESS 创建一个新表时,需要在创建表语句中指定关键字COMPRESS,这样,当对该表进行批量插入时就会触发压缩特性。该特性会在页范围内扫描所有元组数据,生成字典、压缩元组数据并进行存储。指定关键字NOCOMPRESS则不对表进行压缩。行存表不支持压缩。 缺省值:NOCOMPRESS,即不对元组数据进行压缩。 TABLESPACE tablespace_name 指定新表将要在tablespace_name表空间内创建。如果没有声明,将使用默认表空间。 DISTRIBUTE BY 详细信息见•DISTRIBUTE BY。 TO { GROUP groupname | NODE ( nodename [, ... ] ) } TO GROUP指定创建表所在的Node Group。TO NODE主要供内部扩容工具使用,一般用户不应该使用。 AS query 一个SELECT VALUES命令或者一个运行预备好的SELECT或VALUES查询的EXECUTE命令。 [ WITH [ NO ] DATA ] 创建表时,是否也插入查询到的数据。默认是要数据,选择“NO”参数时,则不要数据。
  • 功能描述 根据查询结果创建表。 CREATE TABLE AS创建一个表并且用来自SELECT命令的结果填充该表。该表的字段和SELECT输出字段的名称及数据类型相关。不过用户可以通过明确地给出一个字段名称列表来覆盖SELECT输出字段的名称。 CREATE TABLE AS对源表进行一次查询,然后将数据写入新表中,而查询视图结果会根据源表的变化而有所改变。相比之下,每次做查询的时候,视图都重新计算定义它的SELECT语句。
  • 配置云连接服务一共有哪几个步骤? 配置云连接服务,需要四个步骤,并且均基于管理控制台云连接服务的在线操作,即配置即用。 创建云连接实例:一个云连接实例,可以理解为后续会实现互通的一个私网网络,加载在同一个云连接实例下的网络实例相互之间能够互通。 加载网络实例:将需要互通的网络实例加载到同一个云连接实例里。当前云连接支持互通的网络实例,包括虚拟私有云(VPC)以及虚拟网关(VGW)。 购买互通带宽包:为了实现网络实例跨区域互通,您需要在带宽包管理页面先购买跨区域对应的跨大区或大区内的带宽包,并绑定到相应的云连接实例。 配置域间带宽:购买带宽包后,在云连接实例详情页面配置需要实现互通的域间带宽,至此云连接的配置完成。 父主题: 热点问题·
  • 配置完云连接之后,跨Region VPC仍然无法通信,可能是哪些原因? 在配置完云连接后,可以通过简单的连通性测试(ICMP或者telnet等)来测试跨Region的VPC互通了。如果仍然无法通信,可以尝试从以下几个方面分析原因: 检查目的主机的安全组是否在入方向放通了相应的ICMP策略或telnet端口策略。如果目的主机的入方向策略未放通ICMP或相应的telnet端口策略,数据包会被安全组过滤掉。 检查目的VPC是否存在限制源目VPC通讯的子网ACL策略。如果目的VPC存在限制连通性探测报文通过的ACL策略,数据包会被子网ACL过滤掉。 检查源VPC以及目的VPC内部是否存在冲突或重复的子网Subnet。如果存在重复的子网Subnet,会导致原来应该发往目标Region子网的报文在VPC内即完成路由,没有发往目标Region。 源目Region之间是否漏配置了域间带宽。如果只是绑定了带宽包,没有把带宽包分解成不同Region之间的域间带宽,将会导致Region间只有默认的10kbps带宽值,无法支持ICMP大包或telnet测试。 父主题: 热点问题·
  • 参数说明 policy_name 审计策略名称,需要唯一,不可重复; 取值范围:字符串,要符合标识符命名规范。 DDL 指的是针对数据库执行如下操作时进行审计,目前支持:ALTER、ANALYZE、COMMENT、CREATE、DROP、GRANT、REVOKE、SET、SHOW。 ALL 指的是上述DDL支持的所有对数据库的操作。 DML 指的是针对数据库执行如下操作时进行审计,目前支持:COPY、DEALLOCATE、DELETE_P、EXECUTE、REINDEX、INSERT、PREPARE、SELECT、TRUNCATE、UPDATE。 FILTER_TYPE 指定审计策略的过滤信息,过滤类型包括:IP、ROLES、APP。 filter_value 指具体过滤信息内容。 policy_comments 用于记录策略相关的描述信息。 ENABLE|DISABLE 可以打开或关闭统一审计策略。
  • 语法格式 添加/删除审计策略中的操作类型。 ALTER AUDIT POLICY [ IF EXISTS ] policy_name { ADD | REMOVE } { privilege_audit_clause | access_audit_clause }; 修改审计策略中的过滤条件。 ALTER AUDIT POLICY [ IF EXISTS ] policy_name MODIFY ( filter_group_clause ); 将审计策略中的过滤条件删除。 ALTER AUDIT POLICY [ IF EXISTS ] policy_name DROP FILTER; 修改审计策略描述。 ALTER AUDIT POLICY [ IF EXISTS ] policy_name COMMENTS policy_comments; 打开或者关闭审计策略。 ALTER AUDIT POLICY [ IF EXISTS ] policy_name { ENABLE | DISABLE }; privilege_audit_clause: 审计策略中具体的DDL操作类型及目标资源标签。 1 PRIVILEGES ({ DDL | ALL } [ ON LABEL ( resource_label_name [, ... ] ) ]) access_audit_clause: 审计策略中具体的DML操作类型及目标资源标签。 ACCESS ({ DML | ALL } [ ON LABEL ( resource_label_name [, ... ] ) ]) filter_group_clause: 审计策略中的过滤条件。 1 FILTER ON { filter_type ( filter_value [, ... ] ) } [, ... ]
  • 加载网络实例时出现系统异常怎么办? 当用户在加载网络实例中的VPC实例时,系统提示“当前VPC存在路由冲突,此VPC路由已经在对等连接、VPN等其它场景中使用。”,请排查该VPC是否在以下某个场景中使用: 自定义路由。 云专线使用。 VPN使用。 对等连接使用。 如果该VPC在这些场景中已被使用,可能会造成路由冲突。此时,需要根据您的网络规划,取消该VPC在其他场景的使用或者云连接中不加载该VPC实例。 父主题: 热点问题·
  • PG_LOCKS PG_LOCKS视图显示各打开事务所持有的锁信息。 表1 PG_LOCKS字段 名称 类型 引用 描述 locktype text - 被锁定对象的类型:relation、extend、page、tuple、transactionid、virtualxid、object、userlock、advisory。 database oid PG_DATABASE.oid 被锁定对象所在数据库的OID。 如果被锁定的对象是共享对象,则OID为0。 如果被锁定的对象是一个事务,则OID为NULL。 relation oid PG_CLASS.oid 关系的OID,如果锁定的对象不是关系,也不是关系的一部分,则为NULL。 page integer - 关系内部的页面编号,如果对象不是关系页或者不是行页,则为NULL。 tuple smallint - 页面里边的行编号,如果对象不是行,则为NULL。 bucket integer - 哈希桶编号。 virtualxid text - 虚拟事务的ID,如果对象不是一个虚拟事务,则为NULL。 transactionid xid - 事务的ID,如果对象不是一个事务,则为NULL。 classid oid PG_CLASS.oid 包含该对象的系统表的OID,如果对象不是普通的数据库对象,则为NULL。 objid oid - 对象在其系统表内的OID,如果对象不是普通数据库对象,则为NULL。 objsubid smallint - 对于表的一个字段,这是字段编号;对于其他对象类型,这个字段是零;如果这个对象不是普通数据库对象,则为NULL。 virtualtransaction text - 持有此锁或者在等待此锁的虚拟事务的虚拟ID。 pid bigint - 持有或者等待这个锁的服务器线程的逻辑ID。如果锁是被一个预备事务持有的,则为NULL。 sessionid bigint - 持有或者等待这个锁的会话的ID。 mode text - 这个线程持有的或者是期望的锁模式。 granted boolean - 如果锁是持有锁,则为TRUE。 如果锁是等待锁,则为FALSE。 fastpath boolean - 如果通过fast-path获得锁,则为TRUE;如果通过主要的锁表获得,则为FALSE。 locktag text - 会话等待锁信息,可通过locktag_decode()函数解析。 global_sessionid text - 全局会话ID。 父主题: 系统视图
  • 云连接对比公网的优势体现在哪里 通过构建以下两个场景进行测试,对比云连接与公网: 表1 云连接与公网EIP相同配置项相关 虚机规格 2U4G 带宽 4M 互通区域 华北-北京四(AZ1)与中国-香港(AZ1)互通。 华东-上海一(AZ1)与中国-香港(AZ1)互通。 测试时间 2020/09/09 18:30 ~ 2020/09/10 09:30 ,共计15小时。 搭建原理 云连接使用实例加载两个区域VPC实现互通;公网使用EIP弹性公网实现互通。 华北-北京四(AZ1)与中国-香港(AZ1)互通结果 图1 公网测试结果 图2 云连接测试结果 表2 对比详情 对比类型与指标 丢包 平均时延 抖动 云连接 0% 38.9ms 1.57ms 公网 0.04% 42.882ms 2.105ms 华东-上海一(AZ1)与中国-香港(AZ1)互通结果 图3 公网测试结果 图4 云连接测试结果 表3 对比详情 对比类型与指标 丢包 平均时延 抖动 云连接 0% 32.14ms 0.514ms 公网 1.73% 33.24ms 2.838ms 通过对比两个场景的测试结果,可以看出: 云连接的时延数据稍优于公网,或与公网持平。 云连接的丢包和抖动数据要明显优于公网。 所以,云连接服务整体在网络传输过程中,与公网相比,数据更加准确,通信更加稳定。
  • 影响网络质量的指标有哪些 丢包:指在网络传输过程中丢失报文的百分比,用来衡量网络正确转发用户数据的能力。数据包发送端与接收端之间收发数据包数目的差值即为网络传输丢包的数目,而在一段时间内实际丢掉的数据包个数与期望接收到的数据包个数之比值即为丢包率。 抖动:一般是指数据在网络两端传送时间的不稳定性,由于网络中物理转发数据包设备都会存在发送接收缓存,当大量的数据发送导致数据量超过了电缆的传送能力,物理设备如路由器等就会缓存多余的数据包,这样就会导致有的数据包到达时间快(未缓存或者缓存时间短),而有的数据包到达时间慢(缓存了较长时间),这两者之间的时间差就称为网络抖动。 时延:是指数据包在网络的两个节点之间传送的平均往返时间,对存储转发设备而言,从数据帧的最后一个数据帧的最后一位bit进入设备开始计时,至数据帧第一位bit出现在输出端口结束,二者的时间差为存储转发设备的延时。 其主要包括以下几个延时: 传播延时,指数据包在传输媒介中传送所花费的时间,该值一般和传输两端的物理距离和包大小成正比,物理距离越大,包越大,传输延时也越大。 设备延时,指数据包在物理设备如路由器中转发所花费的时间,跟交换设备的转发性能相关。 包转化延时,数据包在两端编解码所花费的时间。 抖动缓冲延时,一般话音的IP通信中,为了防止网络抖动导致话音质量断断续续,都设有缓冲用来克服网络抖动,该缓冲也会带来一定的延时。
  • COMM_DELAY COMM_DELAY视图展示单个DN的TCP代理通信库时延状态。 表1 COMM_DELAY字段 名称 类型 描述 node_name text 节点名称。 remote_name text 连接对端节点名称。 remote_host text 连接对端IP地址。 stream_num integer 当前物理连接使用的stream逻辑连接数量。 min_delay integer 当前物理连接一分钟内探测到的最小时延(单位:微秒)。 说明: 负数结果无效,请重新等待时延状态更新后再执行。 average integer 当前物理连接一分钟内探测时延的平均值(单位:微秒)。 max_delay integer 当前物理连接一分钟内探测到的最大时延(单位:微秒)。 父主题: Comm
  • 示例流程 图1 给用户授予云连接权限流程 创建用户组并授权 在IAM控制台创建用户组,并授予云连接服务权限“Cross Connect Administrator”。 创建用户并加入用户组 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限 新创建的用户登录控制台,切换至授权区域,验证权限: 在“服务列表”中选择“网络 > 云连接”,进入云连接的页面,单击右上角“创建云连接”,尝试创建云连接实例,如果创建成功,表示“Cross Connect Administrator”已生效。 在“服务列表”中选择除云连接服务外(假设当前权限仅包含Cross Connect Administrator)的任一服务,如果提示权限不足,表示“Cross Connect Administrator”已生效。
  • PG_TRIGGER PG_TRIGGER系统表存储触发器信息。 表1 PG_TRIGGER字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 tgrelid oid 触发器所在表的OID。 tgname name 触发器名。 tgfoid oid 需要被触发器调用的函数。 tgtype smallint 触发器类型。 tgenabled "char" O =触发器在“origin”和“local”模式下触发。 D =触发器被禁用。 R =触发器在“replica”模式下触发。 A =触发器始终触发。 tgisinternal boolean 内部触发器标识,如果为true表示内部触发器。 tgconstrrelid oid 完整性约束引用的表。 tgconstrindid oid 完整性约束的索引。 tgconstraint oid 约束触发器在pg_constraint中的OID。 tgdeferrable boolean 约束触发器是为DEFERRABLE类型。 t(true):表示是。 f(false):表示不是。 tginitdeferred boolean 约束触发器是否为INITIALLY DEFERRED类型。 t(true):表示是。 f(false):表示不是。 tgnargs smallint 触发器函数入参个数。 tgattr int2vector 当触发器指定列时的列号,未指定则为空数组。 tgargs bytea 传递给触发器的参数。 tgqual pg_node_tree 表示触发器的WHEN条件,如果没有则为null。 tgowner oid 触发器所有者 父主题: 系统表
  • 语法格式 修改数据库的最大连接数。 1 2 ALTER DATABASE database_name [ [ WITH ] CONNECTION LIMIT connlimit ]; 修改数据库名称。 1 2 ALTER DATABASE database_name RENAME TO new_name; 修改数据库所属者。 1 2 ALTER DATABASE database_name OWNER TO new_owner;
  • 注意事项 只有数据库的所有者或者被授予了数据库ALTER权限的用户才能执行ALTER DATABASE命令,系统管理员默认拥有此权限。针对所要修改属性的不同,对其还有以下权限约束: 修改数据库名称,必须拥有CREATEDB权限。 修改数据库所有者,当前用户必须是该database的所有者或者系统管理员,必须拥有CREATEDB权限,且该用户是新所有者角色的成员。 修改数据库默认表空间,该用户必须拥有新表空间的CREATE权限。这个语句会从物理上将一个数据库原来缺省表空间上的表和索引移至新的表空间。注意不在缺省表空间的表和索引不受此影响。 不能重命名当前使用的数据库,如果需要重新命名,须连接至其他数据库上。
  • 参数说明 database_name 需要修改属性的数据库名称。 取值范围:字符串,要符合标识符命名规范。 connlimit 数据库可以接收的最大并发连接数(管理员用户连接除外)。 取值范围:[-1, 2^31-1]的整数,建议填写1~50的整数。-1(缺省)表示没有限制。 new_name 数据库的新名称。 取值范围:字符串,要符合标识符命名规范。 new_owner 数据库的新所有者。 取值范围:字符串,有效的用户名。 new_tablespace 数据库新的默认表空间,该表空间为数据库中已经存在的表空间。默认的表空间为pg_default。 取值范围:字符串,有效的表空间名。 configuration_parameter value 把指定的数据库会话参数值设置为给定的值。如果value是DEFAULT或者RESET,则在新的会话中使用系统的缺省设置。OFF关闭设置。 当前版本不支持设置数据库级别参数。 取值范围:字符串 DEFAULT OFF RESET time_zone 设置database_name的数据库的时区值,需要有对应的数据库的权限。 取值范围:字符串 系统支持的时区和其相应的缩写 -15:59到+15:00 FROM CURRENT 根据当前会话连接的数据库设置该参数的值。 RESET configuration_parameter 重置指定的数据库会话参数值。 当前版本不支持重置数据库级别参数。 RESET ALL 重置全部的数据库会话参数值。 当前版本不支持重置数据库级别参数。 修改数据库默认表空间,会将旧表空间中的所有表和索引转移到新表空间中,该操作不会影响其他非默认表空间中的表和索引。 修改的数据库会话参数值,将在下一次会话中生效。 执行完参数设置后,需要手动执行CLEAN CONNECTION清理旧连接,否则可能存在集群节点间参数值不一致。
  • 操作步骤 创建schema 执行如下命令创建一个schema。 1 gaussdb=# CREATE SCHEMA myschema; 当结果显示为如下信息,则表示成功创建一个名为myschema的schema。 1 CREATE SCHEMA 如果需要在模式中创建或者访问对象,其完整的对象名称由模式名称和具体的对象名称组成,中间由符号“.”隔开。例如:myschema.table。 执行如下命令在创建schema时指定owner。 1 gaussdb=# CREATE SCHEMA myschema AUTHORIZATION omm; 当结果显示为如下信息,则表示成功创建一个属于omm用户,名为myschema的schema。 1 CREATE SCHEMA 使用schema 在特定schema下创建对象或者访问特定schema下的对象,需要使用有schema修饰的对象名。该名称包含schema名以及对象名,他们之间用“.”号分开。 执行如下命令在myschema下创建mytable表。 1 2 gaussdb=# CREATE TABLE myschema.mytable(id int, name varchar(20)); CREATE TABLE 如果在数据库中指定对象的位置,就需要使用有schema修饰的对象名称。 执行如下命令查询myschema下mytable表的所有数据。 1 2 3 4 gaussdb=# SELECT * FROM myschema.mytable; id | name ----+------ (0 rows) schema的搜索路径 可以设置search_path配置参数指定查询对象可用schema的顺序。在搜索路径列出的第一个schema会变成默认的schema。如果在创建对象时不指定schema,则会创建在默认的schema中。 执行如下命令查看搜索路径。 1 2 3 4 5 gaussdb=# SHOW SEARCH_PATH; search_path ---------------- "$user",public (1 row) 执行如下命令将搜索路径设置为myschema, public。首先搜索myschema,然后搜索public。 1 2 gaussdb=# SET SEARCH_PATH TO myschema, public; SET schema的权限控制 默认情况下,用户只能访问属于自己的schema中的数据库对象。如果需要访问其他schema的对象,则该schema的所有者应该授予他对该schema的usage权限。 通过将模式的CREATE权限授予某用户,被授权用户就可以在此模式中创建对象。默认情况下,所有角色都拥有在public模式上的usage权限,但是普通用户没有在public模式上的CREATE权限。普通用户能够连接到一个指定数据库并在它的public模式中创建对象是不安全的,如果普通用户具有在public模式上的CREATE权限则建议通过如下语句撤销该权限。 撤销PUBLIC在public模式下创建对象的权限,下面语句中第一个“public”指的是模式,第二个“PUBLIC”指的是所有角色。 1 2 gaussdb=# REVOKE CREATE ON SCHEMA public FROM PUBLIC; REVOKE 执行如下命令查看现有的schema: 1 2 3 4 5 gaussdb=# SELECT current_schema(); current_schema ---------------- myschema (1 row) 执行如下命令创建用户jack,并将myschema的usage权限授予用户jack。 1 2 3 4 gaussdb=# CREATE USER jack IDENTIFIED BY '********'; CREATE ROLE gaussdb=# GRANT USAGE ON schema myschema TO jack; GRANT 将用户jack对于myschema的usage权限收回。 1 2 gaussdb=# REVOKE USAGE ON schema myschema FROM jack; REVOKE 删除schema 当schema为空时,即该schema下没有数据库对象,使用DROP SCHEMA命令进行删除。例如删除名为nullschema的空schema。 1 2 gaussdb=# DROP SCHEMA IF EXISTS nullschema; DROP SCHEMA 当schema非空时,如果要删除一个schema及其包含的所有对象,需要使用CASCADE关键字。例如删除myschema及该schema下的所有对象。 1 2 gaussdb=# DROP SCHEMA myschema CASCADE; DROP SCHEMA 执行如下命令删除用户jack。 1 2 gaussdb=# DROP USER jack; DROP ROLE
  • 注意事项 数据库集群包含一个或多个已命名数据库。用户和用户组在整个集群范围内是共享的,但是其数据并不共享。任何与服务器连接的用户都只能访问连接请求里声明的数据库。 一个数据库可以包含一个或多个已命名的schema,schema又包含表及其他数据库对象,包括数据类型、函数和操作符等。同一对象名可以在不同的schema中使用而不会引起冲突。例如,schema1和schema2都可以包含一个名为mytable的表。 和数据库不同,schema不是严格分离的。用户根据其对schema的权限,可以访问所连接数据库的schema中的对象。进行schema权限管理首先需要对数据库的权限控制进行了解。 不能创建以PG_为前缀的schema名,该类schema为数据库系统预留的。 在每次创建新用户时,系统会在当前登录的数据库中为新用户创建一个同名schema。对于其他数据库,若需要同名schema,则需要用户手动创建。 通过未修饰的表名(名称中只含有表名,没有“schema名”)引用表时,系统会通过search_path(搜索路径)来判断该表是哪个schema下的表。pg_temp和pg_catalog始终会作为搜索路径顺序中的前两位,无论二者是否出现在search_path中,或者出现在search_path中的任何位置。search_path(搜索路径)是一个schema名列表,在其中找到的第一个表就是目标表,如果没有找到则报错。(某个表即使存在,如果它的schema不在search_path中,依然会查找失败)在搜索路径中的第一个schema叫做"当前schema"。它是搜索时查询的第一个schema,同时在没有声明schema名时,新创建的数据库对象会默认存放在该schema下。 每个数据库都包含一个pg_catalog schema,它包含系统表和所有内置数据类型、函数和操作符。pg_catalog是搜索路径中的一部分,始终在临时表所属的模式后面,并在search_path中所有模式的前面,即具有第二搜索优先级,以确保搜索到数据库内置对象。如果用户需要使用和系统内置对象重名的自定义对象时,可以在操作自定义对象时带上自己的模式。
  • 语法格式 1 CREATE RESOURCE LABEL [IF NOT EXISTS] label_name ADD label_item_list[, ...]; label_item_list: 1 resource_type(resource_path[, ...]) resource_type: { TABLE | COLUMN | SCHEMA | VIEW | FUNCTION }
  • 参数说明 IF NOT EXISTS 如果已经存在相同名称的资源标签,不会报出错误,不会抛出错误,而是发出一个通知,告知此资源标签已存在。 label_name 资源标签名称,创建时要求不能与已有标签重名。 取值范围:字符串,要符合标识符命名规范。 resource_type 指的是要标记的数据库资源的类型。 取值范围:表(TABLE)、列(COLUMN)、模式(SCHEMA)、视图(VIEW)、函数(FUNCTION)。 resource_path 指的是描述具体的数据库资源的路径。
  • 示例 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 35 36 37 38 39 40 41 --创建一个表tb_for_label。 gaussdb=# CREATE TABLE tb_for_label(col1 text, col2 text, col3 text); --创建一个模式schema_for_label。 gaussdb=# CREATE SCHEMA schema_for_label; --创建一个视图view_for_label。 gaussdb=# CREATE VIEW view_for_label AS SELECT 1; --创建一个函数func_for_label。 gaussdb=# CREATE FUNCTION func_for_label RETURNS TEXT AS $$ SELECT col1 FROM tb_for_label; $$ LANGUAGE SQL; --基于表创建资源标签。 gaussdb=# CREATE RESOURCE LABEL IF NOT EXISTS table_label add TABLE(public.tb_for_label); --基于列创建资源标签。 gaussdb=# CREATE RESOURCE LABEL IF NOT EXISTS column_label add COLUMN(public.tb_for_label.col1); --基于模式创建资源标签。 gaussdb=# CREATE RESOURCE LABEL IF NOT EXISTS schema_label add SCHEMA(schema_for_label); --基于视图创建资源标签。 gaussdb=# CREATE RESOURCE LABEL IF NOT EXISTS view_label add VIEW(view_for_label); --基于函数创建资源标签。 gaussdb=# CREATE RESOURCE LABEL IF NOT EXISTS func_label add FUNCTION(func_for_label); --删除资源标签。 gaussdb=# DROP RESOURCE LABEL func_label, view_label, schema_label, column_label, table_label; --删除函数func_for_label。 gaussdb=# DROP FUNCTION func_for_label; --删除视图view_for_label。 gaussdb=# DROP VIEW view_for_label; --删除模式schema_for_label。 gaussdb=# DROP SCHEMA schema_for_label; --删除表tb_for_label。 gaussdb=# DROP TABLE tb_for_label;
  • PG_SHDESCRIPTION PG_SHDESCRIPTION系统表为共享数据库对象存储可选的注释。可以使用COMMENT命令操作注释的内容,使用\d命令查看注释内容。 PG_DESCRIPTION提供了类似的功能,它记录了单个数据库中对象的注释。 PG_SHDESCRIPTION是在集群的所有数据库之间共享的,即每个集群只有一个,而不是每个数据库一个。 表1 PG_SHDESCRIPTION字段 名称 类型 引用 描述 objoid oid 任意OID属性 所描述的对象的OID。 classoid oid PG_CLASS.oid 该对象出现的系统表的OID。 description text - 该对象的描述信息。 父主题: 系统表
  • 常用方法 表1 LogicalCreateSlotBuilder常用方法 返回值 方法 描述 throws T withSlotName(String slotName) 指定复制槽名。 - ChainedLogicalCreateSlotBuilder withOutputPlugin(String outputPlugin) 插件名称,当前支持mppdb_decoding。 - void make() 在数据库中创建具有指定参数的插槽。 SQLException ChainedLogicalCreateSlotBuilder self() 返回ChainedLogicalCreateSlotBuilder的实现。 -
  • PG_AM PG_AM系统表存储有关索引访问方法的信息。系统支持的每种索引访问方法都有一行。 表1 PG_AM字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性,必须明确选择)。 amname name - 访问方法的名称。 amstrategies smallint - 访问方法的操作符策略个数,或者如果访问方法没有一个固定的操作符策略集则为0。 amsupport smallint - 访问方法的支持过程个数。 amcanorder boolean - 这种访问方式是否支持通过索引字段值的命令扫描排序。 t(true):表示支持。 f(false):表示不支持。 amcanorderbyop boolean - 这种访问方式是否支持通过索引字段上操作符的结果的命令扫描排序。 t(true):表示支持。 f(false):表示不支持。 amcanbackward boolean - 访问方式是否支持向后扫描。 t(true):表示支持。 f(false):表示不支持。 amcanunique boolean - 访问方式是否支持唯一索引。 t(true):表示支持。 f(false):表示不支持。 amcanmulticol boolean - 访问方式是否支持多字段索引。 t(true):表示支持。 f(false):表示不支持。 amoptionalkey boolean - 访问方式是否支持第一个索引字段上没有任何约束的扫描。 t(true):表示支持。 f(false):表示不支持。 amsearcharray boolean - 访问方式是否支持ScalarArrayOpExpr搜索。 t(true):表示支持。 f(false):表示不支持。 amsearchnulls boolean - 访问方式是否支持IS NULL/NOT NULL搜索。 t(true):表示支持。 f(false):表示不支持。 amstorage boolean - 是否允许索引存储的数据类型与列的数据类型不同。 t(true):表示相同。 f(false):表示不相同。 amclusterable boolean - 是否允许在一个这种类型的索引上聚簇。 t(true):表示允许。 f(false):表示不允许。 ampredlocks boolean - 是否允许这种类型的一个索引管理细粒度的谓词锁定。 t(true):表示允许。 f(false):表示不允许 amkeytype oid PG_TYPE.oid 存储在索引里数据的类型,如果不是一个固定的类型则为0。 aminsert regproc PG_PROC.proname “插入这个行”函数。 ambeginscan regproc PG_PROC.proname “准备索引扫描” 函数。 amgettuple regproc PG_PROC.proname “下一个有效行”函数,如果没有则为0。 amgetbitmap regproc PG_PROC.proname “抓取所有的有效行” 函数,如果没有则为0。 amrescan regproc PG_PROC.proname “(重新)开始索引扫描”函数。 amendscan regproc PG_PROC.proname “索引扫描后清理” 函数。 ammarkpos regproc PG_PROC.proname “标记当前扫描位置”函数。 amrestrpos regproc PG_PROC.proname “恢复已标记的扫描位置”函数。 ammerge regproc PG_PROC.proname “归并多个索引对象”函数。 ambuild regproc PG_PROC.proname “建立新索引”函数。 ambuildempty regproc PG_PROC.proname “建立空索引”函数。 ambulkdelete regproc PG_PROC.proname 批量删除函数。 amvacuumcleanup regproc PG_PROC.proname VACUUM后的清理函数。 amcanreturn regproc PG_PROC.proname 检查是否索引支持唯一索引扫描的函数,如果没有则为0。 amcostestimate regproc PG_PROC.proname 估计一个索引扫描开销的函数。 amoptions regproc PG_PROC.proname 为一个索引分析和确认reloptions的函数。 父主题: 系统表
  • GV_INSTANCE GV_INSTANCE视图显示当前数据库实例的信息。默认只有系统管理员权限才可以访问此系统视图,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 GV_INSTANCE字段 名称 类型 描述 inst_id oid 当前数据库oid。 instance_number oid 当前数据库oid。 instance_name character varying(16) 当前数据库名。 host_name character varying(64) 暂不支持,值为NULL。 version character varying(17) 暂不支持,值为NULL。 version_legacy character varying(17) 暂不支持,值为NULL。 version_full character varying(17) 暂不支持,值为NULL。 startup_time date 暂不支持,值为NULL。 status character varying(12) 暂不支持,值为NULL。 parallel character varying(3) 暂不支持,值为NULL。 thread# numeric 暂不支持,值为NULL。 archiver character varying(7) 暂不支持,值为NULL。 log_switch_wait character varying(15) 暂不支持,值为NULL。 logins character varying(10) 暂不支持,值为NULL。 shutdown_pending character varying(3) 暂不支持,值为NULL。 database_status character varying(17) 暂不支持,值为NULL。 instance_role character varying(18) 暂不支持,值为NULL。 active_state character varying(9) 暂不支持,值为NULL。 blocked character varying(3) 暂不支持,值为NULL。 con_id numeric 暂不支持,值为NULL。 instance_mode character varying(11) 暂不支持,值为NULL。 edition character varying(7) 暂不支持,值为NULL。 family character varying(80) 暂不支持,值为NULL。 database_type character varying(15) 暂不支持,值为NULL。 父主题: 系统视图
  • ADM_AUDIT_TRAIL ADM_AUDIT_TRAIL显示所有标准审计跟踪条目,GaussDB审计信息主要通过pg_query_audit函数,该视图同时存在于PG_CATALOG和SYS schema下。仅拥有AUDITADMIN属性的用户才可以查看审计信息。GaussDB的action_name字段与ORA数据库审计动作不一致,transactionid字段与ORA数据库中transactionid数据的类型保持一致,GaussDB的sql_text字段为解析后sql描述语句,不完全与执行的sql语句相同。 在分布式下,pg_query_audit函数只能查询当前节点的审计信息。 表1 ADM_AUDIT_TRAIL字段 名称 类型 描述 os_username character varying(255) 暂不支持,值为NULL。 username character varying(128) 操作被审计的用户的名称,不是用户ID。 userhost character varying(128) 暂不支持,值为NULL。 terminal character varying(255) 暂不支持,值为NULL。 timestamp timestamp(0) without time zone 在本地数据库会话时区中创建审计跟踪条目的日期和时间(由审计会话创建的条目的用户登录日期和时间)。 owner character varying(128) 受操作影响的对象的创建者。 obj_name character varying(128) 受操作影响的对象的名称。 action numeric 暂不支持,值为NULL。 action_name character varying(28) action列中的数字代码对应的action类型名称。 new_owner character varying(128) 暂不支持,值为NULL。 new_name character varying(128) 暂不支持,值为NULL。 obj_privilege character varying(32) 暂不支持,值为NULL。 sys_privilege character varying(40) 暂不支持,值为NULL。 admin_option character varying(1) 暂不支持,值为NULL。 grantee character varying(128) 暂不支持,值为NULL。 audit_option character varying(40) 暂不支持,值为NULL。 ses_actions character varying(19) 暂不支持,值为NULL。 logoff_time timestamp(0) without time zone 暂不支持,值为NULL。 logoff_lread numeric 暂不支持,值为NULL。 logoff_pread numeric 暂不支持,值为NULL。 logoff_lwrite numeric 暂不支持,值为NULL。 logoff_dlock character varying(40) 暂不支持,值为NULL。 comment_text character varying(4000) 暂不支持,值为NULL。 sessionid numeric 暂不支持,值为NULL。 entryid numeric 暂不支持,值为NULL。 statementid numeric 暂不支持,值为NULL。 returncode numeric 暂不支持,值为NULL。 priv_used character varying(40) 暂不支持,值为NULL。 client_id character varying(128) 暂不支持,值为NULL。 econtext_id character varying(64) 暂不支持,值为NULL。 session_cpu numeric 暂不支持,值为NULL extended_timestamp timestamp(6) with time zone 创建审计跟踪条目的时间戳(由创建的条目的用户登录时间戳UTC(协调通用)中的审计会话时间)时区。 proxy_sessionid numeric 暂不支持,值为NULL。 global_uid character varying(32) 暂不支持,值为NULL。 instance_number numeric 暂不支持,值为NULL。 os_process character varying(16) 暂不支持,值为NULL。 transactionid text 访问或修改对象的事务的事务标识符。 scn numeric 暂不支持,值为NULL。 sql_bind nvarchar2(2000) 暂不支持,值为NULL。 sql_text nvarchar2 查询的SQL文本。 obj_edition_name character varying(128) 暂不支持,值为NULL。 dbid numeric 暂不支持,值为NULL。 rls_info clob 暂不支持,值为NULL。 current_user character varying(128) 暂不支持,值为NULL。 父主题: 系统视图
  • _PG_FOREIGN_TABLE_COLUMNS 显示外部表的列信息。该视图只有sysadmin权限可以查看。 表1 _PG_FOREIGN_TABLE_COLUMNS字段 名称 类型 描述 nspname name schema名称。 relname name 表名称。 attname name 列名称。 attfdwoptions text[] 外部数据封装器的属性选项,使用“keyword=value”格式的字符串。 父主题: Information Schema
共100000条