Oracle数据库-PLSQL整理(1)

Oracle数据库-PLSQL整理(1),第1张

获取系统记录行数  go_block( T_WARITEMPRT );  last_record;  row_count:=:system trigger_record;  system cursor_record execute_trigger( POST CHANGE ); 设置鼠标状态set_application_property(cursor_style BUSY ); raise form_trigger_failure; 显示错误信息  exception when others then    display_note(sqlerrm||sqlcode :global logon_user); decodedecode(a freigode 企业自付 供应商付费 企业代付 供应商代付 null)decode(qtyonhand qtyinit invtranqty invtranqty null) 导出路径select   from t_parameter where f_name= LeanERPTempDir ;select f_c_value from t_parameter where f_name = WebServer ; 合同附件select f_c_value  from t_parameter where f_name= purorderaccesspath ;select f_c_value  from t_parameter where f_name= purorderaccessurl ; 设置值列表     SET_ITEM_PROPERTY( top ORIGINALNO LOV_NAME LOV_MSO );LIST_VALUES; 下拉列表 n:=populate_group( rec_lb ); populate_list( BLK_BUT APPTYPE rec_lb ); :bLK_BUT APPTYPE:= ; 调用另一模块DECLARE    pl_id   ParamList;   v_string varchar ( );   v_itemname varchar ( ); BEGIN   pl_id := Get_Parameter_List( calendar );   IF NOT Id_Null(pl_id) THEN     Destroy_Parameter_List(pl_id);   END IF;   pl_id := Create_Parameter_List( calendar );   v_itemname:=:system current_block|| ||:system current_item;  v_string:=name_in(v_itemname);  Add_Parameter(pl_id p_str TEXT_PARAMETER v_string);   Call_Form( input_str no_hide no_replace no_query_only pl_id);  copy(:global str v_itemname); Erase(:global str);END; 批量处理  set_application_property(cursor_style BUSY );  SYNCHRONIZE;  first_record;  loop    null;  exit when :system last_record = TRUE ;  next_record;  end loop;  set_application_property(cursor_style DEFAULT );  bell;  display_note( SRMP :global logon_user);    采购计划关闭完毕! 对话框IF display_stop( INV :GLOBAL logon_user) <> alert_button THEN  RETURN;END IF; 取得货币名称begin  select currencydesc  into v_currencydesc  from t_currency  where currencycode = c splymoneyflag;  exception when others then v_currencydesc := 人民币(元) ;end; 询问对话框 declare  return_value number;begin  set_alert_property( stop_alert alert_message_text 确认送审该合同吗 );  return_value := show_alert( stop_alert );  if return_value != alert_button then     return;  end if;end; 询问对话框

DECLARE  return_value number;  BEGIN  return_value := display_stop( mdm :global logon_user);  IF return_value = ALERT_BUTTON THEN     MIT_FORM;   END IF; END;  

取下周一 select trunc(sysdate d )+ from dual; message_leveloldmsg := :System Message_Level;  IF reldef = FALSE THEN    Go_Block(detail);    Check_Package_Failure;    :System Message_Level := ;    Execute_Query;    :System Message_Level := oldmsg;  ELSE 取当前年度 期段号begin  select year period   into v_year v_period  from t_accperiod   where sysdate >= startdate  and to_char(sysdate yyyy/mm/dd )<=to_char(enddate yyyy/mm/dd ); exception when others then null;  end; 设置画布属性vCan :=FIND_VIEW( CAN_PRTNO );SET_VIEW_PROPERTY(vCan VISIBLE property_true);vCan :=FIND_VIEW( CAN_PRTNO );SET_VIEW_PROPERTY(vCan VISIBLE property_false); 设备提示信息elsif :top opsrc = X or :top opsrc= T then   set_item_property( top tranobj prompt_text 客户代码 );else   set_item_property( top tranobj prompt_text 部门代码 );end if; 设置值列表KEY LISTVALELSIF :top OPSRC= I THEN  零星出库  SET_ITEM_PROPERTY( top ORIGINALNO LOV_NAME LOV_MSI );LIST_VALUES;  IF :top ORIGINALNO IS NOT NULL THEN     PRTNO_MSI;  END IF;END IF; 调用值列表show_lovDECLARE   a_value_chosen BOOLEAN; BEGIN   a_value_chosen := Show_Lov( lov_name );   IF  a_value_chosen THEN     set_block_property( t_efficiency default_where username = :control display_name );    go_block( t_efficiency );    execute_query;      set_block_property( t_efficiency default_where username in (select username from t_hrmuser where department = :global user_dept) );  END IF; END; 生成序号declare  vlpadnum number;  maxno varchar ( );  cursor cerpcode is select sequence lpadnum from t_erpcode   where erpcode= PURAPPNO and prifix=to_char(sysdate yy )||to_char(sysdate mm ) for update nowait;begin  if :t_purapp appno is null then    if :SYSTEM MODE = NORMAL THEN     begin      begin     for c in cerpcode loop             update t_erpcode set sequence=sequence+ where erpcode= PURAPPNO and prifix=to_char(sysdate yy )||to_char(sysdate mm );     end loop;    exception     when others then     display_note( SYS :global logon_user);     raise form_trigger_failure;    end;      select sequence lpadnum into maxno vlpadnum from t_erpcode where erpcode= PURAPPNO and prifix=to_char(sysdate yy )||to_char(sysdate mm );     exception      when NO_DATA_FOUND then            select count()+ into maxno from t_purapp where appno like % ||to_char(sysdate yy )||to_char(sysdate mm )|| % ;           select max()       vlpadnum:= ;      insert into t_erpcode(erpcode prifix sequence lpadnum)       values ( PURAPPNO to_char(sysdate yy )||to_char(sysdate mm ) maxno vlpadnum);     end;      :t_purapp appno := Q ||:global logon_user||to_char(sysdate yy )||to_char(sysdate mm )||lpad(maxno vlpadnum );    end if;   end if;end; 遍历树 select t_prtstrudef prtno         t_prtbasdef prtdesc         t_prtbasdef mtltmrk         t_prtstrudef prtpqty         t_prtbasdef prtum         t_prtstrudef tranprtno   from t_prtstrudef t_prtbasdef   where t_prtstrudef prtno = t_prtbasdef prtnoconnect by prior t_prtstrudef prtno=t_prtstrudef prntno   start with t_prtstrudef prntno=:BLOCK_BUTTON PRTNO;   / 

Built in:  FORMS_DDL Example:   The expression can be a string literal /  BEGIN   Forms_DDL( create table temp(n NUMBER) );   IF NOT Form_Success THEN     Message ( Table Creation Failed );   ELSE     Message ( Table Created );   END IF; END; 物料所属大类判断and (exists (select a from t_prtinclass c where c classid= ||:blk_query classid|| and c prtno=v_totqry prtno ) or :blk_query classid is null) 给值列表赋初值declare  cursor v_cur is select machtype A machtype B from t_gkdept order by machtype;  N_INDEX NUMBER := ;begin  DELETE_LIST_ELEMENT( T_TPMSCKMTN MACHTYPE );  for c in v_cur loop    Add_List_Element( T_TPMSCKMTN MACHTYPE N_INDEX C A C B);    N_INDEX := N_INDEX + ;  end loop; end; 查询重复数据select rpno from t_purtrace group by rpno having count(rpno) > ; 生成单据号PROCEDURE GET_PRTNO is   v_sysdate      varchar ( );   v_Svdictateno  varchar ( );   v_DbodNo       varchar ( );         n_count        integer;   v_count        varchar ( );   n_count        integer;   n_count        integer;   v_count        varchar ( );   n_num          number;   v_num          varchar ( );BEGIN

lishixinzhi/Article/program/Oracle/201311/18393

当您对硬盘进行碎片整理时,您可以改善磁盘性能并确保您所在组织中的服务器(包括正在运行 Exchange 2000 的服务器)平稳有效地运行。但是,因为详尽的磁盘碎片整理可能会导致性能问题,所以您可能需要定期地或在服务器的性能水平降至预期性能以下时运行碎片整理程序(如 Microsoft Windows 2000 磁盘碎片整理程序)。

更多信息Exchange 2000 数据库也需要进行碎片整理。默认情况下,Exchange 2000 数据库每天运行碎片整理进程。此进程可以更有效地排列邮箱存储数据和公用文件夹存储数据,以整理未使用的存储空间。您还可以在脱机情况下手动对 Exchange 2000 数据库进行碎片整理。

select

姓名,

sum ( case when 项目名称='项目1' and 统计口径='竣工' then 积分 else 0 ) as 项目1竣工积分,

sum ( case when 项目名称='项目1' and 统计口径='拆机' then 积分 else 0 ) as 项目1拆机积分,

sum ( case when 项目名称='项目2' and 统计口径='竣工' then 积分 else 0 ) as 项目2竣工积分,

sum ( case when 项目名称='项目2' and 统计口径='拆机' then 积分 else 0 ) as 项目2拆机积分

from table_a

group by 姓名

如果项目不多的话,就这么写,不过我在想,要是项目很多的话,这样做表是否合适。

作者: 佘涛 对于像Sybase这样的大型DBMS系统而言 作为OLTP(联机事务处理)应用的基石 它需要能每天 小时 每年 天不间断运行 由于其应用程序每天对数据库进行大量的插入 更新 删除等 *** 作 在数据库的物理存储介质上产生了大量存储碎片 从而影响了存储的效率以及数据库应用运行的速度 是否可以像Windows *** 作系统的 碎片整理 程序一样 整理这些碎片 从而优化数据库存储 提高数据库的运行速度呢?答案是肯定的 本文将介绍Sybase数据库的碎片类型以及碎片整理方法 碎片类型 由于Sybase是通过OAM页 分配单元和扩展页来管理数据的 所以对OLTP应用的Database Server会十分频繁地进行数据删除 插入和更新等 *** 作 时间一长就会出现以下几种情况 页碎片 即本来可以存放在一个页上的数据却分散地存储在多个页上 如果这些页存储在不同的扩展单元上 Database Server就要访问多个扩展单元 因此降低了系统性能 扩展单元碎片 在堆表中 当删除数据链中间的记录行时 会出现空页 随着空页的累积 扩展单元的利用率也会下降 从而出现扩展单元碎片 带cluster index的table也有可能出现扩展单元碎片 当有扩展单元碎片存在 会出现以下问题 ● 对表进行处理时 常常出现死锁 ● 利用较大的I/O *** 作或增加I/O缓冲区的大小也无法改变较慢的I/O速度 ● 行 *** 作的争用 扩展单元遍历 带有cluster index的table会由于插入记录而导致页分裂 但当删除记录后 页会获得释放 从而形成跨几个扩展单元和分配单元的数据 而要访问该数据就必须遍历几个扩展单元和分配单元 这将导致访问/查询记录的时间大大延长 开始时数据库的性能虽然较高 但使用一段时间后性能就会下降等问题 实际上 数据在存储空间上排列得越紧密有序 Database Server访问的速度就越快 消除碎片有助于提高系统的性能和更有效地利用数据存储空间 碎片优化方法 处理碎片有多种方法 如重新定义table的填充因子 根据table的定义删除并重新创建索引 重建表等 本文给出的方法是通过BCP实用程序将用户数据库的数据以文本形式导出 然后将用户数据库彻底清空 截断 再将文本数据导入到数据库 从而达到消除碎片的目的 具有通用性 下面以Sun Solaris *** 作系统下的Sybase Adaptive Server Enterprise 为例 说明整理数据库数据的具体方法 备份数据库 为防止在数据库碎片整理过程中出现不可预见的问题 有必要先备份数据库 创建bcp out脚本并导出数据 ● 创建包含下列SQL语句的文件 cre_bcp_out sql select bcp + name + out / + name + _out txt Udboname Pdbopwd Ssys_name c from sysobjects where type = U order by name go ● isql Udboname Pdbopwd Ssystemname < cre_bcp_out sql > b_out ● 编辑输出文件 去掉文件第一行和最后两行无关的字符 vi b_out ● 执行脚本 将数据库的数据导出到文本文件 sh b_out 创建truncate table脚本并截断数据库 ● 创建包含下列SQL语句的文件 cre_trunc_out sql select truncate table + name from sysobjects where type = U order by name go ● isql Udboname Pdbopwd Ssystemname < cre_ trunc_out sql > trunc_out sql ● 编辑输出文件 去掉文件第一行和最后两行无关的字符 并在最后一行加入 go构成完整的SQL语句 vi trunc_out ● 执行以下语句 清空数据库的数据 isql Udboname Pdbopwd < trunc_out sql 4 创建bcp in脚本并导入数据 ● 创建包含下列SQL语句的文件: cre_bcp_in sql select “bcp” + name + “in /” + name + “_outtxt -Udboname -Pdbopwd -Ssys_name -c”from sysobjects where type = ‘U’ order by name go ● isql -Udboname -Pdbopwd -Ssystemname < cre_ bcp_in sql > b_in ● 编辑输出文件,去掉文件第一行和最后两行无关的字符:vi b_in ● 从文本中导入数据:sh b_in 5 更新数据库状态 Sybase不自动维护索引的统计信息,当用truncate table截断数据库时,索引并没有改变,所以必须用update statistics来确保索引的统计信息对应当前表数据的统计。tWWiNgwiT ● 创建包含下列SQL语句的文件: cre_upd_st sql select “update statistics” + name from sysobjects where type = “U” order by name go ● isql -Udboname -Pdbopasswd -Ssystemname < cre_upd_st sql > upd_st sql ● 编辑输出文件,去掉文件第一行和最后两行无关的字符,在最后一行加入 go构成完整的SQL语句: vi upd_st sql ● 更新数据库状态: isql -Udboname -Pdbopasswd -Ssystemname < upd_st sql 至此,基本上完成了数据库用户表的碎片整理工作。 小 结 在整理过程中,有以下两点需要注意: 1 Tempdb的大小 当Sybase执行bcp in脚本时,会占用导入数据2倍的tempdb空间,因此在执行前要仔细估计最大的table的大小,保证有足够的tempdb空间。当空间不够时,要考虑用分割table或删除陈旧数据的方法缩小table的大小,或者考虑增加tempdb的大小。 2 数据库配置选项的设置 当数据库执行bcp in脚本时会产生大量的log,为保证bcp in进程不致因为log溢出而中断,应该设置database的选项“truncate log on cpt”为“true”。 虽然Sybase数据库是自优化的,但只要数据库是动态的,数据库碎片现象就会存在。在OLTP应用的场合,随着数据的不断增大,系统变得越来越缓慢,并且经常出现死锁时,应该检查数据库的碎片,并且采用以上方法进行优化。 实际上,应该定期做数据库的碎片整理,保证数据库的物理存储经常处于最优状态,相对于增加硬件而言,这是一种更好的保持数据库性能的低成本的途径。 lishixinzhi/Article/program/Oracle/201311/17019

如果长时间应用的话:

cmd中

cd %systemroot%\system32\wins

net stop wins

jetpack winsmdb tempmdb

net start wins

打开EMC,定位到服务器配置---邮箱,右键选中您要设置的数据库,选择属性,

2、 点击general栏,点击customize,如图1所示,您可以根据自己的实际需要来设置维护时间。

其实,我们也可以使用 Exchange Server 数据库实用程序 Eseutilexe /D,以脱机方式对数据库进行碎片整理和压缩。碎片整理选项可形成连续的已用存储空间,释放不用的存储空间,并压缩数据库,从而减小数据库文件的大小。

一、Eseutil 碎片整理的工作原理

在碎片整理过程中,Eseutil 将新建一个数据库,该数据库包含原数据库中的所有信息。碎片整理完成后,将删除原数据库或将其保存到用户指定的位置,然后将新版本重命名为原名称。如果该工具遇到错误记录,则将停止并显示错误消息。

执行脱机碎片整理时,Exchange 会生成一个数据库文件的临时副本。数据库文件中的表将被保留并复制到临时数据库中,但会丢弃空页并重建索引。因为此 *** 作将更改数据库中的物理页码,所以,不会原封不动地复制页。页之间的页链接将全部更新,并会对数据库中保留的所有页进行完整性检查。

二、数据库碎片整理所需的时长

完成碎片整理所需的时长取决于数据库的空白空间数量,与数据库文件的大小无关。例如,对同样包含 10 GB数据的 100 GB 数据库和 11 GB 数据库进行碎片整理,所用的时间几乎相同。

默认情况下,碎片整理完成之后,临时数据库将自动成为新的生产数据库,原生产数据库文件将被删除。如果相同逻辑驱动器上拥有与原数据库文件大小相同的可用空间,则可明显缩短碎片整理所需的时间。在这种情况下,临时数据库可以放在相同的逻辑驱动器上,最终副本几乎瞬时完成。

建议不要使用网络驱动器存储临时数据库。如果使用网络驱动器存储临时数据库,则将延长碎片整理所需的时间,并且任何暂时或永久的网络错误都将导致碎片整理过程终止。而由于碎片整理不可恢复,所以必须从头重新开始。

注意:只需要与碎片整理后的文件最终大小相同的额外逻辑驱动器磁盘空间。尽管无法精确地预测将回收的磁盘空间量,但仍应以 110%(建议值)的比例保留可用磁盘驱动器空间。

三、何时运行 脱机碎片整理命令

1 数据库中存在大量可以回收并且不会再使用的可用空间。

2 存在影响数据库文件索引的 ESE -1018 错误。在这种情况下,脱机碎片整理会重建索引。运行脱机碎片整理可以有效地消除此类损坏。

3 数据库文件已使用 Eseutil /P 进行修复。运行了修复之后,应对数据库文件执行 Eseutil 脱机碎片整理。

4 驻留在 Exchange 2007 中心传输服务器或边缘传输服务器上的队列数据库文件上出现邮件风暴。邮件风暴是指大量邮件,其填满传输队列的速度超过了传输服务可以达到的电子邮件处理速度。此行为使队列中填满了邮件,队列数据库将根据需要进行扩展。处理了风暴中的邮件并对数据库运行了联机碎片整理之后,部分可用空间会保留在数据库中。若要回收此可用空间并缩小数据库,则可运行 Eseutil /D 执行脱机数据库碎片整理。

四、何时不应该运行 脱机碎片整理命令

不应将运行 Eseutil 脱机碎片整理作为任何类型的标准维护活动。Exchange 会在夜间运行自动联机碎片整理,处理 Exchange 的日常维护。对于日常维护、月度维护或年度维护,都不需要运行脱机碎片整理。

如果数据库未处于一致状态,则不应运行 Eseutil 碎片整理。

如果可将邮箱移动到某个可用数据库,则不应运行 Eseutil 脱机碎片整理。这样做可以减少最终用户的停机时间。因为脱机碎片整理是通过脱机方式完成的,所以在碎片整理过程中,用户将无法访问其邮箱。为了减少对最终用户的影响,建议您通过执行移动邮箱 *** 作,将邮箱移动到其他可用数据库。

如果 ESE -1018 错误影响了数据库文件的数据部分,则不应运行 Eseutil 脱机碎片整理。在这种情况下,脱机碎片整理将检测到该错误,从而无法继续。

描述:sql server 数据库中使用条件查询就可以实现符合查询条件的数据记录显示出来。查询语法为:select from 表名 where 字段名=条件(语法说明:select后面的号代表的是所有字段显示出来。条件出的条件如果为字符型条件需要使用单引号引起来,如果是int类型不用引号),以下以某数据中的一张数据表user_user为例子,分别使用两种查询方式:

1、完整条件查询语法为:select from 表名 where 字段名=条件

查询语句:select from user_user where Dname='管理员'

以上就是关于Oracle数据库-PL/SQL整理(1)全部的内容,包括:Oracle数据库-PL/SQL整理(1)、如何对 Exchange 数据库进行碎片整理、我把数据导入了数据库,如何利用SQL提高数据整理的效率等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9319858.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存