1. 实时查询最耗CPU资源的SQL语句
1. 先通过top命令查看产用资源较多的spid号 2.查询当前耗时的会话ID,用户名,sqlID等: select sid,serial#,machine,username,program,sql_hash_value,sql_id, to_char(logon_time,'yyyy/mm/dd hh24:mi:ss') as login_time from v$session where paddr in (select addr from v$process where spid in ('5648612','256523')); 3. 如果上一步sql_id或者 hash_value不为空,则可用v$sqlarea查出当前正在使用的sql select sql_text from v$sqltext_with_newlines where hash_value = &hash_value order by piece; select * from v$sql where sql_id=''
2. dblink
create database link ORC connect to SUNCPS identified by "123456" using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.1.36)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) )';
3. 正则表达式
1) REGEXP_LIKE :与LIKE的功能相似 2) REGEXP_INSTR :与INSTR的功能相似 : 返回字符的个数 3) REGEXP_SUBSTR :与SUBSTR的功能相似 : 截取字符串 4) REGEXP_REPLACE :与REPLACE的功能相似 在新的函数中使用正则表达式来代替通配符‘%’和‘_’。
'^' 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。 '$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 'n' 或 'r'。 '.' 匹配除换行符 n之外的任何单字符。 '?' 匹配前面的子表达式零次或一次。 '+' 匹配前面的子表达式一次或多次。 '*' 匹配前面的子表达式零次或多次。 '|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的字符串。 '( )' 标记一个子表达式的开始和结束位置。 '[]' 标记一个中括号表达式。 '{m,n}' 一个精确地出现次数范围,m=<出现次数<=n,'{m}'表示出现m次,'{m,}'表示至少出现m次。 num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。
字符簇: [[:alpha:]] 任何字母。 [[:digit:]] 任何数字。 [[:alnum:]] 任何字母和数字。 [[:space:]] 任何白字符。 [[:upper:]] 任何大写字母。 [[:lower:]] 任何小写字母。 [[:punct:]] 任何标点符号。 [[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。 各种操作符的运算优先级 1. 转义符 2. (), (?:), (?=), [] 圆括号和方括号 3. *, +, ?, {n}, {n,}, {n,m} 限定符 4. ^, $, anymetacharacter 位置和顺序 5. | “或”操作
示例
一、REGEXP_LIKE /* Formatted on 2009/11/11 19:03 (Formatter Plus v4.8.8) */ SELECT * FROM scott.emp WHERE REGEXP_LIKE (ename, '^a{1,3}'); SELECT * FROM scott.emp WHERE REGEXP_LIKE (ename, 'a{1,2}'); SELECT * FROM scott.emp WHERE REGEXP_LIKE (ename, '^a.*e$'); SELECT * FROM scott.emp WHERE REGEXP_LIKE (ename, '^[[:lower:]]|[[:digit:]]'); SELECT * FROM scott.emp WHERE REGEXP_LIKE (ename, '^[[:lower:]]'); SELECT sal FROM scott.emp WHERE REGEXP_LIKE (sal, '[^[:digit:]]'); SELECT sal FROM scott.emp WHERE REGEXP_LIKE (sal, '^[^[:digit:]]'); 二、REGEXP_INSTR /* Formatted on 2009/11/11 19:03 (Formatter Plus v4.8.8) */ SELECT REGEXP_INSTR (ename, '[[:digit:]]$') FROM scott.emp; SELECT REGEXP_INSTR (mc, '[[:digit:]]+$') FROM scott.emp; SELECT REGEXP_INSTR ('The price is $400.', '$[[:digit:]]+') FROM DUAL; SELECT REGEXP_INSTR ('onetwothree', '[^[[:lower:]]]') FROM DUAL; SELECT REGEXP_INSTR (',,,,,', '[^,]*') FROM DUAL; SELECT REGEXP_INSTR (',,,,,', '[^,]') FROM DUAL; 三、REGEXP_SUBSTR /* Formatted on 2009/11/11 19:04 (Formatter Plus v4.8.8) */ SELECT REGEXP_SUBSTR (ename, '[a-z]+') FROM scott.emp; SELECT REGEXP_SUBSTR (sal, '[0-9]+') FROM scott.emp; SELECT REGEXP_SUBSTR ('aababcde', '^a.*b') FROM DUAL; 四、REGEXP_REPLACE /* Formatted on 2009/11/11 19:06 (Formatter Plus v4.8.8) */ SELECT REGEXP_REPLACE ('Joe Smith', '(){2,}', ',') AS rx_replace FROM DUAL; SELECT REGEXP_REPLACE ('aa bb cc', '(.*) (.*) (.*)', '3, 2, 1') FROM DUAL;
4. Unix基本命令
ps--显示进程 grep--搜索文件中的某种文本模式 mailx--读取或者发送mail cat--连接文件或者显示它们 cut--选择显示的列 awk--模式匹配语言 df--显示剩余的磁盘空间
示例
1. 显示服务器上的可用实例: $ ps -ef| grep smon 2. 显示服务器上的可用监听器: $ ps -ef grep listener grep -v grep (grep命令应该加上-i参数,即grep -i listener,该参数的作用是忽略大小写,因为有些时候listener是大写的,这时就会看不到结果) $ ps -ef|grep -i listener 3. 查看Oracle存档目录的文件系统使用情况 $ df -k | grep /data 4. 统计alter.log文件中的行数: $ cat alert_PPRD10.log | wc -l $ more alert_PPRD10.log | wc -l 5. 列出alert.log文件中的全部Oracle错误信息: $ grep ORA-* alert.log 6. CRONTAB基本 一个crontab文件中包含有六个字段: 分钟 0-59 小时 0-23 月中的第几天 1-31 月份 1 - 12 星期几 0 - 6, with 0 = Sunday 7. Unix命令或者Shell脚本 要编辑一个crontab文件,输入: Crontab -e 要查看一个crontab文件,输入: Crontab -l 0 4 * * 5 /dba/admin/analyze_table.ksh 30 3 * * 3,6 /dba/admin/hotbackup.ksh /dev/null 2>&1 在上面的例子中,第一行显示了一个分析表的脚本在每个星期5的4:00am运行。第二行显示了一个执行热备份的脚本在每个周三和周六的3:00a.m.运行。