暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase8s_dbschema导出数据库对象的定义

原创 努力努力再努力 2024-10-21
316

前提:

DBA 用户或对数据库具有 Connect 或 Resource 权限,才可对数据库运行 dbschema。

作用:

dbschema显示复制数据库对象所需的 SQL 语句(模式),可以用于以下用途:

显示 UPDATE STATISTICS 语句创建的分发。

显示 Information Schema 视图的模式

显示用于创建对象(例如数据库、表、序列、同义词、存储空间、块、日志、角色和特权)的模式

显示用于创建对象(例如数据库、表、序列、同义词、角色和特权)的模式

显示为数据库中的一个或多个表存储的分发信息

显示有关用户定义的数据类型和行类型的信息

命令格式:

dbschema { [-q] [-t tabname] [-s user] [-p user] [-r rolename] [-f procname][-hd tabname]

-d dbname [-seq sequence] [-o package_name or proc_name or all] [-l [num]] [-dlk dblinkname]

[[-u[i|a] udtname] | [-u all]] [-it [Type]] [-ss [-si]] [filename] [-sl length] [-nw] }

{ [-q] -c [-ns] [filename] }

命令参数:

-q Suppress the db version from header.

不显示header中的数据库版本

-t table name or "all" for all tables.

指定表名,"all"指定所有表

-s synonyms created by user name or "all" for all users.

生成该用户所创建同义词的信息,"all"指定所有用户

-p permissions granted to user name or "all" for all users.

生成该用户被授予权限的信息,"all"指定所有用户

-r create and grant of the role or "all" for all roles :Not a valid option for SE.

生成该角色创建和授予权限的信息,"all"指定所有角色

-f SPL routine name or "all" for all SPL routines.

指定SPL例程名,"all"指定所有SPL例程

-hd Histograms of the distribution for columns of of a specified table, a specific table column, or "all" for all tables.

生成表的所有列、表的某列的分发信息,"all"指定所有表

-d database name.

指定数据库名

-seq generate sequence specific syntax.

生成指定序列对象的定义

-ui Prints the definition of a user-defined data type, including type inheritance.

打印用户定义数据类型的定义,包括类型继承

-ua Prints the definition of a user-defined data type, including functions and casts defined over an opaque or constructor type.

打印用户定义数据类型的定义,包括定义在不透明或构造类型上的函数和转换

-u all Prints the definitions of all user-defined data types, including all functions and casts defined over the types.

打印所有用户定义数据类型的定义,包括定义在类型上的函数和转换

-it Type of isolation can be DR, CR, CS, RR or LC.

设置隔离类型,可选项DR, CR, CS, RR或LC

DR = Dirty Read脏读(等同于TRANSACTION_READ_UNCOMMITTED)

CR = Committed Read已落实读(等同于TRANSACTION_READ_COMMITTED)

CS = Cursor Stability游标稳定性(等同于TRANSACTION_READ_COMMITTED)

RR = Repeatable Read可重复读(等同于TRANSACTION_REPEATABLE_READ)

LC = Committed Read LAST COMMITTED已落实读(上次落实)

(等同于TRANSACTION_LAST_COMMITTED)

-l set lock mode to wait [number] optional.

设置锁等待时长为[number]秒

-ss generate server specific syntax.

生成特定于服务器的信息

-si excludes the generation of index storage clauses for non-fragmented tables.

排除为非分区表生成索引存储子句

-sl the maximum length (in bytes) of unformatted CREATE TABLE and ALTER RAGMENT statements.

指定未格式化的CREATE TABLE和ALTER RAGMENT语句的最大长度(以字节为单位)

filename the name of file that the SQL script goes in.

文件名是 SQL 脚本保存的文件名。

-c generate storage space and logical log definitions.

生成存储空间和逻辑日志定义

-ns generate commands in non-sql format.

以非 SQL 格式生成命令

-nw generate file with no specified owner.

生成未指定所有者的情况下创建对象的定义

-o Package routine name or all for all packages.

指定包例程名,"all"指定所有包

-dlk dblink name

指定数据库链接名

使用示例:

示例版本:GBase8sV8.8_3.6.1_1

1.导出数据库中指定表/视图的定义

dbschema -d <db_name> -t <tab_name/view_name> # 输出到命令行

dbschema -d <db_name> -t <tab_name/view_name> db.sql # 输出到当前路径的db.sql文件

dbschema -d <db_name> -t <tab_name/view_name> -ss db.sql # 输出该表更详细的定义到db.sql文件

注:dbschema -ss 选项生成特定于服务器的信息。在除 SE 以外的所有 GBase 8s 数据库服务器中,-ss 选项总是生成锁定方式、扩展数据块大小以及数据库空间名称(如果数据库空间名称与数据库的数据库空间不同)。另外,如果表被分片,那么-ss 选项将显示有关分片存储策略的信息。

指定 dbschema -ss 选项时,输出还会显示为特定用户或在整个模式中发出的所有 GRANT FRAGMENT 语句。

只有和-ss 选项一起使用时才可用的-si 选项为非分段表排除索引存储子句的生成。

如果数据库空间包含多重分区,将在输出中显示数据库空间分区名称。

示例:

(1)创建分区表tabrrage1_1:

(2)输出分区表tabrrage1_1的定义

(3)使用-ss选项输出分区表tabrrage1_1的详细定义(包括有关分片表、锁定方式以及扩展数据块大小的信息

2.导出数据库中所有的表/视图/触发器的定义

参数 -t all 导出所有表对象及涉及触发器,Oracle模式下创建的触发器导出格式为Oracle 语法

dbschema -d <db_name> -t all db.sql

示例:

[gbasedbt@gbase201 gbase361_1]$ dbschema -d testdb -t all db_t.sql

Your evaluation license will expire on 2025-07-10 00:00:00

DBSCHEMA Schema Utility GBASE-SQL Version 12.10.FC4G1TL

[gbasedbt@gbase201 gbase361_1]$ vim db_t.sql

3.导出数据库中GBase模式下函数/存储过程的定义

dbschema -d <db_name> -f <func_name/proc_name> db.sql # 指定GBase模式下创建的函数或存储过程名

dbschema -d <db_name> -f all db.sql # 导出GBase模式下创建的全部函数和存储过程

示例:

[gbasedbt@gbase201 gbase361_1]$ dbschema -d testdb -f g_func1

DBSCHEMA Schema Utility GBASE-SQL Version 12.10.FC4G1TL

CREATE FUNCTION "gbasedbt".g_func1()

RETURNS int

BEGIN

--enter function body here

END

END FUNCTION

;

[gbasedbt@gbase201 gbase361_1]$ dbschema -d testdb -f all db_f.sql

DBSCHEMA Schema Utility GBASE-SQL Version 12.10.FC4G1TL

[gbasedbt@gbase201 gbase361_1]$ vim db_f.sql

4.导出数据库中Oracle模式下函数/存储过程/包的定义

-o 对象名(例如:-o pkg1)导出指定数据库对象,-o all导出ORACLE模式下创建的所有包、存储过程、函数等数据库对象

dbschema -d <db_name> -o <func_name/proc_name/pkg_name> db.sql # 指定Oracle模式下创建的函数、存储过程或包名

dbschema -d <db_name> -o all db.sql # 导出Oracle模式下创建的全部函数、存储过程和包

示例:

[gbasedbt@gbase201 gbase361_1]$ dbschema -d testdb -o o_func1

DBSCHEMA Schema Utility GBASE-SQL Version 12.10.FC4G1TL

set environment sqlmode 'oracle';

CREATE

OR REPLACE FUNCTION o_func1 (c IN NUMBER) RETURN NUMBER IS

BEGIN

RETURN 100;

END

;

/

set environment sqlmode 'gbase';

[gbasedbt@gbase201 gbase361_1]$ dbschema -d testdb -o all db_o.sql

DBSCHEMA Schema Utility GBASE-SQL Version 12.10.FC4G1TL

[gbasedbt@gbase201 gbase361_1]$ vim db_o.sql

5.导出数据库中对用户或角色的授权信息

dbschema -d <db_name> -p <use_rname> # 指定用户

dbschema -d <db_name> -p all # 导出所有用户的授权信息

dbschema -d <db_name> -r <role_name> # 指定角色

dbschema -d <db_name> -r all # 导出所有角色的授权信息

6.导出数据库中的所有对象的定义

使用 dbschema 且只指定了数据库名称时,等同于使用带所有选项(除了-hd 和 -ss 选项)的 dbschema。另外,如果为数据库创建了“信息模式”视图,那么将显示此模式。

dbschema -d <db_name> # 导出数据库的所有对象

dbschema -d <db_name> -ss # 包括有关分片表、锁定方式以及扩展数据块大小的信息

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论