GBase 8s 之 dbschema 导出数据库对象定义介绍
在数据库管理和开发过程中经常需要导出数据库对象的定义以便进行备份、迁移或分析。GBase 8s 提供了 dbschema 工具能够方便地导出各种数据库对象的定义。本文将详细介绍 dbschema 的使用方法帮助你快速掌握这一实用工具。前提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或LCDR Dirty Read脏读等同于TRANSACTION_READ_UNCOMMITTEDCR Committed Read已落实读等同于TRANSACTION_READ_COMMITTEDCS Cursor Stability游标稳定性等同于TRANSACTION_READ_COMMITTEDRR Repeatable Read可重复读等同于TRANSACTION_REPEATABLE_READLC 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_11.导出数据库中指定表/视图的定义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_12输出分区表tabrrage1_1的定义3使用-ss选项输出分区表tabrrage1_1的详细定义包括有关分片表、锁定方式以及扩展数据块大小的信息2.导出数据库中所有的表/视图/触发器的定义参数 -t all 导出所有表对象及涉及触发器Oracle模式下创建的触发器导出格式为Oracle 语法dbschema -d db_name -t all db.sql示例[gbasedbtgbase201 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 [gbasedbtgbase201 gbase361_1]$ vim db_t.sql3.导出数据库中GBase模式下函数/存储过程的定义dbschema -d db_name -f func_name/proc_name db.sql # 指定GBase模式下创建的函数或存储过程名 dbschema -d db_name -f all db.sql # 导出GBase模式下创建的全部函数和存储过程示例[gbasedbtgbase201 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 ; [gbasedbtgbase201 gbase361_1]$ dbschema -d testdb -f all db_f.sql DBSCHEMA Schema Utility GBASE-SQL Version 12.10.FC4G1TL [gbasedbtgbase201 gbase361_1]$ vim db_f.sql4.导出数据库中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模式下创建的全部函数、存储过程和包示例[gbasedbtgbase201 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; [gbasedbtgbase201 gbase361_1]$ dbschema -d testdb -o all db_o.sql DBSCHEMA Schema Utility GBASE-SQL Version 12.10.FC4G1TL [gbasedbtgbase201 gbase361_1]$ vim db_o.sql5.导出数据库中对用户或角色的授权信息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 # 包括有关分片表、锁定方式以及扩展数据块大小的信息
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2613724.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!