码迷,mamicode.com
首页 > 数据库 > 详细

database

时间:2015-08-27 18:07:19      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:

and production DB from Park Royal(A side) to Watford(B side)
--to extract blob column
SELECT ID,
  XMLPARSE(document UTL_RAW.CAST_TO_VARCHAR2(dbms_lob.substr(sourcemessage,2000,1))
  ||UTL_RAW.CAST_TO_VARCHAR2(dbms_lob.substr(sourcemessage,1000,2001)) WELLFORMED).getstringval() AS XML_Source_String
FROM
  (SELECT ID,
      sourcemessage
    FROM processsrcdata
    WHERE
     instanceid in (
                ‘8c5d4e4d-6b30-4193-ad69-312d6195c3b9‘,
    ‘24601a4e-ed76-466e-bd84-8261e7b36c7b‘,
    ‘aeb74aff-80df-4c59-9cb3-dbca43f76ed4‘,
    ‘b466d7b5-69fd-4df6-b381-b25261a7c2c5‘,
    ‘0b763b14-3c10-4b00-ad0c-df2d31766da5‘
                )
    ORDER BY id ASC
  )
ORDER BY ID DESC;
Zxcvb897
--MWS DB configure file
/bpms/wm/82/CCP/MWS01_8610/MWS/server/default/config/mws.db.xml


以下的技巧只针对PL/SQL Developer 6以上版本,版本5只有其中的部分特性。
1,右键菜单
在PL/SQL Developer(下面简称PLD)中的每一个文本编辑窗口,如SQL Window,Command Window和Porgram Window,右键点击某个对象名称,会弹出一个包含操作对象命令的菜单,我们这里称之为右键菜单。如下图:
对象类型可以是表,视图,同义词,存储过程和函数等。根据对象类型的不同,弹出的菜单也有区别。表和视图有View, Edit, Rename, Drop, Query data 和Edit data等功能。View和Edit分别是查看和修改表的结构信息,如字段,主键,索引和约束等。Query data相当于新打开一个窗口,并执行select * from 表。Edit data相当于新打开一个窗口,并执行select * from 表 for update。存储过程和函数有Test功能,选中后可以进入调试状态。
有时由于PLD识别错误,右键点击对象并不能出来正确的菜单,可以在对象所在的DDL或DML语句的前面,加上分号,这样PLD就能正确的判断出对象的类型
2,Select for Update
有时我们需要把一些数据导入数据库中,如果用UE拼Insert语句,会比较麻烦,而且操作性不强。PLD的SQL Window可以查询,新增,修改和删除表的内容。查询自不必说,而新增,删除和修改,只需在select语句后加入for update,对表进行行级锁定,然后点击窗口的锁型图标,即可进入编辑状态。
下面介绍一下如何从Excel中提取文本插入到数据库中
我们的Excel文件中有三列:
在数据库中建立临时表:
create table t1 (cino varchar2(100), contno varchar2(100), loanno varchar2(100))
然后在SQL Window中输入select t1 for update,并点击锁型鼠标,进入编辑状态:
用鼠标点击第一行的输入窗口,这时PLD会死锁几秒钟,然后可以见到光标在第一行的输入框中闪动,用鼠标把CINO, CONTNO, LOANNO选中:
进入Excel中,把需要插入数据库的内容选中,然后切换到PLD,按Ctrl + V:
点击√,然后再点击Commit按钮,则数据提交到表t1中,执行select * from t1可以看到内容:
3,PL/SQL Beautifier
PLD 6以上版本有对DML代码格式化的功能。在SQL Window或Program Window中选中部分代码(如果不选则对整个窗口的代码操作),在菜单中选Edit à PL/SQL Beautifier,得到格式化的代码。对于非法的DML语句或DDL语句,PLD将会在下方状态栏提示PL/SQL Beautifier could not parse text。
在缺省的状态下,PLD会把DML语句的每一个字段都排在单独的一行,这样不方便查看。在菜单中选Edit à PL/SQL Beautifier Options,进入Preferences窗口,选择Edit,进入配置文件编辑界面:
在标签栏选DML,在窗口中部的Select, Insert和Update组框中把Fit选中,然后点击Save,把配置文件保存到PLD的安装目录下,点击Close关闭。在Rules file中输入配置文件所在位置,点击OK,完成配置文件切换。这时再对代码进行格式化,就可以使每一个字段尽可能的在一行上了。
4,TNS Names
菜单Help à Support Info à TNS Names,可以查看Oracle的tnsnames.ora。
5,Copy to Excel
在SQL Window中执行Select语句,在结果出来以后,右键点击下面的数据区,选择Copy to Excel,可以把数据区的记录原样拷贝到Excel中。但有两点需要注意:一,field中不能以=开始,否则Excel会误认为是函数;二,数字不要超过17位,否则后面的位数将会置为0,但可以通过在数字前加‘来使Excel认为该field是文本,同时对于数据库中Numbe类型的字段,最好用to_char输出,不然可能会显示不正常


select dbms_metadata.get_ddl(‘TABLE‘,‘RECORDDETAILS‘,‘FMSRE‘) from dual;
Zeng, Zhenpeng [22:15]:
SELECT INST_ID,MACHINE,SERVICE_NAME, USERNAME
FROM GV$SESSION
WHERE
status =‘ACTIVE‘
GROUP BY INST_ID,MACHINE,SERVICE_NAME, USERNAME
ORDER BY 3 DESC;

select
b.uniqueness, a.index_name, a.table_name, a.column_name
from all_ind_columns a, all_indexes b
where a.index_name=b.index_name
and a.table_name = upper(‘table_name‘)
order by a.table_name, a.index_name, a.column_position;

This is query to check how many data in every 5 mins: (give an example in FRTP)

select floor(to_number(to_char(lastmodifieddate,‘mi‘))/5),to_char(lastmodifieddate,‘yyyy-mm-dd hh24‘),count(1)
from BPMS_FRTP.FRTP_TRADE_TRACKING
where
lastmodifieddate >  to_date(‘13-09-13 07:59:59‘,‘DD-MM-YY hh24:mi:ss‘)
and lastmodifieddate  < to_date(‘13-09-13 09:00:00‘,‘DD-MM-YY hh24:mi:ss‘)
and TPSYSTEM=‘SOPHIS‘
group by to_char(lastmodifieddate,‘yyyy-mm-dd hh24‘),
floor(to_number(to_char(lastmodifieddate,‘mi‘))/5)
order by to_char(lastmodifieddate,‘yyyy-mm-dd hh24‘), floor(to_number(to_char(lastmodifieddate,‘mi‘))/5)
;

This query will help you to get deadlock object:
select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;

This query will help you to get deadlock query:
select t2.username||‘      ‘||t2.sid||‘    ‘||t2.serial#||‘      ‘||t2.logon_time||‘    ‘||t3.sql_text from v$locked_object t1,v$session t2,v$sqltext t3 where t1.session_id=t2.sid and t2.sql_address=t3.address order by t2.logon_time;

Labels parameters

 

 ORACLE的临时表在应用系统中有很大的作用,它可以让用户只能够操作各自的数据中而互不干扰,不用担心会破坏或影响其他SESSION/TRANSACTION的数据,这也是数据安全的一种解决方法

    临时表分为SESSION、TRANSACTION两种,SESSION级的临时表数据在整个SESSION都存在,直到结束此次SESSION;而TRANSACTION级的临时表数据在TRANACTION结束后消失,即COMMIT/ROLLBACK或结束SESSION都会清除TRANACTION临时表数据。

    两种临时表的语法:

    create global temporary table 临时表名 on commit preserve|delete rows
    用preserve时就是SESSION级的临时表,用delete就是TRANSACTION级的临时表

    例:1、SESSION级临时表

    --建立临时表

create global temporary table temp_tbl(col_a varchar2(30))
    on commit preserve rows

     --插入数据

    insert into temp_tbl values(‘test session table‘)

    --提交 commit

    --查询数据

    select *from temp_tbl

    可以看到数据‘test session table‘记录还在

    --结束SESSION,重新登录,再查询数据select *from temp_tbl,这时候记录已不存在,因为系统在结束SESSION时自动清除记录

    2、TRANSACTION级临时表

    --建立临时表

create global temporary table temp_tbl(col_a varchar2(30))
on commit delete rows

    --插入数据

    insert into temp_tbl values(‘test transaction table‘)

    --提交
    commit
    --查询数据

    select *from temp_tbl

    这时候可以看到刚才插入的记录‘test transaction table‘已不存在了;同样,如果不提交而直接结束SESSION,重新登录记录也不存在。

 
 
 --total cursors open, by username & machine
select username,sum(value) OPEN_CURSOR,count(1) SESSION_CNT, ROUND(sum(value)/COUNT(1)) CURSOR_PER_SESSION from (
select a.value, s.username, s.sid, s.serial#
from v$sesstat a, v$statname b, v$session s
where a.statistic# = b.statistic#  and s.sid=a.sid
and b.name = ‘opened cursors current‘
) group by username
order by sum(value) desc;


-- Open cursor for individual session
select a.value, s.username, s.sid, s.serial#,s.status,to_char(PREV_EXEC_START,‘YYYY-MM-DD HH24:MI‘), terminal
from v$sesstat a, v$statname b, v$session s
where a.statistic# = b.statistic#  and s.sid=a.sid
and b.name = ‘opened cursors current‘
order by a.value desc;

select ‘All‘,‘All‘,count(1) from v$open_cursor
union all
select * from (
select user_name,sql_text,count(1) from v$open_cursor
group by user_name,sql_text
order by count(1) desc
);

select t1.cnt,t2.* from
(
select * from (
select user_name,max(sql_id) sql_id,sql_text,count(*) cnt from Gv$open_Cursor
where user_name=‘WM_EQUITYDOC_MWS1CL1‘ and cursor_type=‘OPEN‘
group by user_name,sql_text order by 4 desc
) where rownum<11
) t1 left join v$sqlarea t2 on t1.sql_id=t2.sql_id
order by cnt desc;


SELECT  MACHINE,TERMINAL,COUNT(1) FROM V$SESSION
WHERE USERNAME=‘WM_EQUITYDOC_MWS1CL1‘
GROUP BY MACHINE,TERMINAL;

select * from Gv$open_Cursor where user_name=‘WM_EQUITYDOC_MWS1CL1‘ and cursor_type=‘OPEN‘  and sql_text in (
select sql_text from
(
select user_name,sql_text,count(*) from Gv$open_Cursor
where user_name=‘WM_EQUITYDOC_MWS1CL1‘ and cursor_type=‘OPEN‘
group by user_name,sql_text order by 3 desc
) where rownum<11
);

select t1.cnt,t2.* from
(
select * from (
select user_name,max(sql_id) sql_id,sql_text,count(*) cnt from Gv$open_Cursor
where user_name=‘WM_EQUITYDOC_MWS1CL1‘ and cursor_type=‘OPEN‘
group by user_name,sql_text order by 4 desc
) where rownum<11
) t1 left join v$sqlarea t2 on t1.sql_id=t2.sql_id
order by cnt desc;


select * from v$db_object_cache
order by sharable_mem desc;

database

标签:

原文地址:http://www.cnblogs.com/feiniaobinghe/p/4763954.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!