Oracle 常用SQL摘录

来源:互联网 发布:获取网站php源代码 编辑:程序博客网 时间:2024/06/15 23:53

select count(*) from WBXRPLTASK where status=0 and time_received > '2011-11-24 00:00:00';

 

select * from hf_file_14 where  createtime  >  TO_DATE('01/13/2012 23:38:28', 'MM/DD/YYYY HH24:MI:SS') order by createtime

select TO_DATE('01/13/2012 23:38:28', 'MM/DD/YYYY HH24:MI:SS') from dual

 

启动故障1:

SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/oracle/dbs/initwilson.ora'

cp /u01/admin/fujian/pfile/init.ora.0132011164612  /u01/oracle/dbs/initwilson.ora

启动故障2

SQL> startup
ORA-27154: post/wait create failed
ORA-27300: OS system dependent operation:semget failed with status: 28
ORA-27301: OS failure message: No space left on device
ORA-27302: failure occurred at: sskgpcreates 

sskgpsemsper函数可以很简单的猜测是跟semaphore有关,而ORA-27301则是No space left on device,那么很容易判断应该是操作系统内核参数中semaphore设置的问题。
[root@dbserver ~]# /sbin/sysctl -a | grep semkernel.sem = 250        100     32      128

而实际上,安装Oracle11gR2的semaphore需求是:
semmsl:250
semmns:32000
semopm:100
semmni:128
很明显semmns和semopm都不足。
[root@dbserver ~]# /sbin/sysctl -w kernel.sem="250 32000 100 128"
kernel.sem = 250 32000 100 128
[root@dbserver ~]# /sbin/sysctl -a | grep sem
kernel.sem = 250        32000   100     128
[root@dbserver ~]# echo "kernel.sem = 250 32000 100 128"  >> /etc/sysctl.conf
[root@dbserver ~]# 

ORACLE相关工具
$ lsnrctl status|start
$ dbca
$ netca
$ echo $ORACLE_SID   

登陆sqlplus并启动oracle
[oracle@localhost ~]$ sqlplus /nolog
SQL> conn /as sysdba    
Connected to an idle instance.
SQL> startup
ORACLE instance started.

 

查询版本,用户,日期,实例

select * from v$version
select * from dba_users;
select sysdate from dual
select * from v$instance

 

删除表数据:
truncate table wbxc_queue_2
select status, count(*) from WBXRPLTASK  group by status having count(*) > 0;
select wbxc_queue_1.DATA,wbxc_queue_2.DATA from wbxc_queue_1,wbxc_queue_2

 

插入表数据:

insert into file_stats values ('5ee647e69b5c4a2f96796c63bd79d92f4d31860f','SZ','HF',6,(select sysdate from dual), (select sysdate from dual))

查询并显示字段中某个值:

{"id":0,"name":"BATCH_ADDED","path":"/A/WF2QWR4RQPSED8DTTQOUXSMYFS/","uuids":["478fb5de-5cb9-49cf-85b7-a58bfd964385"]}
select instr(data,'["') from wbxc_queue_3
select SUBSTR(data,instr(data,'["'),40) from wbxc_queue_3

 

查询数据库中所有的表(同时拥有者为DMS):

SELECT * from all_tables where owner='DMS'

 

查询数据库表中的行:

SELECT COLUMN_NAME FROM User_Tab_Columns WHERE table_name='HF_NODE_16' (表名大写)

 

查询表的行:

SELECT COLUMN_NAME FROM User_Tab_Columns WHERE table_name='HF_NODE_16'order by column_id

 

显示表的结构

desc  hf_node_16

查询时间:

select CREATETIME from file_stats

select sysdate  from dual

select (sysdate-CREATETIME)*24 from file_stats

 

查询第一条记录:

oracle: select field from table_name where rownum=1

ms sql: select top k from table_name(k=1可以改变k的值)

mysql:   select field from table_name where ...limit k(k=1可以改变k的值)

 

登陆MYSQL切换数据库

gsbv6001:root > mysql -u root -ppass

mysql> use replication;show tables;

 

撤销查询:

control+<c> 撤销查询
control+<z>
[2]+  Stopped                 mysql -u root -ppass

 

Group by

select queue_name,count(*) from wbxc_queue_2 group by QUEUE_NAME 

select x.ID,y.ID from wbxc_queue_1 x, wbxc_queue_2 y 

join on

select * from wbxc_queue_1 where DMI is null

select * from wbxc_queue_1 where DMI is not null


DECODE函数使用, 可以理解成是一个判断分类函数
SELECT SUM(DECODE(nian_ling,25,1,0)),SUM(DECODE(nian_ling,24,1,0)) FROM xue_sheng;
25岁以上的加1


不能用=null

select * from HF_file_1 where file_digest='e431f625ec5c18da5ee55eb45f78aefdbea6e4fa' and dc_id='HF'  and extendedpath is null

双引号只能用于分隔标识符,不能用于分隔字符串。     
为保持与现有应用程序的兼容性,SQL   Server   并不完全强制该规则。如果字符串没有超过标识符的长度,则该字符串可包含在双引号内。但不建议这样做。   
单引号必须用来包含字符串,不能用于分隔标识符。

update WBXC_JOB set STATE="COMPLETE" where ID='219df4d8-669b-4a10-8013-00a9f306d992-16L'

这句话写的对吗 ORA-00904: "COMPLETE": invalid identifier

双引号的作用是:如果创建对象的时候,对象名、字段名加双引号,则表示Oracle将严格区分大小写,否则Oracl都默认大写。而单引号则表示:这个加了单引号的字段是一个字类似字符串,并不区分大小写。单引号用于标识字符与数字的区别,当指定字符串文本时,必须用单引号将字符串文本引住。

字符,单引号

字段:双引号

 

 

语法:
查询表达式1 UNION [ALL] 查询表达式2
select fields from tableA UNION select fields from tableB

查询表达式:
查询表达式或查询规范,用以返回与另一个查询规范或查询表达式所返回的数据合并的数据。作为 UNION 运算一部分的列定义可以不相同,但它们必须通过隐式转换实现兼容。如果数据类型不同,则根据数据类型优先顺序规则确定所产生的数据类型。如果类型相同,但精度、小数位数或长度不同,则根据用于合并表达式的相同规则来确定结果。
UNION:
指定合并多个结果集并将其作为单个结果集返回。使用UNION会自动排除相同的记录,删除重复行。(类似与单一查询的DISTINCT。)
ALL:
将全部行并入结果中。其中包括重复行。如果未指定该参数,则删除重复行。



后发现两个日期格式差异:

TO_DATE('2009-09-11 14:33:04.0','YYYY-MM-DD hh24:mi:ss'),

TO_DATE('2009-09-17 08:50:44','YYYY-MM-DD hh24:mi:ss'),

由于第一条日期是从其他表中读取的日期。所以在最后出现“.0”。发现在Oracle数据录入中'yyyy-mm-dd hh24:mi:ff'是不允许的。

后将数据用字符串截取date.substring(0,date.lastIndexOf("."));

数据插入无误。

问题解决


方法2:

to_date('"+new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date(createtime.getTime()))+"' , 'yyyy-mm-dd hh24:mi:ss')

 

 

select * from table  where CREATETIME  Between trunc(to_date('2011-9-30 07:00:00','yyyy-mm-dd hh24:mi:ss'))
 AND trunc(to_date('2011-10-1 07:00:00','yyyy-mm-dd hh24:mi:ss')) 



create table employees_log(
who varchar2(30));
 

drop trigger dmi_trigger

desc dmi_trigger

CREATE OR REPLACE TRIGGER "DEVDMS".dmi_trigger BEFORE INSERT ON WBXC_TIMER_JOB_RUNNING FOR EACH ROW
BEGIN
Insert into dmi_log(who) Values(:new.SCHEDULER_NAME);
END;
/


select * from v$version 查看oracle版本



原创粉丝点击