oracle创建用户
--先用管理员身份登录数据库
--创建表空间
create tablespace 表空间的名称
datafile \'表空间所对应的DBF数据文件存储路径\'
size 数据文件的初始大小
autoextend on next 数据文件的增量大小
maxsize unlimited;--数据文件最大大小,无限制。
--示例
create tablespace TestSpace
datafile \'C:\app\Administrator\oradata\orcl\TestSpace.dbf\'
size 10M autoextend on next 1M
maxsize unlimited;
--创建临时表空间
create temporary tablespace 表空间的名称
tempfile \'表空间存储的路径\'
size 数据文件的初始大小
autoextend on next 数据文件的增量大小
maxsize unlimited;--数据文件最大大小,无限制。
--示例
create temporary tablespace tempspace
tempfile \'C:\app\Administrator\oradata\orcl\tempspace.dbf\'
size 10M autoextend on next 1M
maxsize unlimited;
--创建用户
create user 账户名称 identified by 登录密码
default tablespace 账户使用的数据表空间
temporary tablespace 账户使用的临时表空间
--示例
create user king identified by test
default tablespace testspace
temporary tablespace tempspace
--给用户授权
grant connect,resource to 用户名;
grant create any view to 用户名;
--直接授权DBA
grant dba to 用户名;
杀死锁函数,包,过程进程:
查v$access视图
select * from v$access where owner=\'过程的所属用户\' and name=\'刚才查到的过程名\'
3.查出sid和serial#
查v$session视图
select sid,serial#,paddr from v$session where sid=\'刚才查到的sid\';
杀死session 报: ora-00031:标记要终止的会话 。
按照以下处理:杀死线程。
select spid, osuser, s.program
from v$session s, v$process p
where s.paddr = p.addr
and s.sid =197;
收集统计信息:
HSTA 用户名 ;tprofitdealcurrentdetails 为需要收集得表名
begin
dbms_stats.gather_table_stats(ownname => \'HSTA\',tabname => \'tprofitdealcurrentdetails\',estimate_percent => 10,method_opt=> \'for all indexed columns\');
end;
关于oracle 截位函数:TRUNC 的使用
--oracle 函数round 是用于四舍五入, 格式:TRUNC(data[,fmt])
--oracle 函数TRUNC 是用于截位, 格式:TRUNC(data[,fmt])
--Oracle trunc()函数的用法
/**************日期********************/
/*1.*/select trunc(sysdate) from dual; --2016/3/3 今天的日期为2016/3/3
/*2.*/select trunc(sysdate, \'mm\') from dual ; --2016/3/1 返回当月第一天. \'mm\'等同于\'month\'
/*3.*/select trunc(sysdate,\'yy\') from dual ; --2016/1/1 返回当年第一天. \'yy\'等同于\'year\'
/*4.*/select trunc(sysdate,\'dd\') from dual ; --22016/3/3 返回当前年月日. \'dd\'等同于第1个不提供格式符
/*5.*/select trunc(sysdate,\'yyyy\') from dual ; --2016/1/1 返回当年第一天. \'yyyy\'等同于\'year\'
/*6.*/select trunc(sysdate,\'d\') from dual ; --2016/2/28 (星期天)返回当前星期的第一天. \'d\'等同于\'day\'
/*7.*/select trunc(sysdate, \'hh\') from dual; --2016/3/3 14:00:00 当前时间为14:41.
/*8.*/select trunc(sysdate, \'mi\') from dual; --2016/3/3 14:41:00 TRUNC()函数没有秒的精确.
/***************数字********************/
/*
TRUNC(number,num_digits)
Number 需要截尾取整的数字。
Num_digits 用于指定取整精度的数字。Num_digits 的默认值为 0。
TRUNC()函数截取时不进行四舍五入
*/
/*9.*/select trunc(123.458) from dual; --123
/*10.*/select trunc(123.458,0) from dual; --123
/*11.*/select trunc(123.458,1) from dual; --123.4
/*12.*/select trunc(123.458,-1) from dual; --120
/*13.*/select trunc(123.458,-4) from dual; --0
/*14.*/select trunc(123.458,4) from dual; --123.458
/*15.*/select trunc(123) from dual; --123
/*16.*/select trunc(123,1) from dual; --123
/*17.*/select trunc(123,-1) from dual; --120
查oracle中表字段信息
--查表所在空间,
select table_name,tablespace_name,temporary from user_tables where table_name=\'TFUNDINFO\';
--查表字段明细信息
select column_name,data_type ,data_length from user_tab_columns where table_name=\'TFUNDINFO\';
表结构
添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….);
修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….);
删除字段的语法:alter table tablename drop (column);
--举例:
--创建表
create table test1
(id varchar2(20) not null);
--添加字段
alter table test1 add (sss varchar2(16) default 0 not null);
--修改字段
alter table test1 modify (sss varchar2(15) default 0 null);
--删除字段
alter table test1 drop (sss);
ORACLE 函数(lpad,add_months,COALESCE,GREATEST,LEAST)
函数: lpad(a,b,c)
参数: a : 字符 , b : 补成几位 ,c : 补的东西
功能: 左侧补字符。
举例: select lpad(\'6\',2,0) from dual;
结果: “06”
函数: add_months(a,b)
参数: a : 日期 , b : 数字
功能: 获取b个月后的日期。
举例: select add_months(date \'2015-09-08\',6) from dual;
结果: 2016/3/8
函数:coalesce(value1, value2, value3, ...)
参数:相同类型的值。
功能:获取第一个不为空的值。
举例:SELECT COALESCE(null,2,1) FROM dual t ;
结果:2
函数:greatest(value1, value2, value3, ...)
参数:相同类型的值。
功能:获取其中最大的值。
举例:SELECT greatest(3,4,1) FROM dual t;
结果:4
函数:least(value1, value2, value3, ...)
参数:相同类型的值。
功能:获取其中最小的值。
举例:SELECT least(3,4,1) FROM dual t;
结果:1
Oracle 锁表 解锁
oracle 锁表后该怎么解锁。
1.下面的语句用来查询哪些对象被锁:
select object_name,machine,s.sid,s.serial#
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid;
2.下面的语句用来杀死一个进程:
alter system kill session \'24,111\'; (其中24,111分别是上面查询出的sid,serial#)
查是谁锁了表,那个语句锁了表
select l.session_id sid,
s.serial#,
l.locked_mode,
l.oracle_username,
s.user#,
l.os_user_name,
s.machine,
s.terminal,
a.sql_text,
a.action
from v$sqlarea a, v$session s, v$locked_object l
where l.session_id = s.sid
and s.prev_sql_addr = a.address
order by sid, s.serial#;
开窗函数:
row_number() over (partition by [字段1] order by [字段2] desc);
row_number() 用于[字段1]数据相同的时候,给相同数据进行编号,例如[字段1]相同的数据有两条,根据[字段2]排序,然后给这两条数据分别编上1和2.
例如:select t0.* , row_number() over (partition by t0.c_username order by rowid desc) l_num from t_user t0 ;
他会把名字一样的人进行编号。结果就是。
1 李四 123456 1
2 王五 123456 1
3 王五 123456 2
4 张三 123456 1
5 张三 123456 2
6 张三 123456 3
7 赵六 123456 1
你会发现最后一列。相同名字的,例如‘张三’,分别编上了1,2,3.
要把相同的去掉也简单,在外层再套一层select和加个条件l_num 等于1。就好了。
rank()是跳跃排序. 如果【字段2】也有相同的时候,会把相同列出来。
row_number(); 如果【字段2】也有相同的时候,只会显示一条
Oracle 函数
min(),max()函数的返回值,
1.如果max(###),###是字符串,且是数字类字符串。返回值会把字符转换成数字。
SELECT min(t.c_businflag) FROM trequest t where t.c_fundcode=\'HA0065\';
2.如果max(###),###是日期。返回值还是日期。
SELECT min(t.d_date) into i FROM trequest t where t.c_fundcode=\'HA0065\';
3.如果max(###),###是字符串,是一般类字符串。返回值是该字符串。