充分利用英语短语|充分利用OracleSQLDeveloper报表

Oracle学习 2021-08-27 网络整理 可可

【shitiku.jxxyjl.com--Oracle学习】

        oracle sql developer(以前称为 project raptor)是 oracle 针对开发人员和 dba 新推出的多平台图形用户界面 (gui)。与 oracle 数据库 10g 快捷版 (xe) 以及 oracle jdeveloper 一样,可以免费下载 oracle sql developer。oracle sql developer 可在 windows、macintosh 和 linux 平台上运行。

   oracle sql developer 为开发人员提供了许多强大特性,包括用于操作数据库对象的图形对话框、sql 工作表、pl/sql 编辑器以及一个报表工具。它基于 oracle jdeveloper java ide,具有直观的树状导航结构。

    报表工具允许以两种方式创建报表:可以从一大组预定义的标准数据字典报表中进行选择,也可以创建一个用户自定义的报表。oracle sql developer 报表还支持绑定变量和下钻报表。

    安装、配置以及创建到数据库的连接超出了本文的讨论范围。有关这些主题的详细信息,请参阅 otn 上的 oracle sql developer 主页。

    要使用报表,首先启动适合您平台的 oracle sql developer。连接到一个数据库,单击 reports 选项卡。单击 reports 符号旁边的加号 (+),然后单击 data dictionary reports 旁边的加号。暂时先不管 user defined reports 项。

    树状视图导航在此表现为文件夹和文件。例如,data dictionary reports 目录是 reports 文件夹的子目录,或者用导航语法表示为 reports->data dictionary reports。

单击 data dictionary 文件夹中任意子文件夹旁边的加号。

oracle 提供的报表

(注:运行某个报表时,可能会看到 select connection 对话框。选择您的连接,然后单击 ok。 )

data dictionary reports 文件夹列出了 oracle 提供的预定义报表集合。我们首先来看看这些标准报表中的一些报表。下面列出的是我发现在工作中很有用的一些报表。浏览这些报表,看看哪些报表可能对您有用。

all parameters 报表 (reports->data dictionary reports->database administration->database parameters->all parameters) 列出了所有的数据库初始化参数。

当您单击某个报表时,该报表自动运行。一些报表具有 enter bind values 对话框,该对话框允许您限制对某些参数的查询。我将在下面详细讨论绑定变量。要运行该报表,选择 apply。

选择 free space 报表 (reports->data dictionary reports->database administration->storage->free space) 可查看每个表空间中的可用空间。

active sessions 报表 (reports->data dictionary reports->database administration->sessions->active sessions) 显示了数据库中的所有活动会话。使用该报表可查看登录的用户及其会话的详细信息。

我发现 top sql 节点下的所有报表 (reports->data dictionary reports->database administration->top sql->*) 都很有价值。我喜欢对系统中进行的操作有一个整体了解,按 cpu 或 io 查看 top sql 就是实现此目的的一个不错方法。

   当我记不住确切的表名或列名时,user tables 报表 (reports->data dictionary reports->table->user tables) 就是个不错的帮手。

   我发现 quality assurance 报表 (reports->data dictionary reports->table->quality assurance->*) 在开发过程中很有价值。我倾向于手工编写大量的 ddl 代码,很可能会丢失某个索引或键。

   使用 pl/sql 搜索报表 (reports->data dictionary reports->pl/sql->search source code) 可以节省大量时间。可以根据对象名称或源文本字符串进行搜索。

    我们来看看该报表背后的 sql 代码。在需要的时候运行该报表。在 reports 窗格上,报表数据上方有三个按钮:一个红色的图钉、一个绿色的三角形,以及矩形中的文本 sql。最后一个按钮从报表中复制 sql,将其放在一个 sql 工作表中。单击 sql 按钮。

查看所提供的 sql 是一个学习一些 sql 技巧的好方法。其中有些技巧将帮助您创建自己的用户定义报表。

下钻报表

oracle sql developer 报表的一个重要特性是下钻功能。这是我最喜欢的 oracle sql developer 特性之一。我稍后将在本文中将向您介绍如编写自己的下钻报表。

打开 reports->data dictionary reports->table->user tables 报表,它列出您模式中的所有表。运行了该报表后,双击结果集网格中的任一行。

该操作将打开一个包含表的说明的新选项卡。如果您遵循了以上操作,现在就会看到该表的列定义。在数据窗格中,您将有两个选项卡:一个针对所运行的报表,另一个针对下钻对象。打开另一个报表,双击某一行。

下钻适用于在导航器上(在 connections 选项卡下)具有对应节点的所有报表。如果您尝试双击 all parameters 报表,则不会发生任何操作,这是因为 connections 下面没有 parameter 节点。

由于下钻功能仅限于 navigator 节点上的项,因此从某种程度上讲,它仅限于您自己的报表。当使用 oracle sql developer 的 oracle 开发人员增加了下钻到某处的能力(即替换下钻查询)时,这将是一个真正有用的功能。

直到此时,它才对您碰巧编写的任何字典报表有用。如果您希望向正在编写的报表添加下钻功能,只需在查询中添加三个列即可。下面,我给出了一些示例。

在该图中,sdev_link_owner 是 object_owner,sdev_link_name 是 object_name,sdev_link_type 是 object_type。

用相同的别名添加这三项,双击时,oracle sql developer 将自动下钻。记住,只有那些在导航器窗格中具有节点的项才能在此时下钻。

简单的用户报表

注:针对下面的大多数示例,我在 oracle 数据库 xe 安装中使用 system 帐户和 hr 帐户。如果您有一个 oracle 数据库 xe 数据库,按我说的做会更简单些。如果您没有 oracle 数据库 xe 数据库,仍然可以按我说的做,但是在某些情况下可能必须选择不同的表。可以从 otn 上免费下载 oracle 数据库 xe。

现在,您将首先创建一个简单的报表。以 hr@xe 身份登录。单击导航器中的最后一个节点 user defined reports。右键单击这个展开的节点,您将看到一个具有以下选项的上下文菜单:add folder、add report、delete、copy、cut 和 paste。

oracle sql developer 为导航维护一个树结构;我建议您最好进行相同的操作。使用文件夹对报表按逻辑分组。您可以选择按应用程序对报表进行分组,我对下面图 12 中显示的 employee reports 和 user data dictionary 应用程序下面的报表就是这样处理的。除了按应用程序名称进行分组外,您可能还希望按其他标准对报表进行分组,但不建议您转储 user defined reports 下的所有内容。

选择 add folder 新建一个文件夹。现在,我们将该文件夹称作 employee reports。输入您希望用作说明的任何内容。如果您将鼠标停留在导航器中的该项上,将显示 tooltip 文本。单击 apply 保存。

在 employee reports 上单击鼠标右键。现在的上下文菜单与前一个相比多了一个 edit 项。选择 edit。进行所需要的任何更改,然后单击 apply 保存。

再次单击鼠标右键,然后选择 add report。将报表命名为“number of employees by department”。在 description 和 tooltip 中输入您想要的任意文本。将下面的查询用作报表 sql:

select department_id, count(*)from employeesgroup by department_id

单击 apply 保存。

单击 employee reports 节点旁边的加号,然后单击新报表。可能会看到 select connection 对话框。如果这样,则选择 hr 连接并单击 ok。

   现在,您是您第一个用户定义报表的自豪的所有者。尽管该报表很有用,但如果它能列出部门名称而非部门 id,用处就更大了。要添加该功能,首先在该报表上单击鼠标右键。您将注意到该报表在上下文菜单中具有以下几项:open、open new window、edit 和 show properties。选择 edit。

   更改您的查询,使其包括 departments 中的部门名称:

select d.department_name, count(*)from employees ejoin departments d on (e.department_id = d.department_id)group by d.department_name

单击 apply 保存,然后返回报表。

   让我们将这个报表变得更加有趣。在该报表上单击鼠标右键,选择 copy。如果再次单击鼠标右键,将发现没有了 paste 选项。右键单击 employee reports 节点。现在可以粘贴报表了。右键单击新报表(结尾处有括号包含着数字的报表),选择 edit。将查询更改为下面的测试:

select e.last_name, e.first_name, d.department_name, count(*) over (partition by d.department_name) dept_count, count(*) over ()from employees ejoin departments d on (e.department_id = d.department_id)

运行报表。现在,这很有用。报表中包含一名雇员、一个部门名称、该部门中的雇员数量,以及所有部门中的雇员数量。

创建有用的报表的关键在于能够创建动态报表。如果您使用绑定变量,报表将能针对每次运行动态改变。在 oracle sql developer 1.0 之前的版本中,虽然您可以修改 userreports.xml 文件(位于 sql developer user information directory 中)来变相地添加绑定变量,并它并不直接支持使用绑定变量的用户定义报表。使用 1.0 版可以轻松地创建使用绑定变量的报表。

现在对报表进行最后更改。您要添加一个绑定变量,它将允许用户输入一个部门名称或部分名称来选择具体的部门,它也可以为空以选择所有部门。按如下所示修改 sql:

select e.last_name, e.first_name, d.department_name, count(*) over (partition by d.department_name) dept_count, count(*) over ()from employees ejoin departments d on (e.department_id = d.department_id)where (:dept_name is nullor d.department_name = :dept_name)

运行该报表,然后看您的绑定变量屏幕。试着输入一些值。

现在,我们来应用报表制作技巧,创建一个将对所有开发人员和 dba 有用的报表。

复杂报表

由于这是一个新的报表类别,因此我们在 user defined reports 节点下面新建一个文件夹。该文件夹将包含您自己的 data dictionary 报表集,因此我们就将其称为 user data dictionary 吧。

您的新报表将列出回收站中的所有对象以及它们所占用的空间。该报表在 oracle 数据库 xe 中尤为方便,您可以针对您的对象将磁盘空间限制为 4gb。

运行该报表的用户需要能够访问 sys.dba_objects、sys.dba_segments 和 sys.dba_recyclebin 数据库对象。我通常以 sysdba 用户的身份运行该报表。

新建一个用户定义的报表,将其命名为 recycled objects。在 description 和 tooltip 中输入想要的任意文本。使用该查询:

select ao.owner,ao.object_type,ar.original_name,ao.object_name recycled_name,ar.droptime,ds.bytes/1024/1024 "megabytes",ao.owner sdev_link_owner,ao.object_name sdev_link_name,ao.object_type sdev_link_typefrom sys.dba_objects ao,sys.dba_segments ds,sys.dba_recyclebin arwhere ao.object_name like "bin$%"and ao.owner = ds.ownerand ao.object_name = ds.segment_nameand ar.object_name = ao.object_nameand ((ao.subobject_name is null and ds.partition_name is null)or ao.subobject_name = ds.partition_name)and ((:original_name is null or ar.original_name = :original_name)and (:object_type is null orao.object_type = :object_type))

该报表包括 sdev_link_owner、sdev_link_name 和 sdev_link_type 别名。这意味着允许您下钻来查看所引用的项的结构。对于该查询而言,它将下钻到 recyclebin 中的项。如果将 sdev_link_name 从 ao.object_name 更改为 ar.original_name,您将下钻到已经替换了它的项(如果有的话)。可以对该报表进行修改,以便允许在模式之间切换。

将 sdev_link_name 行从

ao.object_name sdev_link_name,

修改为

decode( :original_or_recycle, 1, ar.original_name, ao.object_name) sdev_link_name,现在,运行该报表时,如果希望下钻到回收的对象,不用进行任何操作即可。另一方面,如果希望下钻到初始对象(如果存在),则将 original_or_recycle 变量更改为 1。

    这些技巧使 oracle sql developer 中的下钻功能变得如此聪明。当 oracle 开发人员将该功能修改为允许通过自定义的查询下钻时,这将非常有用!访问 otn 上的 oracle sql developer 论坛 ,让 oracle 知道您需要自定义查询下钻这个特性!

    除了更改 original_or_recycle 变量外,还可以用对象类型和/或初始对象名称来限制返回数据集。该查询的最后四行创建了绑定变量。上面详细介绍了绑定变量,因此无需赘述。

   在绑定变量对话框中为报表的终端用户提供额外的描述性信息将很有帮助,难道不是吗?如果我想与其他人共享该报表,original_or_recycle 变量确实需要额外的描述性文本。有一种提供该操作的方法。

    我已经提到过,在 oracle sql developer 1.0 之前的版本中,编辑 userreports.xml 文件可以添加绑定变量。您可以在当前版本中执行相同操作来扩展绑定功能。可以添加描述性文本,更改提示,甚至可以指定默认值。下面介绍如何添加描述性文本:

    您需要导航到名为 sql developer user information directory 的 os 目录。在 ms windows 中,打开 c:->documents and settings 目录。在该目录下,选择要用来登录的用户身份。例如,如果以 lcunning 身份登录,我就会导航到 c:->documents and settings->lcunning 目录。在该目录中,导航到 .sqldeveloper 目录。与我的用户 lcunning 保持一致,我现在在 c:->documents and settings->lcunning->.sqldeveloper 目录中。

     在 linux 中,您会发现该目录是 .sqldeveloper 主目录下的一个子目录。因此,对于 $home 为 /home/lcunning 的用户而言,userreports.xml 应该位于 /home/lcunning/.sqldeveloper 下。

   .sqldeveloper 目录中至少应该有两个文件。其中一个文件就是 userreports.xml,它包含您的用户定义报表。您可以用最喜欢的 xml 编辑器打开它。

注:编辑 userreports.xml 文件之前,请进行备份!如果您搞乱了 xml 语法,您还能用备份替换该文件,然后重新开始。

xml 文档的格式如下所示:

<reports><folder><name></name><description></description><report enabled="true"><name></name><description></description><tooltip></tooltip><query><sql></sql></query></report></folder></reports>

您可以从内向外理解这个文件,这是因为 sql 查询包装在一个报表中,该报表位于一个包含在报表文档中的文件夹中;您还可以从外向内理解这个文件,这是因为报表文档包含一个或多个文件夹(具有一个名称和一个描述),而每个文件夹又包含了一个或多个报表。每个报表都用名称、描述、工具提示和查询定义。一个查询由多条 sql 语句组成。

query 节点就是进行修改的地方。您将在 <query> 节点中紧跟 <sql> 节点后添加一个 <binds> 节点。

binds 节点应如下所示:

<binds><bind id=""><type></type><prompt></prompt><value></value><tooltip></tooltip></bind></binds>

bind 标记的 id 属性是绑定变量的名称。以这种方式创建绑定变量时,如果您包括了一个绑定变量,就必须包括该报表的所有绑定变量。

如果希望某个绑定变量有一个默认值,可以将该值放在 value 元素中。

进一步的描述放在 tooltip 中。对于><type><![cdata[null</type><prompt><![cdata[original_or_recycle</prompt><value><![cdata[null_value</value><tooltip><![cdata[enter 1 to drill down to the><type><![cdata[null</type><prompt><![cdata[original_name</prompt><value><![cdata[null_value</value><tooltip><![cdata[enter the><type><![cdata[null</type><prompt><![cdata[object_type</prompt><value><![cdata[null_value</value><tooltip><![cdata[enter an object type</tooltip></bind></binds>

使用 ![cdata ]] 文本是一种保护自己的方法,因为它告诉 xml 分析器不要尝试解释方括号中的内容。如果您不熟悉 xml,应该努力总是包括该文本。

修改描述性文本和默认值有很大的价值,因此我打赌 oracle 的 sql developer 团队过一段时间将对此进行改进。现在已经有了定制的能力;只不过还没有接口。

修改了 userreports.xml 文件之后,您将需要退出并重新启动 oracle sql developer。重新启动之后,运行报表。您会看到类似下面的屏幕。

共享报表

如果您想与客户、同事或其他 oracle sql developer 用户共享自己的用户定义报表,可以复制 userreports.xml 文件,然后将它移至他们计算机上的 sql developer user information directory,即可共享您的所有报表。

如果您不想共享其中某些报表,则针对特定报表删除 <report> 和 </report> 之间的文本。(请再次确保保留了文件的备份!)

导出报表数据

运行了报表后,在数据网格中单击鼠标右键,将看到一个上下文菜单。唯一的选项应该是 export。选择 export,将获得另一个包含了 csv、xml、insert、loader 和 text 的菜单。这些选项是报表数据的导出格式。选择以上任何选项都会弹出相同的对话框。

csv 是一个用逗号分隔的值文件,适用于导入到电子表格(或 oracle application express)中。 xml 是数据的 xml 文档。 insert 为数据集中的每条记录创建一个插入语句。 loader 创建一个 sql*loader 数据控制文件。 text 创建一个用制表符分隔的文本文件。

对话框中的 columns 选项卡允许您选择导出文件中包含哪些列,where 选项卡允许您添加一个可选的 where 子句以限制进入输出文件的记录。

sql*plus 该让位了

oracle sql developer 是每个 oracle 开发人员的工具包中都应有的一个工具。oracle sql developer 除了允许您进行 sql 和 pl/sql 开发外,还提供了一个长长的有用报表的列表,以及一个创建您自己的用户定义报表的工具。

sql*plus 该让位了,oracle sql developer 简化了自定义报表的创建,并且提供了额外的功能(如变量对话框和下钻报表)。如果您定期访问某个 oracle 数据库,您可以将其归自己所有,下载 oracle sql developer 试一下。

lewis r. cunningham 是交通运输行业的一名数据库架构师、开发人员和 dba,并且是一名 oracle ace。他在 为 ittoolbox 编写 “an expert’s guide to oracle”,并且使用 oracle 技术有 13 年了。

本文来源:https://shitiku.jxxyjl.com/oraclexuexi/7680.html

  • 【weblogic配置oracle数据源】WebLogic与ORACLE数据库的连接配置

    weblogic6 0通过oracle客户端访问oracle 所以在weblogic6 0所在的机器上要正确安装oracle客户端才行 weblogic6 0可采用type2或type4的jdbc driver 与oracle数据库相连。下面分别介绍它们的配置方法:type2 jdbc drive...

    发布于:2021-08-28

    详细阅读
  • oracle数据库入门教程|如何学习Oracle?

    经常有一些oracle的初学者问到这个问题,这里算是一个统一答复。 1、如果有一定的数据库基础,知道sql是怎么回事,即使写不出来简单的sql,但可以看动它们,你就可以跳到2。否则请先看一下数据库基础和sql语言,不需要很深,更不需要去记忆那些复杂的sql命令,...

    发布于:2021-08-28

    详细阅读
  • [sql语句学习]PL/SQL学习笔记(七)

    层次查询select [level],column,expr from table [where condition][start with]起点(自底向上 自顶向下)[connect by prior + 主键 外键=外键 主键] 看你往哪个方向查自顶向下 左边放主键,右边放外键select...

    发布于:2021-08-28

    详细阅读
  • [oracle10g重建监听]oracle10g重建emdbcontrol

    oracle 10g重建em db control 1 drop configuration files and repository run :emca -deconfig dbcontrol db -repos drop 2 logon sqlplus as user sys or syste...

    发布于:2021-08-28

    详细阅读
  • [oracle]Oracle PL/SQL语言基础

    pl sql是oracle对标准数据库语言的扩展,oracle公司已经将pl sql整合到oracle 服务器和其他工具中了,近几年中更多的开发人员和dba开始使用pl sql,本文将讲述pl sql基础语法,结构和组件、以及如何设计并执行一个pl sql程序。   pl sql...

    发布于:2021-08-28

    详细阅读
  • 【oracle重建密码文件】重建密码文件--解决ORA-01991错误

    统计服务器测试没问题,刚好上次配置系统的时候有点问题,故重装一次,配置好安全策略(最近在研究如何新配置一台服务器的时候,第一时间配置好相关的安全设置,有空再写下来)。 为了省事,直接冷备份oracle的数据文件,安装好oracle后,直接恢复到原来对应的目录。启动,出现:...

    发布于:2021-08-27

    详细阅读
  • ocp考试通过率|参加OCP考试的小技巧

    下面这些小技巧能帮助你准备和通过每个考试。   每个ocp考试包含55~80个问题,考试时间90分钟。首先回答你会的问题,这样不至于时间不够用。   许多问题的答案选项第一眼看上去都是一样的,要仔细阅读问题,不要直接跳到答案,一定要弄确切每个问题到底问什么。   大部分测试题都是基于场景的,有些场景...

    发布于:2021-08-27

    详细阅读
  • [jdbc连接oracle数据库的连接字符串]通过JDBC连接oracle数据库的几个技巧

    java数据库连接(jdbc)api是一系列能够让java编程人员访问数据库的接口,各个开发商的接口并不完全相同。以下是一些技巧,这些技巧能够使我们更好地发挥系统的性能和实现更多的功能。   1、在客户端软件开发中使用thin驱动程序 在开发java软件方面,oracle的数据库...

    发布于:2021-08-27

    详细阅读
  • vi编辑器的使用技巧_VI的常见使用技巧

    一、简介 vi命令可以说是unix linux世界里最常用的编辑文件的命令了,很多人不喜欢vi因为它 的众多的命令集,但是我们只需要掌握基本的命令然后灵活地加以运用,相信你会象我一样喜欢它的。 本文旨在更有条理有归纳性地介绍vi的一些最常用命令和一些高级的应用。 二、基本命令介绍 1) 光标命令...

    发布于:2021-08-27

    详细阅读
  • 会话跟踪技术|用改变跟踪技术加速Oracle递增备份

    oracle 8i引进了恢复管理(rman),首次实现了真正的递增备份。在rman之前,数据库输出也能够递增进行,但一旦某个表的任何一块发生改变,整个表都需要重写。rman递增备份则仅需在给定的数据文件中重写被修改的部分,由此可大大节约了空间。  然而在版本10g之前,递增备份需要对...

    发布于:2021-08-27

    详细阅读

Copyright @ 2011- 考试题库网 All Rights Reserved. 版权所有

免责声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。

 站长统计