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

feifeihahayear

feifeihahayear

2016-02-19 18:51

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享利用分段使用映射为oracle数据库建立HTML,希望可以对大家能有小小的帮助。

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

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

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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

  DBA视不能在一个PL/SQL查询,所以你必须将PL/SQL安装为SYS,然后将使用权限分配给允许运行PL/SQL的帐号:
  connect sys/password
  @blkmap.sql
  grant execute on blkmap to system;
  connect system/password
  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('html');
    htp.p('body bgcolor="white"');
    htp.p('h2Tablespaces/h2');
    htp.p('ul');
    for ts in (select tablespace_name from dba_tablespaces) loop
      htp.p('lia href="blkmap.ts_map?p_id='||ts.tablespace_name||'"'
        ||ts.tablespace_name||'/a/li');
    end loop;
    htp.p('/ul');
    htp.p('/body');
    htp.p('/html');
  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('hr /');
    for file in
    (
      select 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('hr /');
    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;

对于实际使用的分段映射,我们通常需要显示一个“block”并用颜色表示。使用 标签比较复杂。一个更好的方法是生成字符次序,即一段时间之后是间隔,这一间隔允许在任何位置给文本以颜色化。
  为了使得分段映射更加有用,我们想列出鼠标位置的block信息,并且突出组成这一片段的block,我们可以使用标签。首先,生成一个指定a和a:hover的类型,然后建立每一Oracle数据库段的类型:
  style type="text/css"
  a
  {
    text-decoration: none;
    font-family: monospace;
    font-size: 6pt;
  }
  a:hover {background-color: yellow}
  a.free {background-color: white}
  a.cache {background-color: #FFCC00}
  a.cluster {background-color: #9A0000}
  a.index {background-color: #009900}
  a.lobindex {background-color: #9AFE66}
  a.lobsegment {background-color: #9A99FF}
  a.rollback {background-color: #FF3300}
  a.temporary {background-color: #DFFEFF}
  a.table {background-color: #003399}
  a.other {background-color: magenta}
  body
  {
    background-color: white;
    font-family: sans-serif;
    font-size: 10pt;
  }
  /style

  我们可以列出有关鼠标位置的block使用者、名称、类型、block数量、以及片段的长度。为了实现这一目的,我们需要两个JavaScript函数,包含以上信息的这两个函数被调用,并传递到表单的域内:
  script language="javascript"
  function hover(own,nam,typ,bid,len)
  {
    document.form.owner.value = own;
    document.form.name.value = nam;
    document.form.type.value = typ;
    document.form.block_id.value = bid;
    document.form.length.value = len;
    return true;
  }
  function leave()
  {
    document.form.owner.value = "";
    document.form.name.value = "";
    document.form.type.value = "";
    document.form.block_id.value = "";
    document.form.length.value = "";
    return true;
  }
  /script
  . . .
  form name="form"
  table border=0
  trtdOwner:/tdtdinput name="owner" //td/tr
  trtdName:/tdtdinput name="name" //td/tr
  trtdType:/tdtdinput name="type" //td/tr
  trtdBlock#:/tdtdinput name="block_id" //td/tr
  trtdLength:/tdtdinput name="length" //td/tr
  /table
  /form

  对于每一片段,我们需要建立一个block的标签。最后,建立一个显示不同颜色含义的图表:
  table border=0
  trthcolspan="2"Legend/th/tr
  trtda name="free" class="free". /a/td
  tdFree Space/td/tr
  trtda name="cache" class="cache". /a/td
  tdCache/td/tr
  trtda name="cluster" class="cluster". /a/td
  tdCluster/td/tr
  trtda name="index" class="index". /a/td
  tdIndex/td/tr
  trtda name="lobindex" class="lobindex". /a/td
  tdLobIndex/td/tr
  trtda name="lobsegment" class="lobsegment". /a/td
  tdLobSegment/td/tr
  trtda name="rollback" class="rollback". /a/td
  tdRollback/td/tr
  trtda name="temporary" class="temporary". /a/td
  tdTemporary/td/tr
  trtda name="table" class="table". /a/td
  tdTable/td/tr
  trtda name="other" class="other". /a/td
  tdOther/td/tr
  /table

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

  以下是完整代码:
  create or replace package blkmap
    authidcurrent_user
  as
    procedure ts_menu;
    procedure ts_map(p_name varchar2);
  end blkmap;
  /
  show errors;
  
  create or replace package body blkmap
  as
    procedure page_open;
    procedure info_form;
    procedure filemap(p_id number);
    procedure legend;
    procedure page_close;
    --
    procedure ts_menu
    is
    begin
      htp.p('html');
      htp.p('body bgcolor="white"');
      htp.p('h2Tablespaces/h2');
      htp.p('ul');
      for ts in (select tablespace_name from dba_tablespaces) loop
        htp.p('lia href="blkmap.ts_map?p_name='||ts.tablespace_name||'"'
          ||ts.tablespace_name||'/a/li');
      end loop;
      htp.p('/ul');
      htp.p('/body');
      htp.p('/html');
    end ts_menu;
    --
    procedure ts_map(p_name varchar2)
    is
    begin

展开更多 50%)
分享

猜你喜欢

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

Web开发
利用分段使用映射为oracle数据库建立HTML

为数据库建立索引(二)

PHP
为数据库建立索引(二)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

为数据库建立索引(一)

PHP
为数据库建立索引(一)

在ASP中使用Oracle数据库

ASP
在ASP中使用Oracle数据库

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

3.3 在ASP中使用Oracle数据库

Web开发
3.3 在ASP中使用Oracle数据库

在ASP中使用Oracle数据库技巧

ASP
在ASP中使用Oracle数据库技巧

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

I hate you say you love me but do nothing 爱我却什么不做

I hate you say you love me but do nothing 爱我却什么不做

XHTML标签的自关闭的写法应该注意的问题

XHTML标签的自关闭的写法应该注意的问题
下拉加载更多内容 ↓