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版本