Oracle常用语句
1、查看某个字段在哪张表
select owner, table_name
from dba_tab_columns
where lower(column_name)=‘字段名‘;
2、导出序列
SELECT ‘ create sequence username.‘ || SEQUENCE_NAME ||
‘ minvalue ‘ || MIN_VALUE ||
‘ maxvalue ‘ || MAX_VALUE ||
‘ start with ‘ || LAST_NUMBER ||
‘ increment by ‘ || INCREMENT_BY ||
‘ cache ‘ || CACHE_SIZE || ‘ ;‘
FROM USER_SEQUENCES;
3、批量增加序列
declare
VC_SQL varchar2(200);
N_NUM NUMBER;
begin
FOR I IN 1 .. 100 LOOP
for a in (select * from user_sequences t where t.sequence_name like ‘SEQ%‘ ) loop
VC_SQL := ‘select ‘ || a.sequence_name || ‘.NEXTVAL from dual ‘;
execute immediate VC_SQL
INTO N_NUM;
end loop;
END LOOP ;
end;
4、修改数据库用户密码有效期
数据库用户密码默认有效期是180天,所以差不多半年左右会出现,为了防止以后再出现,
建议把密码设为永久性的,步骤如下:
cmd sqlplu / as sysdba
(1)查看用户的proifle是哪个,一般是default: sql>SELECT username,PROFILE FROM dba_users;
(2)查看指定概要文件(如default)的密码有效期设置:
sql>SELECT * FROM dba_profiles s WHERE s.profile=‘DEFAULT‘ AND resource_name=‘PASSWORD_LIFE_TIME‘;
(3)将密码有效期由默认的180天修改成“无限制”:
sql>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改之后不需要重启动数据库,会立即生效。
?5、创建dblink
create database link linkname
connect to linknameidentified by pwd
using ’(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ipaddress)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)’;
6、oracle定时器(Job)各时间段写法汇总
1)、 每分钟执行
Interval => TRUNC(sysdate,‘mi‘) + 1 / (24*60) 2、 每天定时执行
例如:每天的凌晨2点执行
Interval => TRUNC(sysdate) + 1 +2 / (24)
2)、 每半个小时执行
sysdate+30/1440
3)、 每个小时的第15分钟执行
例如:8:15,9:15,10:15...:
trunc(sysdate,‘hh‘)+75/1440。
4)、 每周定时执行
例如:每周一凌晨2点执行
Interval => TRUNC(next_day(sysdate,2))+2/24 --星期一,一周的第二天
5)、 每个星期日执行
next_day(trunc(sysdate),‘SUNDAY‘)
6)、 每月定时执行
例如:每月1日凌晨2点执行
Interval =>TRUNC(LAST_DAY(SYSDATE))+1+2/24
7)、 每季度定时执行
例如每季度的第一天凌晨2点执行
Interval => TRUNC(ADD_MONTHS(SYSDATE,3),‘Q‘) + 2/24
8)、 每半年定时执行
例如:每年7月1日和1月1日凌晨2点
Interval => ADD_MONTHS(trunc(sysdate,‘yyyy‘),6)+2/24
9)、 每年定时执行
例如:每年1月1日凌晨2点执行
Interval =>ADD_MONTHS(trunc(sysdate,‘yyyy‘),12)+2/24
10)、 每天下午20点执行
trunc(SYSDATE,‘dd‘) + 20/24或trunc(sysdate+1)+ 20/24
11)、 每周五下午 11:10:20执行
trunc(next_day(sysdate,‘星期五‘))+23/24+10/1440+20/86400
12)、 每月15日下午 11:10:20执行
last_day(add_months(TRUNC(SYSDATE,‘MM‘),-1))+15 +23/24+10/1440+20/86400
13)、 每年6月5日下午 11:10:20执行
trunc(to_date(to_char(sysdate,‘yyyy‘)+1||‘0605‘,‘yyyy-mm-dd‘))+23/24+10/1440+20/86400
7、查看连接数
select * from gv$license;
8、死锁查询
/*查找死锁*/ SELECT /*+ rule */ s.SID||‘,‘||s.SERIAL#,s.username,s.client_info, decode(l.type,‘TM‘,‘TABLE LOCK‘,‘TX‘,‘ROW LOCK‘,NULL) LOCK_LEVEL, o.owner,o.object_name,o.object_type, s.terminal,s.machine,s.program,s.osuser,a.SQL_TEXT FROM v$session s,v$lock l,dba_objects o,v$sqlarea a WHERE l.sid = s.sid AND l.id1 = o.object_id(+) and s.PREV_SQL_ADDR = a.ADDRESS AND s.username is NOT NULL order by s.CLIENT_INFO
找到谁持有锁不释放 SELECT /*+ rule */ s.username, decode(l.type, ‘TM‘, ‘TABLE LOCK‘,‘TX‘, ‘ROW LOCK‘,NULL) LOCK_LEVEL, o.object_name, s.sid, l.block FROM v$session s,v$lock l,dba_objects o WHERE l.sid = s.sid AND l.id1 = o.object_id(+) AND s.username is NOT NULL order by s.username; 如果block列为1,说明对应的sid会话正持有object_name锁,其它和object_name有关的锁在等待sid提交或回滚。
/*杀死锁*/ alter system disconnect session ‘935,28622‘ immediate;
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。