创建和编辑数据库对象

您可以使用 SQL 和 Data Modeler 页面的“Navigator(导航器)”选项卡中提供的“Create and Edit Object(创建和编辑对象)”向导创建和编辑对象。

以下各节介绍了用于创建和编辑各种对象类型的向导:

“表属性”对话框

在创建表、编辑现有表或使用现有表作为模板创建表时,将显示“表属性”对话框。

可以在 SQL 或 Data Modeler 的“Navigator(导航器)”选项卡中打开“Table Properties(表属性)”对话框。

要为特定方案创建表,请在“导航器”选项卡中,从对象类型下拉列表中选择,单击对象子菜单 对象子菜单,然后选择创建对象

要基于特定方案的现有表创建表,请在“导航器”选项卡中右键单击表对象,然后选择用作模板,如图 3-15 中所示。

要编辑特定方案的表,请在“导航器”选项卡中右键单击表对象,然后选择编辑

图 3-15:现有表的编辑选项

后面是图 3-15 的说明
“图 3-15 现有表的编辑选项”的说明

表属性分组在多个窗格中。

如果要编辑现有表,可以按任意顺序访问窗格。如果在创建表之前单击“创建”,请右键单击表名称,选择编辑,然后继续创建表。

注意:

建议不要编辑分区表。要确定表是否已分区,请右键单击表名称并选择编辑。如果对表进行了分区,将显示一条警告消息。

方案:在其中创建表的数据库方案。默认情况下,将在现有方案或您登录到的方案中创建新表。

名称:表的名称。

对话框中的不同窗格在以下各节中介绍:

列窗格

为表中的每个列指定属性。

“一般信息”选项卡

列出表中可用的列。

要添加列,请单击添加列 (+)。将在下表中添加新的一行。选择行并输入列的详细信息。

要删除列,请选择该行,然后单击删除列 (-)。要向上或向下移动表中的列,请选择该列,然后使用上箭头和下箭头图标。

  • 名称:列的名称。

  • 数据类型:列的数据类型。

  • 默认值:如果未指定值,则在插入行时会将默认值插入到列中。

  • 默认值为 NULL :适用于 Oracle Database 12c 和更高版本。如果选择此选项,则当向表中插入行且为列指定的值为 NULL 时,会将默认值插入到列中。

  • 表达式:用于计算列中值的表达式。

  • 注释:关于列的可选说明性注释。使用此字段提供属性的说明。

在表中:

  • PK :如果选择此选项,则该列将成为主键。

  • 身份列:如果选择此选项,则该列将成为身份列。这仅适用于 Oracle Database 12c 和更高版本。有关更多详细信息,请参阅“身份列”选项卡。

“约束条件”标签

显示列的 Not Null 和 Check 约束条件。CHECK 约束条件要求列中的值符合指定的条件。

  • 非空值约束条件:名称:非空值约束条件的名称。

  • Not Null 约束条件:Not Null :如果选择此选项,则列必须包含数据。插入行时,不能为此列指定任何值或显式 Null 值。如果未选中此选项,则列可以包含数据,也可以不包含数据。主键列不能为空。

  • 检查约束条件:名称:检查约束条件定义的名称。

  • 检查约束:约束:列必须满足的条件才能满足检查约束。可以使用任何有效的 CHECK 子句(不含 CHECK 关键字)。例如,要指示名为 RATING 的数字列中的值必须从 1 到 10,可以指定:评级 >=1 且评级 <= 10。

  • 已启用:如果选择此选项,则在列中输入或更新数据时会检查约束条件。

  • 可延迟:如果选择此选项,则可以将约束的有效性检查推迟到事务处理结束。

  • 初始立即:如果选择此选项,则每当您从列中添加、更新或删除数据时,都会检查约束条件。

  • 验证:如果选择此选项,则会检查现有数据以查看其是否符合约束条件。

“身份列”选项卡

适用于 Oracle Database 12c 及更高版本。“身份列”选项卡列出身份列的属性。只有在为“一般信息”选项卡中的列选中“标识列”复选框后,此选项卡才可用。标识列是可用于标识表行的自动递增列。只能为表指定一个标识列。

  • 生成:始终意味着无法在 INSERT 或 UPDATE 语句中显式包括标识列的值。默认情况下,如果未显式指定任何值,则自动生成标识列的值;默认情况下,NULL 表示仅在提供 NULL 值时为列生成值。

  • 开头为:序列的起始值。

  • 增量:序列中连续编号之间的间隔。

  • 最小值:序列的最小可能值。递增序列的默认值为 1,递减序列的默认值为 -(10^26)。

  • 最大值:序列的最大可能值。递增序列的默认值为 10^27,递减序列的默认值为 -1。

  • 高速缓存高速缓存大小:高速缓存导致在高速缓存中预分配序列值,这可以提高应用程序性能;高速缓存大小指示在高速缓存中预分配的序列值的数量。“No Cache(无高速缓存)”会导致不在高速缓存中预分配序列值。

  • 周期:指示序列在达到其最大值(对于升序)还是最小值(对于降序序列)之后,是“绕过”以重复使用数字。如果未启用值循环,则序列在达到其最大值或最小值后将无法生成更多值。

  • 顺序:指示序列号的生成顺序是否按请求顺序。如果未指定“顺序”,则不能保证序列号按请求的顺序排列。

主键窗格

指定表的主键。

主键是唯一地标识表中各行的一个列或多个列集。如果在“常规”选项卡中为列选中了“主键”复选框,则会在“主键”窗格中自动填充相应的字段。您可以根据需要对属性进行更改。

系统自动为主键创建索引。

  • 名称:要与主键定义关联的约束条件的名称。

  • 已启用:如果选中此选项,将强制实施主键约束条件:即主键列(或列集)中的数据必须唯一且不为空。

  • 索引:主键所引用的索引的名称。

  • 表空间:与索引关联的表空间的名称。

  • 可用列:列出可添加到主键定义的列。可以为主键选择多个属性(如果需要)。

  • 选定的列:列出主键定义中包括的列。

要向主键定义添加列,请在“可用列”中选择该列,然后单击“添加”( > ) 图标;要从主键定义中删除某个列,请在“选定列”中选择该列,然后单击“删除”( < ) 图标。要将所有列从可用列移动到选定列(或反向移动),请使用“全部添加”( >> ) 或“全部删除”( << ) 图标。要在主键定义中向上或向下移动列,请在“选定的列”中选择列,然后使用箭头按钮。

唯一键窗格

指定表的一个或多个唯一约束条件。

唯一约束条件指定一个列或一组列,其数据值必须唯一:每个数据值不能为 Null,并且不能与列中的任何其他值相同。

要添加唯一约束条件,请单击“Add(添加)”按钮;要删除唯一约束条件,请选择该约束条件并单击“Remove(删除)”按钮。

  • 名称:唯一约束条件的名称。

  • 启用:如果选择此选项,将强制执行唯一约束条件。

  • Rely :如果选择此选项,则在查询重写期间会考虑 NOVALIDATE 模式下的约束条件。

  • 可延迟:如果选择此选项,则在后续事务处理中,可以使用 SET CONSTRAINT(S) 语句将约束检查推迟到事务处理结束。

  • 初始立即:如果选择此选项,将在每个后续 SQL 语句的末尾检查约束条件。

  • 验证:如果选择该选项,则会检查现有数据以查看它是否符合约束条件。

  • 索引:唯一键所引用的索引的名称。

  • 表空间:与索引关联的表空间的名称。

  • 可用列:列出可添加到唯一约束条件定义的列。

  • 选定的列:列出唯一约束条件定义中包括的列。

要向唯一约束条件定义添加列,请在“可用列”中选择该列,然后单击“添加”( > ) 图标;要从唯一约束条件定义中删除某个列,请在“选定列”中选择该列,然后单击“删除”( < ) 图标。要将所有列从可用列移动到选定列(或反向移动),请使用“全部添加”( >> ) 或“全部删除”( << ) 图标。要在唯一约束条件定义中向上或向下移动列,请在“选定的列”中选择该列,然后使用箭头按钮。

索引窗格

列出为表定义的索引。

要添加索引,请单击添加索引 (+);要删除索引,请选择该索引并单击删除索引 (-)。

  • 名称:索引名。

  • 类型:Oracle 索引的类型。Non-unique 表示索引可以包含多个相同的值;Unique 表示不允许重复值;Bitmap 将与键值关联的行 ID 存储为位图。

  • 表空间:索引的表空间的名称。

  • 表达式:列表达式是从列、常量、SQL 函数和用户定义的函数构建的表达式。指定列表达式后,您就创建了基于函数的索引。

  • 可用列所选列:为索引选择的列。要选择列,请单击“可用列”框中的列,然后单击“添加选定的列”图标将其移至“选定的列”框。

外键窗格

指定表的一个或多个外键。

外键指定一个列(“本地列”),其数据值与另一个表的主键或唯一约束条件中的值相匹配。

  • 名称:外键定义的名称。

  • 启用:如果选中此选项,将强制执行外键。

  • Rely(实)Deferrable(可延迟)Initially Immediate(初始立即)Validate(验证):请参见“唯一键”窗格中这些字段的说明。

  • 引用的约束条件:方案:包含具有此外键所引用的主键或唯一约束的表的方案的名称。

  • 引用的约束条件:表:具有此外键所引用的主键或唯一约束的表的名称。

  • 引用的约束条件:约束条件:此外键所引用的主键或唯一约束条件的名称。

  • 引用的约束条件:删除时:删除引用表中的行,且包含此外键的表中存在具有该值的行时自动执行的操作:NO ACTION(由以下位置中的交叉行显示)关系图不会对这些行执行任何操作;CASCADE(以“X”表示)会删除这些行;SET NULL(以小圆表示)会将这些行中可以设置为 Null 值的所有列设置为 Null。

  • 分配:本地列:列出外部关键字定义中包括的当前选定(本地)表中的列。对于外键定义中的每个引用列,选择编辑后的表中的列名称。

  • 关联:引用列:对于每个本地列,标识另一个(外国)表中的列,该列必须具有与本地列中的值匹配的值。

表约束条件窗格

指定表的一个或多个检查约束条件。

检查约束条件指定在向表中插入行或修改现有行时必须满足的条件。

  • 名称:检查约束条件定义的名称。

  • 检查条件:行必须满足的条件才能满足检查约束条件。可以使用任何有效的 CHECK 子句(不含 CHECK 关键字)。例如,要指示名为 RATING 的数字列中的值必须从 1 到 10,可以指定评级 >=1 且评级 <= 10。

  • 已启用:如果选中此选项,将强制执行检查约束条件。

注释窗格

在此窗格中输入说明性注释。此项是可选的。

存储窗格

使您能够指定表的存储选项。

创建或编辑表或索引时,可以覆盖默认存储选项。

  • 组织:指定使用(索引)或无索引(堆)或外部表(外部)来存储和组织表。

  • 表空间:表或索引表空间的名称。

  • Logging(日志记录):ON 表示表创建和针对该表的任何后续 INSERT 操作都记录在重做日志文件中。OFF 表示这些操作不会记录在重做日志文件中。

  • 行归档:YES 启用数据库内归档,允许您通过将表中的行标记为不可见来归档表中的行。

外部表属性窗格

指定外部表的选项。

外部表是其元数据存储在数据库中、数据存储在数据库外的只读表。

外部表

  • 访问驱动程序类型:指定外部表的类型。

    • ORACLE_LOADER:从文本数据文件中提取数据。这是默认访问驱动程序,用于将数据从外部表加载到内部表。

    • ORACLE_DATAPUMP:从二进制转储文件提取数据。此访问驱动程序可以执行装入和卸载。

    • ORACLE_BIGDATA:从 Oracle Big Data Appliance 提取数据。

    • ORACLE_HDFS:提取存储在 Hadoop 分布式文件系统 (HDFS) 中的数据。

    • ORACLE_HIVE:提取存储在 Apache HIVE 中的数据。

  • 默认目录:指定要用于未显式命名目录对象的所有输入和输出文件的默认目录。使用目录对象而不是目录路径指定位置。

  • 访问参数:为外部表的特定访问驱动程序的参数分配值。访问参数是可选的。

    • OPAQUE_FORMAT_SPEC:opaque_format_spec 指定了 ORACLE_LOADER、ORACLE_DATAPUMP、ORACLE_HDFS 和 ORACLE_HIVE 访问驱动程序的所有访问参数。有关访问参数的说明,请参见Oracle AI Database Utilities。opaque_format_spec 中指定的字段名称必须与表定义中的列匹配,否则 Oracle Database 将忽略它们。

    • USING CLOB:允许您通过子查询派生参数及其值。子查询不能包含任何集合运算符或 ORDER BY 子句。它必须返回一行,其中包含一个数据类型为 CLOB 的项目。

  • 拒绝限制:在返回 Oracle Database 错误并中止查询之前,查询外部数据期间可能发生的转换错误数。

  • 项目列:确定访问驱动程序如何在后续查询中验证外部表的行。

    • ALL:处理所有列值,而不考虑选择哪些列,并且仅验证具有完全有效列条目的行。如果任何列值引发错误(例如数据类型转换错误),则即使该列未在查询的 SELECT 列表中引用,也会拒绝该行。

    • REFERENCED:仅处理查询的 SELECT 列表中的那些列。

    ALL 设置可确保结果集一致。REFERENCED 设置可能会返回不同数量的行,具体取决于后续查询中引用的列,但比 ALL 设置快。如果后续查询选择外部表的所有列,则设置的行为相同。

  • 位置:指定外部表的数据文件。使用“添加”(+) 图标添加每个位置规范。

    • 对于 ORACLE_LOADER 和 ORACLE_DATAPUMP,文件以 directory:file 格式命名。目录部分是可选的。如果缺少该目录,则缺省目录将用作文件的目录。如果使用的是 ORACLE_LOADER 访问驱动程序,则可以在文件名中使用通配符。星号 (*) 表示多个字符,问号 (?) 表示单个字符。

    • 对于 ORACLE_HDFS,LOCATION 是目录或文件的统一资源标识符 (URI) 列表。没有与 URI 关联的目录对象。

    • 对于 ORACLE_HIVE,不使用 LOCATION。而是读取 Hadoop HCatalog 表来获取有关数据源(可以是文件或其他数据库)位置的信息。

不透明格式规范

指定 ORACLE_LOADER、ORACLE_DATAPUMP、ORACLE_HDFS 和 ORACLE_HIVE 访问驱动程序的所有访问参数。

例如:

RECORDS DELIMITED BY NEWLINE CHARACTERSET US7ASCII
    TERRITORY AMERICA
    BADFILE log_file_dir:'ext_1v3.bad'
    LOGFILE log_file_dir:'ext_1v3.log'
    FIELDS TERMINATED BY "|" OPTIONALLY ENCLOSED BY '^' LDRTRIM
    ( PROD_ID,
      CUST_ID ,
      TIME_ID DATE(10) "YYYY-MM-DD",
      CHANNEL_ID ,
      PROMO_ID ,
      QUANTITY_SOLD ,
      AMOUNT_SOLD ,
      UNIT_COST ,
      UNIT_PRICE
    )

以及完整声明:

CREATE TABLE SH.SALES_TRANSACTIONS_EXT
    (
      PROD_ID NUMBER ,
      CUST_ID NUMBER , 
      TIME_ID DATE ,
      CHANNEL_ID NUMBER ,
      PROMO_ID NUMBER ,
      QUANTITY_SOLD NUMBER , 
     AMOUNT_SOLD NUMBER (10,2) , 
     UNIT_COST NUMBER (10,2) , 
     UNIT_PRICE NUMBER (10,2)
     )
     ORGANIZATION EXTERNAL
     (
     TYPE ORACLE_LOADER
     DEFAULT DIRECTORY DATA_FILE_DIR
     ACCESS PARAMETERS
     (
     RECORDS DELIMITED BY NEWLINE CHARACTERSET US7ASCII
    TERRITORY AMERICA
    BADFILE log_file_dir:'ext_1v3.bad'
    LOGFILE log_file_dir:'ext_1v3.log'
    FIELDS TERMINATED BY "|" OPTIONALLY ENCLOSED BY '^' LDRTRIM
    ( PROD_ID ,
      CUST_ID ,
      TIME_ID DATE(10) "YYYY-MM-DD",
      CHANNEL_ID ,
      PROMO_ID ,
      QUANTITY_SOLD ,
      AMOUNT_SOLD ,
      UNIT_COST ,
      UNIT_PRICE
    )
    )
     LOCATION ( "DATA_FILE_DIR":'sale1v3.dat')
     )
     REJECT LIMIT 100
 ;

CLOB 子查询

键入或复制并粘贴查询。

注意:

有关外部表字段的更多信息,请参阅 Oracle AI Database UtilitiesOracle AI Database SQL Language Reference

实体化视图窗格

指定实体化视图的选项。

查询:包含视图定义的查询部分的 SQL 代码。键入或复制并粘贴查询。

一般信息

  • 在预构建表中:如果为,则现有表将注册为预初始化的实体化视图。此选项对于在数据仓库环境中注册大型实体化视图特别有用。该表必须具有相同的名称,并且与生成的实体化视图位于相同的方案中,并且该表应反映子查询的实体化。

  • 精简精度Yes 授权精度丢失,因而如果表列或实体化视图列的精度不完全匹配,便会丢失精确度。如果为,则表列或实体化视图列的精度必须与子查询返回的精度完全匹配,否则创建操作将失败。

  • 用于更新:选择以允许更新子查询、主键、对象或行标识实体化视图。与高级复制结合使用时,这些更新将传播到主服务器。

  • 实时 MV :选择可创建实时实体化视图或常规视图。即使实体化视图因数据更改而与其基表不同步,实时实体化视图也会为用户查询提供新数据。优化程序编写的查询将实体化视图中的现有行与日志文件中所记录的更改(实体化视图日志或直接加载程序日志)组合在一起,而不是修改实体化视图。这称为查询式计算。

  • 查询重写:如果为启用,则实体化视图将启用查询重写,这将根据主表写入的用户请求转换为包含一个或多个实体化视图的语义等效请求。

  • 构建:指定何时填充实体化视图。立即指明将立即填充实体化视图。Deferred(延迟)表示实体化视图将由下一个刷新操作填充。如果指定“延迟”,则第一次(延迟)刷新必须始终是完全刷新;在此之前,实体化视图的过时值不可用,因此无法将其用于查询重写。

  • 使用索引:如果为,则会创建默认索引,并使用该索引加速实体化视图的增量(快速)刷新。如果为,则不会创建此默认索引。(例如,您可以选择立即禁止创建索引,并在以后显式创建此类索引。)

  • 索引表空间:指定要在其中创建实体化视图的表空间。如果未选择表空间,则在包含实体化视图的方案默认表空间中创建实体化视图。

  • 高速缓存:如果为 Yes(是),则将针对此表检索到的块置于执行全表格扫描时缓冲区高速缓存中最近最少使用 (LRU) 列表的最近端。此设置适用于小的查找表。如果为 No ,则将块放置在最近最少使用的 LRU 列表末尾。

刷新子句

  • 刷新:选择“是”以启用刷新操作。

  • 刷新类型:要执行的刷新操作的方法:

    • 完全刷新:执行实体化视图的定义查询,即使可以快速刷新也是如此。

    • 快速刷新:使用增量刷新方法,该方法根据主表发生的更改执行刷新。常规 DML 更改的更改存储在与主表关联的实体化视图日志中。直接路径 INSERT 操作的更改存储在直接加载程序日志中。

    • 强制刷新:如果可能,执行快速刷新;否则,执行完全刷新。

  • 操作:要执行的刷新操作的类型:

    • On Demand:在调用 DBMS_MVIEW 刷新过程之一时执行刷新。

    • 提交时:每当数据库提交对实体化视图的主表进行操作的事务处理时,执行快速刷新。这可能会增加完成提交所用的时间,因为数据库在提交过程中执行刷新操作。

    • 指定:根据您在“开始于”和“下一个”字段中指定的内容执行刷新操作。

  • 开始日期:第一次自动刷新操作的开始日期和时间。必须在将来。

  • 下一个日期:下次自动刷新操作的时间。“开始时间”和“下一时间”之间的间隔为后续自动刷新操作建立间隔。如果未指定值,则仅在为“开始时间”指定的时间执行一次刷新操作。

  • 使用:刷新类型,用于确定实体化视图的类型:

    • 主键:创建主键实体化视图,该视图允许重新组织实体化视图主表,而不会影响实体化视图的资格以进行快速刷新。

    • 行 ID:创建行标识实体化视图,如果实体化视图不包括主表的所有主键列,则该视图非常有用。

  • 默认存储:如果为“是”,DEFAULT 指定 Oracle Database 将自动选择要使用的回退段。如果指定 DEFAULT,则无法指定 rollback_segment。修改实体化视图(而不是创建实体化视图)时,DEFAULT 最有用。

  • 存储类型:MASTER 指定要在远程主站点上用于单个实体化视图的远程回退段。LOCAL(本地)指定要用于包含实体化视图的本地刷新组的远程回退段。这是默认设置。

  • 回退段:输入回退段的名称。

  • 使用约束:如果选中此选项,则可以在刷新操作期间使用更多重写替代项,从而提高刷新执行效率。选择 "Enforced" 还是 "Trusted" 会影响此选项的行为。

    • Enforced(强制):仅导致在刷新操作期间使用强制约束。

    • Trusted(可信):允许使用已由数据库管理员声明可信但尚未由数据库验证的维和约束条件信息。如果维和约束条件信息有效,则性能可能会提高。但是,如果此信息无效,则刷新过程可能会损坏实体化视图,即使它返回成功状态也是如此。

DDL 窗格

您可以查看和保存创建或编辑对象时生成的 SQL 语句。如果要进行任何更改,请返回相关窗格并在其中进行更改。

  • 对于新表,单击 CREATE 查看生成的 DDL 语句。

  • 编辑表属性时,单击 UPDATE 查看生成的 ALTER 语句。对于新表,“UPDATE(更新)”选项卡将不可用。

完成后,单击 Apply

输出窗格

显示 DDL 命令的结果。如果有任何错误,请转到相应的窗格,修复错误,然后再次运行命令。您可以保存到文本文件或清除输出。

“索引属性”对话框

创建或编辑索引时,将显示 "Index Properties"(索引属性)对话框。

要为所选方案创建索引,请在 SQL 的“导航器”选项卡中,从对象类型下拉列表中选择索引,单击“对象”子菜单 对象子菜单,然后选择创建对象

要编辑所选方案的索引,请在“导航器”选项卡中右键单击表对象,然后选择编辑

“定义”窗格

  • 方案:拥有与索引关联的表的数据库方案。

  • :与索引关联的表的名称。

  • 方案:在其中创建索引的数据库。

  • 表空间:索引的表空间。

  • 名称:索引名。

  • 类型:Oracle 索引的类型。
    • Non-unique 表示索引可以包含多个相同的值。

    • 唯一表示不允许有重复值。

    • 位图将与键值关联的行 ID 存储为位图。

  • 表达式:列名或列表达式。列表达式是从列、常量、SQL 函数和用户定义的函数构建的表达式。指定列表达式后,您就创建了基于函数的索引。

  • 可用列:表中可用的列。

  • 所选列:为索引选择的列。单击“Add Selected Columns(添加选定的列)”> 从“Available Columns(可用列)”列表中移动列。

  • 顺序ASC 表示升序索引(按升序排序的索引值); DESC 表示降序索引(按降序排序的索引值)。

DDL 窗格

您可以查看和保存创建或编辑索引时生成的 SQL 语句。如果要进行任何更改,请返回“定义”窗格并在其中进行更改。

  • 对于新索引,单击 CREATE 查看生成的 DDL 语句。

  • 编辑索引属性时,单击 UPDATE 查看生成的 ALTER 语句。对于新索引,UPDATE 选项卡将不可用。

完成后,单击 Apply

“输出”窗格

显示 DDL 命令的结果。如果有任何错误,请转到“定义”窗格,修复错误,然后再次运行命令。您可以保存到文本文件或清除输出。

“序列属性”对话框

创建或编辑序列时,将显示“序列属性”对话框。

要为所选方案创建序列,请在 SQL 的“导航器”选项卡中,从对象类型下拉列表中选择序列,单击“对象”子菜单 对象子菜单,然后选择创建对象

要编辑所选方案的序列,请在“导航器”选项卡中右键单击序列对象,然后选择编辑

序列是一个对象,多个用户可以从该对象生成唯一的整数。可以使用序列自动生成主键值。

属性窗格

  • 方案:在其中创建序列的数据库方案。

  • 名称:序列的名称。

  • 开头为:序列的起始值。

  • 增量:序列中连续编号之间的间隔。

  • 最小值:序列的最小可能值。递增序列的默认值为 1,递减序列的默认值为 -(10^26)。

  • 最大值:序列的最大可能值。递增序列的默认值为 10^27,递减序列的默认值为 -1。

  • 高速缓存高速缓存大小Cache 导致在高速缓存中预分配序列值,这可以提高应用程序性能;高速缓存大小指示在高速缓存中预分配的序列值的数量。No Cache 会使序列值不预分配到高速缓存中。

  • 周期:指示序列在达到其最大值(对于升序)还是最小值(对于降序序列)之后,是“绕过”以重复使用数字。如果未启用值循环,则序列在达到其最大值或最小值后将无法生成更多值。

  • 顺序:指示序列号的生成顺序是否按请求顺序。如果指定了无订单,则不能保证序列号按请求的顺序排列。

DDL 窗格

您可以查看并保存创建或编辑序列时生成的 SQL 语句。如果要进行任何更改,请返回“Properties(属性)”窗格并在其中进行更改。

  • 对于新序列,单击 CREATE 查看生成的 DDL 语句。

  • 编辑序列时,单击 UPDATE 查看生成的 ALTER 语句。对于新序列,UPDATE 选项卡将不可用。

完成后,单击 Apply

“输出”窗格

显示 DDL 命令的结果。如果有任何错误,请转至“属性”窗格,修复错误,然后再次运行命令。您已保存到文本文件或清除输出。

“视图属性”对话框

创建或编辑视图时,将显示“视图属性”对话框。

可以在 SQL 或 Data Modeler 的“Navigator(导航器)”选项卡中打开“View Properties(查看属性)”对话框。

要为所选方案创建视图,请在 SQL 的“导航器”选项卡中,从对象类型下拉列表中选择视图,单击“对象”子菜单 对象子菜单,然后选择创建对象

要从所选方案的现有模板创建视图,请在“导航器”选项卡中,选择要创建的视图,右键单击并选择用作模板

要编辑所选方案的视图,请在“导航器”窗格中右键单击视图对象,然后选择编辑

方案:在其中创建视图的数据库方案。

名称:视图的名称。

对话框中的不同窗格在以下各节中介绍:

SQL 查询窗格

输入或复制并粘贴视图的 SQL 查询,并使用 SELECT 和 FROM 关键字以及检索所需信息所需的语法。查询后不需要分号。

列窗格

单击“刷新列”刷新列 可自动填充此窗格中的列。您可以通过选择必需行并在“题头别名”和“备注”字段中进行更改来编辑列。

存储窗格

  • 创建时强制:选择可创建视图,而不管视图的基表或引用的对象类型是否存在,或者包含视图的方案的所有者是否对其具有权限。必须先满足这些条件,然后才能对视图执行任何 SELECT、INSERT、UPDATE 或 DELETE 语句。如果视图定义包含任何约束条件,则 CREATE VIEW ... 如果基表不存在或引用的对象类型不存在,FORCE 将失败。创建视图 ... 如果视图定义指定了不存在的约束条件,FORCE 也会失败。

  • 查询限制只读阻止视图用于在基础表中添加、删除或更改数据。检查选项禁止对生成未包含在此视图中的行的基础表进行任何更改。

使用“Primary Key(主键)”、“Unique Keys(唯一键)”、“Foreign Keys(外键)”和“Comments(注释)”窗格可以根据需要添加或编辑属性。

DDL 窗格

将根据提供的输入生成 DDL 语句。您可以查看并保存 SQL 语句。如果要进行任何更改,请返回相关窗格并在其中进行更改。

  • 对于新视图,单击 CREATE 查看生成的 DDL 语句。

  • 编辑视图时,单击 UPDATE 可查看生成的 ALTER 语句。对于新视图,“更新”选项卡将不可用。

完成后,单击 Apply

“输出”窗格

显示 DDL 命令的结果。如果有任何错误,请转到相应的窗格,修复错误,然后再次运行命令。您可以保存到文本文件或清除输出。

“同义词属性”对话框

创建同义词时,将显示“同义词属性”对话框。

有两种方法可以为所选方案创建同义词:

  • 在 SQL 中,在“导航器”选项卡中,右键单击要为其创建同义词的对象,然后选择添加同义词。在这种情况下,只能在“属性”窗格中编辑“公共”和“同义词名称”。其余字段的值由所选对象预先确定。

  • 在 SQL 中,在“导航器”选项卡中,从下拉列表中选择对象类型作为同义词公共同义词。单击“对象”子菜单 对象子菜单,然后选择创建对象。“属性”对话框中的所有字段都可供编辑。

对话框中的不同窗格在以下各节中介绍:

属性窗格

  • 公共:如果选中此选项,则所有用户都可以访问该同义词。但是,每个用户必须对底层对象具有相应的权限才能使用该同义词。如果未选中此选项,则该同义词是专用同义词,并且只能在其方案内访问。

  • 同义词方案:在其中创建同义词的数据库方案。

  • 同义词名称:同义词的名称。专用同义词在其方案内必须是唯一的;公共同义词在数据库中必须是唯一的。

  • 对象类型:指定此同义词所引用的对象类型。

  • 对象方案:包含此同义词所引用的对象或名称的方案。

  • 数据库过滤器:选择对象类型和对象方案后,所选类型的对象列表可能会很长。要筛选对象名称,请输入搜索条目并单击“刷新”刷新。“对象名称”字段将在下拉列表中自动填充适当的对象名称。

  • 对象名称:选择此同义词所引用的对象的名称。

  • 数据库链接:输入完整或部分数据库链接,为对象所在的远程数据库上的方案对象创建同义词。如果指定数据库链接并省略方案,则该同义词将引用由数据库链接指定的方案中的对象。Oracle 建议您指定包含远程数据库中对象的方案。如果省略了数据库链接,则 Oracle Database 会假定对象位于本地数据库上。

DDL 窗格

将根据提供的输入生成 DDL 语句。您可以查看并保存 SQL 语句。如果要进行任何更改,请返回相关窗格并在其中进行更改。

  • 对于新视图,单击 CREATE 查看生成的 DDL 语句。

  • 编辑视图时,单击 UPDATE 可查看生成的 ALTER 语句。对于新视图,“更新”选项卡将不可用。

完成后,单击 Apply

“输出”窗格

显示 DDL 命令的结果。如果有任何错误,请转到相应的窗格,修复错误,然后再次运行命令。您可以保存到文本文件或清除输出。

“实体化视图日志属性”对话框

创建或编辑实体化视图日志时,将显示“实体化视图日志属性”对话框,实体化视图日志是与实体化视图的主表关联的表。

要为所选方案创建实体化视图日志,请在 SQL 的“导航器”选项卡中,从对象类型下拉列表中选择实体化视图日志,单击“对象”子菜单 对象子菜单,然后选择创建对象

要编辑,请在“导航器”窗格中右键单击实体化视图日志对象,然后选择编辑

方案:在其中创建实体化视图日志的数据库方案。

:要与此实体化视图日志关联的实体化视图的主表的名称。

“属性”标签

  • 已记录行 ID可指示应在实体化视图日志中记录所有更改行的行 ID。指示不应在实体化视图日志中记录所有更改行的行 ID。

  • PK 已记录指示应在实体化视图日志中记录所有更改行的主键;指示不应在实体化视图日志中记录所有更改行的主键。

  • 新值将更新 DML 操作的旧值和新值保存在实体化视图日志中;将禁用实体化视图日志中新值的记录。如果使用此日志的表上存在一个单表的实体化聚集视图,而且需要让该实体化视图能够快速刷新,则必须指定“是”。

  • 已记录的对象 ID :仅对于对象表中的日志:表示应将每个已修改行的系统生成或用户定义的对象标识符记录在实体化视图日志中。表示不应在实体化视图日志中记录每个修改行的系统生成或用户定义的对象标识符。

  • 高速缓存:对于经常访问的数据, CACHE 指定:当执行全表扫描时,将为该日志检索到的块放置在缓冲区高速缓存中最近最少使用列表的最近使用的一端。该属性适用于小的查找表。NOCACHE 指定将块放置在 LRU 列表的最近最晚使用的一端。

  • 并行:如果为 YES ,实体化视图日志将支持并行操作。

  • 已记录的序列表示应将提供其他排序信息的序列值记录在实体化视图日志。指示应将提供其他排序信息的序列值记录在实体化视图日志。某些更新情况后,需要序列号(即此选项的“是”)来支持快速刷新。

  • 提交 SCN :如果启用此选项,系统将指示数据库使用提交 SCN 数据,而不是时间戳。

  • 可用列所选列:要记录在实体化视图日志中的附加列,这些列是子查询实体化视图引用的非主键列。要选择一个或多个筛选器列,请使用箭头按钮将列从“可用”移动到“已选择”。

“存储”标签

  • 表空间:要在其中创建实体化视图日志的表空间

  • Logging(日志记录)YESNO ,用于建立实体化视图日志的日志记录特征。

  • 缓冲区模式:选择 KEEP 以将段中的块放入 KEEP 缓冲区池。选择 RECYCLE 将段中的块放入 RECYCLE 池。选择 DEFAULT 以指示默认缓冲池。

  • 空闲百分比:指定一个整数值,代表数据库对象的各个数据块中为未来对象行更新所预留的空间百分比。PCTFREE 的值必须为 0 到 99 之间的值。

  • 已用百分比:指定一个整数值,代表 Oracle 为数据库对象的各个数据块所维护的已用空间的最小百分比。PCTUSED 指定为从 0 到 99 的正整数,默认为 40。

  • Initrans(初始值):指定在分配给数据库对象的各个数据块中所分配的并行事务处理条目数的初始值。此值的范围为 1 到 255,默认值为 1。

  • Freelists :在具有手动段空间管理的表空间中,对于表空间和回退段以外的对象,为表、分区、集群或索引的每个空闲列表组指定空闲列表的数量。此参数的默认值和最小值为 1,其含义为每个空闲列表组包含一个空闲列表。

  • Freelist Groups :在具有手动段空间管理的表空间中,指定要创建的数据库对象的空闲列表组数。

  • 初始区:指定对象的第一个区的大小。

  • 下一个区:以字节为单位指定要分配给对象的下一个区大小。

  • 增加百分比:在本地管理的表空间中,Oracle Database 在创建段期间使用 PCTINCREASE 值来确定初始段大小,并在后续空间分配期间忽略此参数。

  • 最小区:在本地管理的表空间中,Oracle Database 将 MINEXTENTS 的值与 PCTINCREASE、INITIAL 和 NEXT 结合使用来确定初始段大小。

  • 最大区数:此存储参数仅对字典管理的表空间中的对象有效。指定 Oracle 可为对象分配的总区数, 包括第一个区。

  • 无限制:如果希望根据需要自动分配区,请选择此选项。Oracle 建议使用此设置来最大程度地减少碎片。

清除标签页

  • 类型:在 IMMEDIATE SYNCHRONOUS 中,刷新后会立即清除实体化视图日志。这是默认设置。在 IMMEDIATE ASYNCHRONOUS 中,刷新操作后,实体化视图日志将在单独的 Oracle Scheduler 作业中清除。

  • 延迟、开始于、下一个、重复间隔:设置与实体化视图刷新无关的计划清除,并在 CREATE 或 ALTER MATERIALIZED VIEW LOG 语句期间启动。

刷新标签页

  • 类型同步刷新将创建可用于同步刷新的暂存日志。指定要创建的暂存日志的名称。将在主表所在的方案中创建暂存日志。快速刷新可创建可用于快速刷新的实体化视图日志。实体化视图日志将在主表所在的同一方案中创建。这是默认设置。

DDL 窗格

将根据提供的输入生成 DDL 语句。您可以查看并保存 SQL 语句。如果要进行任何更改,请返回相关窗格并在其中进行更改。

  • 对于新的实体化视图日志,单击 CREATE 查看生成的 DDL 语句。

  • 编辑实体化视图日志时,单击 UPDATE 查看生成的 ALTER 语句。对于新的实体化视图日志,“更新”选项卡将不可用。

完成后,单击 Apply

“输出”窗格

显示 DDL 命令的结果。如果有任何错误,请转到相应的窗格,修复错误,然后再次运行命令。您可以保存到文本文件或清除输出。

隐式外键

隐式外键是表之间存在但未在数据库中定义的相关性。在数据仓库环境中,通常的做法是不创建外键。但是,为了表示或报告目的,有必要显示这些依赖关系。

可以通过定义星型方案中的对象或在数据字典中搜索对象来显示这些对象的隐式外键。隐式外键可以有多个源。

定义隐式外键

可以通过两种方式定义隐式外键:

  • 使用“隐式外键”对话框

  • 通过将箭头拖动到图表中的引用对象

使用“隐式外键”对话框

您可以使用“Data Modeler(数据建模器)”中的“Implied Foreign Keys(隐式外键)”对话框定义隐式外键。

  1. 在数据建模器图表中,右键单击对象(表或视图),然后选择隐式外键

    图 3-17 为对象选择隐式外键

    后面是 select_implied_foreign_keys.png 的说明
    插图 select_implied_foreign_keys.png 的说明

    此时将显示 "Implied Foreign Keys" 对话框。

  2. 在“隐式外键”对话框中,单击 + 在网格中添加一个条目。

  3. 在栅格中选择要启用的条目,并在以下字段中输入值:

    • 引用的对象:图表中与源对象具有相关性的对象。

    • 本地列:源对象中列的名称。

    • 引用列:目标对象中列的名称。

    • 搜索源:自动预填充,显示在数据字典中是定义了隐式外键还是发现了隐式外键。

  4. 单击确定。隐含的外键相关性在图表上显示,并用虚线表示。

    图 3-18 两个对象之间的虚线

    虚线

通过将箭头拖动到图表中的引用对象

还可以按以下方式定义隐式外键:

  1. 在图表上选择源对象。

  2. 单击带蓝色指示灯的小弯曲箭头并将其拖动到引用的对象。相关项将显示在图表上,并在图表上显示一条虚线。

    图 3-19 拖动蓝色指示灯

    后面是图 3-19 的说明
    后面是图 3-19 的说明蓝色指示灯
  3. 右键单击源对象并在“Implied Foreign Keys(隐式外键)”对话框中输入列名。

在数据字典中搜索隐含的外键

通过在数据字典中搜索多种类型的定义,可以搜索星型方案。

在“导航器”选项卡中,右键单击某个对象(表或视图),然后选择将对象作为星型方案添加到图表。对象必须是事实表。然后,在数据字典中搜索与对象相关的联接和依赖项,例如:

  • 为所选表定义的外键到其他表。如果以后为相同的列搜索隐含的外键,则不会在关系图上显示这些外键。

  • 在位图联接索引、包含聚合的实体化视图和属性聚类的定义中使用的联接。

  • 依赖关系基于维定义和事实表中的列名匹配。

  • 分析视图以及 OLAP 多维数据集和维的数值和维定义。