笔记

211 阅读3分钟

常用语句

常用语句 导出数据库语句 创建用户语句 用户授权语句执行存储过程人员单位地点同步创建DB_LINK删除用户及其名下的表查看表空间和利用率查看某一表空间下的用户创建表空间Linux查看tomcat日志Linux打压缩包命令触发器PermGen space问题解决

导出数据库语句

exp ck_dzyh/ck_dzyh@172.16.100.135:1521/shitan file = d:/dzyh20221205.dmp

创建用户语句

create user 用户名 default tablespace googosoft identified by 密码;

用户授权语句

grant dba,create session,create table  to 用户名;
grant select any table to 用户名;
grant update any table to 用户名;
grant delete any table to 用户名;
grant insert any table to 用户名;

执行存储过程

EXECUTE 存储过程名;

人员单位地点同步

create or replace procedure proc_sys_data_sync as
​
  ingter int;
  v_cnt  number;
  v_dwjc number;
​
beginfor item in (select rybh, rygh, xm, dwbh, xb, ryzt, mm
                 from zcgl.gx_sys_ryb) loop
    select count(1) into ingter from gx_sys_ryb where rybh = item.rybh;
    if ingter = 0 then
      insert into gx_sys_ryb
        (rybh, rygh, xm, dwbh, xb, ryzt, mm)
      values
        (item.rybh,
         item.rygh,
         item.xm,
         item.dwbh,
         item.xb,
         item.ryzt,
         item.mm);
​
    end if;
​
    if ingter <> 0 then
      update gx_sys_ryb
         set (rybh, rygh, xm, dwbh, xb, ryzt, mm) =
             (select item.rybh,
                     item.rygh,
                     item.xm,
                     item.dwbh,
                     item.xb,
                     item.ryzt,
                     item.mm
                from dual)
       where rybh = item.rybh;
    end if;
​
  end loop;
​
 
  for item in (select ddbh,sjdd,dwbh,ddzt,ddjc,pxxh,ddh,mc
                 from zcgl.zc_sys_ddb) loop
    select count(1) into ingter from dzny_sys_ddb where ddbh = item.ddbh;
    if ingter = 0 then
      insert into dzny_sys_ddb
        (ddbh,sjdd,dwbh,ddzt,ddjc,pxxh,ddh,mc)
      values
        (item.ddbh,
         item.sjdd,
         item.dwbh,
         item.ddzt,
         item.ddjc,
         item.pxxh,
         item.ddh,
         item.mc);
​
    end if;
​
    if ingter <> 0 then
      update dzny_sys_ddb
         set (ddbh,sjdd,dwbh,ddzt,ddjc,pxxh,ddh,mc) =
             (select item.ddbh,
                     item.sjdd,
                     item.dwbh,
                     item.ddzt,
                     item.ddjc,
                     item.pxxh,
                     item.ddh,
                     item.mc
                from dual)
       where ddbh = item.ddbh;
    end if;
​
  end loop;
​
  for item in (select dwbh, sjdw, nvl(bmh,dwbh) bmh, mc, dwxz, dwzt from zcgl.gx_sys_dwb) loop
    select count(1) into ingter from gx_sys_dwb where dwbh = item.dwbh;
    if ingter = 0 then
      insert into gx_sys_dwb
        (dwbh, sjdw, bmh, mc, dwxz, dwzt, dwjc,sysbz)
      values
        (item.dwbh,
         item.sjdw,
         item.bmh,
         item.mc,
         item.dwxz,
         item.dwzt,
         '1',
     '1');
​
    end if;
​
    if ingter <> 0 then
      update gx_sys_dwb
         set (dwbh, sjdw, bmh, mc, dwxz, dwzt) =
             (select item.dwbh,
                     item.sjdw,
                     item.bmh,
                     item.mc,
                     item.dwxz,
                     item.dwzt
                from dual)
       where dwbh = item.dwbh;
    end if;
​
  end loop;
  commit;
​
  update gx_sys_dwb set dwjc = 1 where sjdw = '000000';
  update gx_sys_dwb set dwjc = 0 where dwjc <> 1;
  select count(*)
    into v_cnt
    from gx_sys_dwb
   where sjdw in (select dwbh from gx_sys_dwb where dwjc = 1);
  v_dwjc := 1;
  while v_cnt > 0 loop
    update gx_sys_dwb d
       set dwjc =
           (v_dwjc + 1)
     where sjdw in (select dwbh from gx_sys_dwb where dwjc = v_dwjc);
    v_dwjc := v_dwjc + 1;
    select count(*)
      into v_cnt
      from gx_sys_dwb
     where sjdw in (select dwbh from gx_sys_dwb where dwjc = v_dwjc);
  end loop;
​
  commit;
end;

创建DB_LINK

create public database link RENSHI_LINK
connect to renshi identified by "renshi"
using '172.16.97.26/szhpt';

删除用户及其名下的表

DROP USER 用户名 CASCADE;

查看表空间和利用率

SELECT a.tablespace_name "表空间名",
       
       total / 1024 / 1024 "表空间大小单位M",
       
       free / 1024 / 1024 "表空间剩余大小单位M",
       
       (total - free) / 1024 / 1024 "表空间使用大小单位M",
       
       Round((total - free) / total, 4) * 100 "使用率   [[%]]"FROM
       
       (SELECT tablespace_name, Sum(bytes) free
          FROM DBA_FREE_SPACE
         GROUP BY tablespace_name) a,
       
       (SELECT tablespace_name,
               
               Sum(bytes) total
          FROM DBA_DATA_FILES
         GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name;

查看某一表空间下的用户

select distinct s.owner from dba_segments s where s.tablespace_name ='USERS';

创建表空间

CREATE TABLESPACE GOOGOSOFT DATAFILE 'GOOGOSOFT.DBF' SIZE 500M AUTOEXTEND ON NEXT 50M MAXSIZE 20480M EXTENT MANAGEMENT LOCAL;

Linux查看tomcat日志

tail -f catalina.out

Linux打压缩包命令

zip -r dzyh.zip dzyh

触发器

CREATE OR REPLACE TRIGGER TYSYS_DZYH_DWB_TRIGGER
    after insert or update or delete on GX_SYS_DWB
  for each row
declare
  cnt  number;
  pragma autonomous_transaction;
  -- local variables here
begin
  if inserting then
    select count(1) into cnt from DZYH.GX_SYS_DWB where DWBH = :new.DWBH;
    if(cnt=0) then
    insert into DZYH.GX_SYS_DWB(
           DWBH,MC,JC,DZ,DWXZ,JLRQ,DWLD,FGLD,SJDW,DWZT,PXXH,BZ,BMH,BMSX,DWJC
    )
    values (:new.DWBH ,:new.MC ,:new.JC,:new.DZ,:new.DWXZ,:new.JLRQ,:new.DWLD,:new.FGLD,:new.SJDW,:new.DWZT,:new.PXXH,:new.BZ,:new.BMH,:new.BMSX,:new.DWJC );
    else
     update DZYH.GX_SYS_DWB set  DWBH =:new.DWBH,MC =:new.MC,JC =:new.JC,DZ =:new.DZ,DWXZ =:new.DWXZ,JLRQ =:new.JLRQ,DWLD =:new.DWLD,FGLD =:new.FGLD,SJDW =:new.SJDW,DWZT =:new.DWZT,PXXH =:new.PXXH,BZ =:new.BZ,BMH =:new.BMH,BMSX =:new.BMSX,DWJC =:new.DWJC;
    end if;
  end if;
  commit;
end;

PermGen space问题解决

双击tomcat,点击图中位置

在图中位置添加-Xms256m -Xmx1024m -XX:MaxNewSize=512m -XX:MaxPermSize=512m

Eclipse设置热部署

热部署 : 就是容器状态在运行的情况下重新部署整个项目.在这种情况下一般整个内存会清空,重新加载.简单来说就是Tomcat或者其他的web服务器会帮我们重新加载项目.这种方式可能会造成sessin丢失等情况.
热加载 : 就是容器状态在运行的情况下重新加载改变编译后的类.在这种情况下内存不会清空,sessin不会丢失,但容易造成内存溢出,或者找不到方法。因为内存无法转变成对像. 一般改变类的结构和模型就会有异常,在已经有的变量和方法中改变是不会出问题的

1.双击Tomcat,打开Tomcat的配置界面

image

配置界面如图所示

image

2.点击图中位置

image

如果Modules auto reload by default已经选中,需要点击取消

Oracle锁表

查看是否被锁表

select   p.spid,c.object_name,b.session_id,b.oracle_username,b.os_user_name   from   v$process   p,v$session   a,   v$locked_object   b,all_objects   c   where   p.addr=a.paddr   and   a.process=b.process   and   c.object_id=b.object_id ;

查询锁表原因

select l.session_id sid, 
       s.serial#, 
       l.locked_mode, 
       l.oracle_username, 
       s.user#, 
       l.os_user_name, 
       s.machine, 
       s.terminal, 
       a.sql_text, 
       a.action
       from v$sqlarea a, v$session s, v$locked_object l 
       where l.session_id = s.sid and s.prev_sql_addr = a.address order by sid, s.serial#;

查看被锁的表

select a.object_name,b.session_id,c.serial#,c.program,c.username,c.command,c.machine,c.lockwait from all_objects a,v$locked_object b,v$session c where a.object_id=b.object_id and c.sid=b.session_id;

解锁方法

alter system kill session '上面查询出来的spid';