利用分段使用映射为数据库建立HTML

文章作者 100test 发表时间 2007:03:14 14:01:09
来源 100Test.Com百考试题网


在Oracle数据库中,管理tablespaces通常很难实现从SQL查询得到数据的可视化。一种实现tablespaces可视化且更加容易管理的方法是建立类似于碎片重组功能(defragmentation utilities)的分段使用映射(block usage maps)。

不需要任何图表或者图形功能,你可以使用简单的由Oracelmodplsql包产生的HTML,而modplsql包可在安装Oracle8i和9i时安装。

这其中也包含着风险,因为这一程序必须由一个DBA帐号来运行,所以DBA帐号必须将使用权限赋予每一个操作计划,而操作计划必须包含在wdbsvr.app文件中。为了保护这一文件,你必须确保这一文件只能被Oracle用户和DBA组查阅。如果你愿意把这一程序编写成一个JSP页或者servlet,你也应该非常小心,以防止外部能够使用DBA帐号。

DBA视不能在一个PL/SQL查询,所以你必须将PL/SQL安装为SYS,然后将使用权限分配给允许运行PL/SQL的帐号:

  

  connect sys/

  @blkmap.sql

  grant execute on blkmap to system.

  connect system/

  create synonym blkmap for sys.blkmap.
  

在这个例子中,我们建立一个名为blkmap包,这一blkmap包具有两个入口点。其中一个是显示tablespaces列表的一个菜单,另一个是实际使用的tablespace分段映射:

  

      create or replace package blkma

  

  as

  procedure ts_menu.

  procedure ts_map(p_name varchar2).

  

  end blkmap.

  

  /

  

  show errors.
 

Tablespace菜单的代码可以是一个与分段映射(block map)页关联的tablespaces列表:

  

  procedure ts_menu

  is

  begin

    htp.p().

    htp.p( bgcolor="white">).

    htp.p(

Tablespaces

).     htp.p().     htp.p().     htp.p().   end ts_menu.
  

对于tablespace映射,可以生成一个tablespace名称,并请求包含tablespace的每一文件的分段映射。

  

  procedure ts_map(p_name varchar2)

  is

  begin

    page_open.          -- open the page

    htp.p(Tablespace: ||p_name).

    htp.p(
).     for file in     (       0select file_id        from dba_data_files        where tablespace_name = p_name        order by file_id     )     loop       filemap(file.file_id).  -- generate a block map for the file       htp.p(
).     end loop.     info_form.          -- generate a form for segment info     legend.           -- generate a legend for color mappings     page_close.         -- close the page   end ts_map.


相关文章


基础简介:深入了解Oracle的数据字典
Oracle数据操作和控制语言详解(10)
Oracle中捕获问题SQL解决CPU过渡消耗(3)
Oracle9i中利用自动撤销管理的优点
利用分段使用映射为数据库建立HTML
Oracle9i在线表格重定义来组织表格
关于Oracle数据库的性能优化心得
MSSQLServer和Oracle的常用函数对比
Oracle的imp命令导入备份数据
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛