oracle常用sql语句

1、快速备份表:

create table p_purchase_order_bak as select * from p_purchase_order

2、查询db_link详细信息

select * from dba_db_links

3、oracle 中如何查看某个表所涉及的存储过程

SELECT DISTINCT * FROM user_source
WHERE TYPE = 'PROCEDURE'
AND upper(text) LIKE '%PS_KL_ABS_002_DATA%';

4、oracle数据库查看和解除死锁

select sess.sid, 
sess.serial#,
lo.oracle_username, 
lo.os_user_name, 
ao.object_name, 
lo.locked_mode,
SESS.machine
from v$locked_object lo, 
dba_objects ao, 
v$session sess 
where ao.object_id = lo.object_id and lo.session_id = sess.sid;

5、杀死对应的进程

alter system kill session '738,1429';

7、ORACLE的闪回功能

1)查询该时间段这个表的状态

select * from 表名
as of timestamp to_timestamp('2018-10-12 9:30:00', 'yyyy-mm-dd hh24:mi:ss');

2)开启闪回

alter table 表名 enable row movement;

3)把表的状态闪回到这个时间段

flashback table 表名 ?to timestamp TO_TIMESTAMP('2018-10-12 9:30:00', 'yyyy-mm-dd hh24:mi:ss');

4)用完记得关闭闪回

alter table 表名 disable row movement

5)快照频率和保留时间都可以由用户修改。要查看当前的设置,可以使用下面的语句:

select snap_interval, retention
from dba_hist_wr_control;

这些 SQL 语句显示快照每小时采集一次,采集的数据保留 7 天。要修改设置-例如,快照时间间隔为 20 分钟,保留时间为两天-您可以发出以下命令。参数以分钟为单位。

begin
dbms_workload_repository.modify_snapshot_settings (
interval => 20,
retention => 2*24*60
);end;

8、oracle数据库查询当前库中有多少张表

select table_name from user_tables

9、索引相关

1)根据表名,查询一张表的索引

select * from user_indexes where table_name=upper('表名');

2)根据索引号,查询表索引字段

select * from user_ind_columns where index_name=('索引名');

3)根据索引名,查询创建索引的语句

select dbms_metadata.get_ddl('INDEX','索引名', ['用户名']) from dual ;
--['用户名']可省,默认为登录用户

PS:dbms_metadata.get_ddl还可以得到建表语句,如:

SELECT DBMS_METADATA.GET_DDL('TABLE','表名', ['用户名']) FROM DUAL ; //取单个表的建表语句,['用户名']可不输入,默认为登录用户
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u; //取用户下所有表的建表语句

10、存储空间可以用如下语句查

select * from user_segments s where s.BYTES is not null order by s.BYTES desc

11、查记录条数可以用如下语句

select *  from user_tables t where t.NUM_ROWS is not null order by t.NUM_ROWS desc

12、获取当天是当年的第几周

select to_char(sysdate,'iw') from dual;

13、获取当天是当月的第几周

sql语句写法有两种:
1、SELECT TO_CHAR(SYSDATE,'WW') - TO_CHAR(TRUNC(SYSDATE,'MM'),'WW') + 1 AS "weekOfMon" from dual; 
2、SELECT TO_CHAR(SYSDATE,'W') AS "weekOfMon" from dual;

 

转载于:https://www.cnblogs.com/nietzsche2019/p/11053193.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值