云服务器内容精选

  • Schema及Keyspace概念介绍 在MySQL类数据库中,Database是数据库对象的物理集合,不同的Database之间资源是完全隔离的(除部分共享对象之外)。每个Database都是一个独立的命名空间,用于存储和管理相关的数据库对象,如表、视图、函数等。Schema与Database在概念上非常接近,通常可以认为一个Database只包含一个Schema,且这个Schema的名称与Database的名称相同,这个Schema包含了该Database中所有的数据库对象。例如,在一个电商系统中,一个Database(或Schema)用于存储用户信息,另一个Database(或Schema)用于存储商品信息。 在 GaussDB数据库 中,Database提供了对资源的物理隔离和管理,Database通常用于表示一个完整的、独立的应用系统或业务环境。例如,一个电商系统可能使用一个单独的Database来存储其所有数据。在同一个Database内,不同的Schema可以用于表示不同的业务模块或功能区域。例如,在电商系统中,商品信息、用户信息、订单信息等可以分别存储在不同的Schema中。 在Cassandra数据库中,Keyspace(键空间)是最高级别的数据结构,在GeminiDB Cassandra中,Keyspace是用于保存列族,用户定义类型的对象。键空间相当于数据库,创建一个键空间即是创建了一个数据库。 在WiseDBA中,Keyspace的创建、同步、下线等操作与MySQL类数据库Schema的相应操作完全相同,为便于描述,下文统一以Schema为例进行介绍。 父主题: 在WiseDBA中创建和管理Schema
  • Schema演进支持范围 Schema演进支持范围: 支持列(包括嵌套列)相关的增、删、改、位置调整等操作。 不支持对分区列做演进。 不支持对Array类型的嵌套列进行增、删、列操作。 表1 引擎支持矩阵 引擎 DDL操作Schema 变更后的Hudi表写操作支持 变更后的Hudi表读操作支持 变更后Hudi表compaction支持 SparkSQL Y Y Y Y Flink N Y Y Y HetuEngine N N Y N Hive N N Y N 父主题: Hudi Schema演进
  • DDL与DML并发 表2 支持的DDL与DML并发操作 DDL操作 insert into update delete set/reset add Y Y Y Y rename N N Y N change type N N Y N change comment Y Y Y Y drop N N Y N 执行不支持的DDL与DML并发操作时会发生异常“cannot evolution schema implicitly, actions such as rename, delete, and type change were found”。
  • DDL并发 表1 支持的DDL并发操作 DDL操作 add rename change type change comment drop add Y Y Y Y Y rename Y Y Y Y Y change type Y Y Y Y Y change comment Y Y Y Y Y drop Y Y Y Y N 对同一列并发执行DDL操作需要注意以下两点: 不能对同一列并发执行drop,否则只能成功执行第一个drop随后发生异常“java.lang.UnsupportedOperationException: cannot evolution schema implicitly, the column for which the update operation is performed does not exist.”。 drop与rename、change type和change comment并发执行时,drop必须是最后执行,否则只能执行drop以及drop之前的命令,执行drop之后的命令会发生异常“java.lang.UnsupportedOperationException: cannot evolution schema implicitly, the column for which the update operation is performed does not exist.”。
  • 示例 alter table h0 add columns(ext0 string); alter table h0 add columns(new_col int not null comment 'add new column' after col1); alter table complex_table add columns(col_struct.col_name string comment 'add new column to a struct col' after col_from_col_struct);
  • DBE_PLDEBUGGER.continue 执行当前存储过程,直到下一个断点或结束,返回执行的下一条的行数和对应query,如表1所示。 函数原型为: 1 2 DBE_PLDEBUGGER.continue() RETURN Record; 表1 continue 返回值列表 名称 类型 描述 funcoid OUT oid 函数id。 funcname OUT text 函数名。 lineno OUT integer 当前调试运行的下一行行号。 query OUT text 当前调试的下一行函数源码。 父主题: DBE_PLDEBUGGER Schema
  • DBE_PLDEBUGGER Schema DBE_PLDEBUGGER Schema下的系统函数用于调试存储过程,仅管理员有权限执行这些调试接口,但无修改和创建新函数的权限。目前支持的接口及其描述如下所示。 当在函数体中创建用户时,调用attach、next、continue、info_code、step、info_breakpoint、backtrace、finish中会返回密码的明文。因此不建议用户在函数体中创建用户。 仅支持在CN节点上调试存储过程,并且调试端和被调试端需连接在同一CN节点。 调试端和被调试端需连接在同一database,否则使用函数oid获取函数信息的接口将不可用。 用户在当前会话使用dbe_pldebugger.turn_on函数开启存储过程调试后,当前会话的所有PL/SQL类型存储过程将不能下推至DN节点。因此,请在调试结束后,及时使用dbe_pldebugger.turn_off函数关闭当前会话的存储过程。 不支持直接调试触发器,不支持EXECUTE DIRECT ON将语句下发至DN节点触发调试。 在使用dbe_pldebugger.turn_on函数开启存储过程调试前生成的预编译语句可能无法被调试。 dbe_pldebugger.error_*类型函数,只能在报错断住时才能使用。 当存储过程调试时,如果被调试的存储过程中涉及加锁的操作,请注意在调试端勿执行可能导致死锁的操作。 对应权限角色为gs_role_pldebugger,可以由管理员用户通过如下命令将debugger权限赋权给该用户。 GRANT gs_role_pldebugger to user; 需要有两个客户端连接数据库,一个客户端负责执行调试接口作为debug端,另一个客户端执行调试函数,控制server端存储过程执行。示例如下: 准备调试 通过PG_PROC,查找到待调试存储过程的oid,并执行DBE_PLDEBUGGER.turn_on(oid)。本客户端会作为server端使用。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 gaussdb=# CREATE OR REPLACE PROCEDURE test_debug ( IN x INT) AS BEGIN INSERT INTO t1 (a) VALUES (x); DELETE FROM t1 WHERE a = x; END; / CREATE PROCEDURE gaussdb=# SELECT OID FROM PG_PROC WHERE PRONAME='test_debug'; oid ------- 16389 (1 row) gaussdb=# SELECT * FROM DBE_PLDEBUGGER.turn_on(16389); nodename | port ----------+------ datanode | 0 (1 row) 开始调试 server端执行存储过程,会在存储过程内第一条SQL语句前hang住,等待debug端发送的调试消息。仅支持直接执行存储过程的调试,不支持通过trigger调用执行的存储过程调试。 1 gaussdb=# call test_debug(1); 再起一个客户端,作为debug端,通过turn_on返回的数据,调用DBE_PLDEBUGGER.attach关联到该存储过程上进行调试。 1 2 3 4 5 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.attach('datanode',0); funcoid | funcname | lineno | query ---------+------------+--------+---------------------------------- 16389 | test_debug | 3 | INSERT INTO t1 (a) VALUES (x); (1 row) 在执行attach的客户端调试,执行下一条statement。 1 2 3 4 5 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.next(); funcoid | funcname | lineno | query ---------+------------+--------+---------------------- 16389 | test_debug | 0 | [EXECUTION FINISHED] (1 row) 在执行attach的客户端调试,可以执行以下变量操作。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.info_locals(); --打印全部变量 varname | vartype | value | isconst ---------+---------+-------+--------- x | int4 | 1 | f (1 row) gaussdb=# SELECT * FROM DBE_PLDEBUGGER.set_var('x', 2); --变量赋值 set_var --------- t (1 row) gaussdb=# SELECT * FROM DBE_PLDEBUGGER.print_var('x'); --打印单个变量 varname | vartype | value | isconst ---------+---------+-------+--------- x | int4 | 2 | f (1 row) 直接执行完成当前正在调试的存储过程。 1 2 3 4 5 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.continue(); funcoid | funcname | lineno | query ---------+------------+--------+---------------------- 16389 | test_debug | 0 | [EXECUTION FINISHED] (1 row) 当存储过程报错时,会出现以下提示,此时进入报错断住逻辑。 1 2 3 4 5 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.continue(); funcoid | funcname | lineno | query ---------+------------+--------+------------------------------- 16389 | test_debug | 0 | [EXECUTION HAS ERROR OCCURRED!] (1 row) 此时进入报错断住逻辑,可以调用error_info_locals,error_backtrace,error_end,print_var接口查看信息,其他接口不能再使用,需要使用error_end结束当前报错断住。 1 2 3 4 5 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.error_end(); funcoid | funcname | lineno | query ---------+------------+--------+------------------ 16389 | test_debug | 0 | [END HANG ERROR!] (1 row) 直接退出当前正在调试的存储过程(报错断住逻辑不可用),不执行尚未执行的语句。 1 2 3 4 5 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.abort(); abort ------- t (1 row) client端查看代码信息并识别可以设置断点行号。 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.info_code(16389); lineno | query | canbreak --------+-----------------------------------------------------------+---------- | CREATE OR REPLACE PROCEDURE public.test_debug( IN x INT) | f 1 | AS DECLARE | f 2 | BEGIN | f 3 | INSERT INTO t1 (a) VALUES (x); | t 4 | DELETE FROM t1 WHERE a = x; | t 5 | END; | f 6 | / | f (7 rows) 设置断点。 1 2 3 4 5 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.add_breakpoint(16389,4); breakpointno -------------- 0 (1 row) 查看断点信息。 1 2 3 4 5 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.info_breakpoints(); breakpointno | funcoid | lineno | query | enable --------------+---------+--------+---------------------------------+-------- 0 | 16389 | 4 | DELETE FROM t1 WHERE a = x; | t (1 row) 执行至断点。 1 2 3 4 5 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.continue(); funcoid | funcname | lineno | query ---------+------------+--------+--------------------------------- 16389 | test_debug | 4 | DELETE FROM t1 WHERE a = x; (1 row) 存储过程执行结束后,调试会自动退出,再进行调试需要重新attach关联。如果server端不需要继续调试,可执行turn_off关闭,或退出session。具体调试接口如表1所示。 表1 DBE_PLDEBUGGER 接口名称 描述 DBE_PLDEBUGGER.turn_on server端调用,标记存储过程可以调试,调用后执行该存储过程时会hang住等待调试信息。 DBE_PLDEBUGGER.turn_off server端调用,标记存储过程关闭调试。 DBE_PLDEBUGGER.local_debug_server_info server端调用,打印本session内所有已turn_on的存储过程。 DBE_PLDEBUGGER.attach debug端调用,关联到正在调试存储过程。 DBE_PLDEBUGGER.info_locals debug端调用,打印正在调试的存储过程中的变量当前值。 DBE_PLDEBUGGER.next debug端调用,单步执行。 DBE_PLDEBUGGER.continue debug端调用,继续执行,直到断点或存储过程结束。 DBE_PLDEBUGGER.abort debug端调用,停止调试,server端报错长跳转。 DBE_PLDEBUGGER.print_var debug端调用,打印正在调试的存储过程中指定的变量当前值。 DBE_PLDEBUGGER.info_code debug和server端都可以调用,打印指定存储过程的源语句和各行对应的行号。 DBE_PLDEBUGGER.step debug端调用,单步进入执行。 DBE_PLDEBUGGER.add_breakpoint debug端调用,新增断点。 DBE_PLDEBUGGER.delete_breakpoint debug端调用,删除断点。 DBE_PLDEBUGGER.info_breakpoints debug端调用,查看当前的所有断点。 DBE_PLDEBUGGER.backtrace debug端调用,查看当前的调用栈。 DBE_PLDEBUGGER.enable_breakpoint debug端调用,激活被禁用的断点。 DBE_PLDEBUGGER.disable_breakpoint debug端调用,禁用已激活的断点。 DBE_PLDEBUGGER.finish debug端调用,继续调试,直到断点或返回上一层调用栈。 DBE_PLDEBUGGER.set_var debug端调用,为变量进行赋值操作。 DBE_PLDEBUGGER.turn_on DBE_PLDEBUGGER.turn_off DBE_PLDEBUGGER.local_debug_server_info DBE_PLDEBUGGER.attach DBE_PLDEBUGGER.info_locals DBE_PLDEBUGGER.next DBE_PLDEBUGGER.continue DBE_PLDEBUGGER.abort DBE_PLDEBUGGER.print_var DBE_PLDEBUGGER.info_code DBE_PLDEBUGGER.step DBE_PLDEBUGGER.add_breakpoint DBE_PLDEBUGGER.delete_breakpoint DBE_PLDEBUGGER.info_breakpoints DBE_PLDEBUGGER.backtrace DBE_PLDEBUGGER.enable_breakpoint DBE_PLDEBUGGER.disable_breakpoint DBE_PLDEBUGGER.finish DBE_PLDEBUGGER.set_var DBE_PLDEBUGGER.backtrace DBE_PLDEBUGGER.error_end DBE_PLDEBUGGER.error_info_locals 父主题: Schema
  • DBE_PLDEBUGGER.turn_on 该函数用于标记某一存储过程为可调试,执行turn_on后server端可以执行该存储过程来进行调试,如表1所示。需要用户根据系统表PG_PROC手动获取存储过程oid,传入函数中。turn_on后本session内执行该存储过程会停在第一条sql前等待debug端的调试操作。该设置会在session断连后默认被清理掉。目前不支持对启用自治事务的存储过程/函数进行调试。同时turn_on的存储过程不超过100个。 函数原型为: 1 2 DBE_PLDEBUGGER.turn_on(Oid) RETURN Record; 表1 turn_on入参和返回值列表 名称 类型 描述 func_oid IN oid 函数oid nodename OUT text 节点名称 port OUT integer 连接端口号 父主题: DBE_PLDEBUGGER Schema
  • DBE_PLDEBUGGER Schema DBE_PLDEBUGGER Schema下的系统函数用于调试存储过程,目前支持的接口及其描述如下所示。 仅管理员有权限执行这些调试接口,但在该schema上无修改和创建新函数的权限。普通用户只能调试在public schema或用户创建schema下的非系统函数,禁止普通用户调试系统函数。 当在函数体中创建用户时,调用attach、next、continue、 info_code、step、info_breakpoint、backtrace、 finish中会返回密码的明文。因此不建议用户在函数体中创建用户。 当存储过程调试时,如果被调试的存储过程中涉及加锁的操作,请注意在调试端勿执行可能导致死锁的操作。 调试端和被调试端需连接在同一database,否则使用函数oid获取函数信息的接口将不可用。 对应权限角色为gs_role_pldebugger,可以由管理员用户通过如下命令将debugger权限赋权给该用户。 GRANT gs_role_pldebugger to user; 需要有两个客户端连接数据库,一个客户端负责执行调试接口作为debug端,另一个客户端执行调试函数,控制server端存储过程执行。示例如下: 准备调试 通过PG_PROC,查找到待调试存储过程的oid,并执行DBE_PLDEBUGGER.turn_on(oid)。本客户端会作为server端使用。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 gaussdb=# CREATE OR REPLACE PROCEDURE test_debug ( IN x INT) AS BEGIN INSERT INTO t1 (a) VALUES (x); DELETE FROM t1 WHERE a = x; END; / CREATE PROCEDURE gaussdb=# SELECT OID FROM PG_PROC WHERE PRONAME='test_debug'; oid ------- 16389 (1 row) gaussdb=# SELECT * FROM DBE_PLDEBUGGER.turn_on(16389); nodename | port ----------+------ datanode | 0 (1 row) 开始调试 server端执行存储过程,会在存储过程内第一条SQL语句前hang住,等待debug端发送的调试消息。仅支持直接执行存储过程的调试,不支持通过trigger调用执行的存储过程调试。 1 gaussdb=# call test_debug(1); 再起一个客户端,作为debug端,通过turn_on返回的数据,调用DBE_PLDEBUGGER.attach关联到该存储过程上进行调试。 1 2 3 4 5 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.attach('datanode',0); funcoid | funcname | lineno | query ---------+------------+--------+---------------------------------- 16389 | test_debug | 3 | INSERT INTO t1 (a) VALUES (x); (1 row) 在执行attach的客户端调试,执行下一条statement。 1 2 3 4 5 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.next(); funcoid | funcname | lineno | query ---------+------------+--------+---------------------- 16389 | test_debug | 0 | [EXECUTION FINISHED] (1 row) 在执行attach的客户端调试,可以执行以下变量操作。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.info_locals(); --打印全部变量 varname | vartype | value | package_name | isconst ---------+---------+-------+--------------+--------- x | int4 | 1 | | f (1 row) gaussdb=# SELECT * FROM DBE_PLDEBUGGER.set_var('x', 2); --变量赋值 set_var --------- t (1 row) gaussdb=# SELECT * FROM DBE_PLDEBUGGER.print_var('x'); --打印单个变量 varname | vartype | value | package_name | isconst ---------+---------+-------+--------------+--------- x | int4 | 2 | | f (1 row) 直接执行完成当前正在调试的存储过程。 1 2 3 4 5 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.continue(); funcoid | funcname | lineno | query ---------+------------+--------+---------------------- 16389 | test_debug | 0 | [EXECUTION FINISHED] (1 row) 当存储过程报错时,会出现以下提示,此时进入报错断住逻辑。 1 2 3 4 5 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.continue(); funcoid | funcname | lineno | query ---------+------------+--------+------------------------------- 16389 | test_debug | 0 | [EXECUTION HAS ERROR OCCURRED!] (1 row) 此时进入报错断住逻辑,可以调用error_info_locals,error_backtrace,error_end,print_var接口查看信息,其他接口不能再使用,需要使用error_end结束当前报错断住。 1 2 3 4 5 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.error_end(); funcoid | funcname | lineno | query ---------+------------+--------+------------------ 16389 | test_debug | 0 | [END HANG ERROR!] (1 row) 直接退出当前正在调试的存储过程(报错断住逻辑不可用),不执行尚未执行的语句。 1 2 3 4 5 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.abort(); abort ------- t (1 row) client端查看代码信息并识别可以设置断点行号。 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.info_code(16389); lineno | query | canbreak --------+-----------------------------------------------------------+---------- | CREATE OR REPLACE PROCEDURE public.test_debug( IN x INT) | f 1 | AS DECLARE | f 2 | BEGIN | f 3 | INSERT INTO t1 (a) VALUES (x); | t 4 | DELETE FROM t1 WHERE a = x; | t 5 | END; | f 6 | / | f (7 rows) 设置断点。 1 2 3 4 5 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.add_breakpoint(16389,4); breakpointno -------------- 0 (1 row) 查看断点信息。 1 2 3 4 5 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.info_breakpoints(); breakpointno | funcoid | lineno | query | enable --------------+---------+--------+---------------------------------+-------- 0 | 16389 | 4 | DELETE FROM t1 WHERE a = x; | t (1 row) 执行至断点。 1 2 3 4 5 gaussdb=# SELECT * FROM DBE_PLDEBUGGER.continue(); funcoid | funcname | lineno | query ---------+------------+--------+--------------------------------- 16389 | test_debug | 4 | DELETE FROM t1 WHERE a = x; (1 row) 存储过程执行结束后,调试会自动退出,再进行调试需要重新attach关联。如果server端不需要继续调试,可执行turn_off关闭,或退出session。具体调试接口如表1所示。 表1 DBE_PLDEBUGGER 接口名称 描述 DBE_PLDEBUGGER.turn_on server端调用,标记存储过程可以调试,调用后执行该存储过程时会hang住等待调试信息。 DBE_PLDEBUGGER.turn_off server端调用,标记存储过程关闭调试。 DBE_PLDEBUGGER.local_debug_server_info server端调用,打印本session内所有已turn_on的存储过程。 DBE_PLDEBUGGER.attach debug端调用,关联到正在调试存储过程。 DBE_PLDEBUGGER.info_locals debug端调用,打印正在调试的存储过程中的变量当前值。 DBE_PLDEBUGGER.next debug端调用,单步执行。 DBE_PLDEBUGGER.continue debug端调用,继续执行,直到断点或存储过程结束。 DBE_PLDEBUGGER.abort debug端调用,停止调试,server端报错长跳转。 DBE_PLDEBUGGER.print_var debug端调用,打印正在调试的存储过程中指定的变量当前值。 DBE_PLDEBUGGER.info_code debug和server端都可以调用,打印指定存储过程的源语句和各行对应的行号。 DBE_PLDEBUGGER.step debug端调用,单步进入执行。 DBE_PLDEBUGGER.add_breakpoint debug端调用,新增断点。 DBE_PLDEBUGGER.delete_breakpoint debug端调用,删除断点。 DBE_PLDEBUGGER.info_breakpoints debug端调用,查看当前的所有断点。 DBE_PLDEBUGGER.backtrace debug端调用,查看当前的调用栈。 DBE_PLDEBUGGER.enable_breakpoint debug端调用,激活被禁用的断点。 DBE_PLDEBUGGER.disable_breakpoint debug端调用,禁用已激活的断点。 DBE_PLDEBUGGER.finish debug端调用,继续调试,直到断点或返回上一层调用栈。 DBE_PLDEBUGGER.set_var debug端调用,为变量进行赋值操作。 DBE_PLDEBUGGER.turn_on DBE_PLDEBUGGER.turn_off DBE_PLDEBUGGER.local_debug_server_info DBE_PLDEBUGGER.attach DBE_PLDEBUGGER.info_locals DBE_PLDEBUGGER.next DBE_PLDEBUGGER.continue DBE_PLDEBUGGER.abort DBE_PLDEBUGGER.print_var DBE_PLDEBUGGER.info_code DBE_PLDEBUGGER.step DBE_PLDEBUGGER.add_breakpoint DBE_PLDEBUGGER.delete_breakpoint DBE_PLDEBUGGER.info_breakpoints DBE_PLDEBUGGER.backtrace DBE_PLDEBUGGER.enable_breakpoint DBE_PLDEBUGGER.disable_breakpoint DBE_PLDEBUGGER.finish DBE_PLDEBUGGER.set_var DBE_PLDEBUGGER.error_backtrace DBE_PLDEBUGGER.error_end DBE_PLDEBUGGER.error_info_locals 父主题: Schema
  • DBE_PLDEBUGGER.continue 执行当前存储过程,直到下一个断点或结束,返回执行的下一条的行数和对应query,如表1所示。 函数原型为: 1 2 DBE_PLDEBUGGER.continue() RETURN Record; 表1 continue返回值列表 名称 类型 描述 funcoid OUT oid 函数id。 funcname OUT text 函数名。 lineno OUT integer 当前调试运行的下一行行号。 query OUT text 当前调试的下一行函数源码。 父主题: DBE_PLDEBUGGER Schema
  • DBE_PLDEBUGGER.turn_on 该函数用于标记某一存储过程为可调试,执行turn_on后server端可以执行该存储过程来进行调试,如表1所示。需要用户根据系统表PG_PROC手动获取存储过程oid,传入函数中。turn_on后本session内执行该存储过程会停在第一条sql前等待debug端的调试操作。该设置会在session断连后默认被清理掉。目前不支持对启用自治事务的存储过程/函数进行调试。同时turn_on的存储过程不超过100个。 函数原型为: 1 2 DBE_PLDEBUGGER.turn_on(Oid) RETURN Record; 表1 turn_on入参和返回值列表 名称 类型 描述 func_oid IN oid 函数oid nodename OUT text 节点名称 port OUT integer 连接端口号 父主题: DBE_PLDEBUGGER Schema
  • 永久删除Schema 永久删除是指从WiseDBA中彻底删除Schema同时在业务数据库中进行销毁,销毁后无法恢复。 Schema下线被放至回收站后,经过3天冷却期,才可以进行销毁。 选择“回收站”页签,选择待销毁Schema操作列的“永久删除”。 在“选择电子流”窗口中,选择以下任一方式: 运维操作记录选择“关联电子流”,并选择要关联的电子流,单击“提交”。 运维操作记录选择“紧急问题处理”,并填写紧急原因,单击“提交”。 输入Schema名称和个人账号,单击“销毁Schema”。 将鼠标悬停在运维中心工作台右上角的账号,选择“我的信息”,查看个人账号。
  • 永久删除Schema 永久删除是指从WiseDBA中彻底删除Schema同时在业务数据库中进行销毁,销毁后无法恢复。 Schema下线被放至回收站后,经过3天冷却期,才可以进行销毁。 选择“回收站”页签,选择待销毁Schema操作列的“永久删除”。 在“选择电子流”窗口中,选择以下任一方式: 运维操作记录选择“关联电子流”,并选择要关联的电子流,单击“提交”。 运维操作记录选择“紧急问题处理”,并填写紧急原因,单击“提交”。 输入Schema名称和个人账号,单击“销毁Schema”。 将鼠标悬停在运维中心工作台右上角的账号,选择“我的信息”,查看个人账号。
  • DBE_SQL_UTIL Schema DBE_SQL_UTIL模式存储了用于管理SQL PATCH的工具,包括创建、删除、开启、禁用SQL PATCH等系统函数。普通用户只有usage权限,没有create、alter、drop、comment等权限。 DBE_SQL_UTIL Schema使用请参考使用SQL PATCH进行调优。 DBE_SQL_UTIL.create_hint_sql_patch DBE_SQL_UTIL.create_abort_sql_patch DBE_SQL_UTIL.drop_sql_patch DBE_SQL_UTIL.enable_sql_patch DBE_SQL_UTIL.disable_sql_patch DBE_SQL_UTIL.show_sql_patch DBE_SQL_UTIL.create_hint_sql_patch DBE_SQL_UTIL.create_abort_sql_patch 父主题: Schema
  • _PG_USER_MAPPINGS 存储从本地用户到远程的映射,如表1所示。该视图只有sysadmin权限可以查看。 表1 _PG_USER_MAPPINGS字段 名称 类型 描述 oid oid 从本地用户到远程的映射的oid。 umoptions text[] 用户映射指定选项,使用"keyword=value”格式的字符串。 umuser oid 被映射的本地用户的oid,如果用户映射是公共的则为0。 authorization_identifier information_schema.sql_identifier 本地用户角色名称。 foreign_server_catalog information_schema.sql_identifier 外部服务器所在的数据库名称(永远是当前数据库)。 foreign_server_name information_schema.sql_identifier 外部服务器名称。 srvowner information_schema.sql_identifier 外部服务器所有者。 父主题: Information Schema