1 概述
在ORACLE中有一种特殊级别权限——sysdba权限,sysdba权限拥有ORACLE系统的最高权限,有打开数据库、关闭数据库、恢复数据库等高级权限,我们在工程安装和日常维护中经常涉及到的sys用户就有sysdba权限。sysdba是管理oracle实例的,它的存在不依赖于整个数据库完全启动,只要实例启动了,他就已经存在。以sysdba身份登陆,装载数据库、打开数据库。只有数据库打开了,或者说整个数据库完全启动后,dba角色才有了存在的基础。
Sysdba用户有两种认证方式:操作系统认证和密码文件认证,本文主要阐述的是sysdba权限不同认证方式的含义和配置说明。
2 Sysdba登陆方式
六种登陆方法(采用操作系统认证):
1. sys/www as sysdba
2. sys / as sysdba
3. sys as sysdba
4. / as sysdba
5. sqlplus /as sysdba
6. sqlplus /nolog
前4种是在SQL*PLUS登陆框的用户名栏目中输入,后2种是DOS环境下直接输入。
3 查看具有sysdba权限的用户
以sys用户登陆oracle,执行select * from V_$PWFILE_USERS;可查询到如下结果:
sql> select * from V_$PWFILE_USER ......
一、oracle对select加锁方法
create table test(a number,b number);
insert into test values(1,2);
insert into test values(3,4);
insert into test values(8,9);
commit;
---session 1 模拟选中一个号码
SQL> select * from test where a =1 for update skip locked;
A B
---------- ----------
1 2
---session 2 对a=1再进行select
SQL> select * from test where a = 1 for update skip locked;
未选定行
-- session 3 全表select
SQL> select * from test for update skip locked;
A B
---------- ----------
3 4
8 &n ......
show sga --展示文件结构
desc 看表结构
edit 修改
sys/change_on_install,system/manager,scott/tiger
--建表空间
create tablespace tablespace datafile 'd:\tablespace.dbf1' size 5m
autoextend on ,'d:\tablespace.dbf2' size 10m
--建用户
create user username
identified by userpassword
[default tablespace tablespacename][temporary]
create user zby identified by zby123 defualt tablespace tablespace;
--修改用户密码
alter user zby identified by zby100;
--为用户解锁
alter user zby account unlock;
--为用户加锁
alter user zby account lock;
--为用户授权
grant conn,resource to zby;
--把查询dept表的权限个zby用户
grant select on dept to zby;
--收回查看dept表的权限
revoke select on dept from zby
grant all --授权所有的权限,增删改查
grant update (dname) ondept to zby;--授予更改某列的权限
grant select ,update(dname,loc) on dept to zby;--查询和更改某些列的权限
to_char,to_number按照某种格式转化
select to_char(sysdate,'yyyy-mm-dd') from dual;--2009-9-22
select to_char('111112356.88' ......
在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
1、Create Sequence
你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限,
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回 sequence的当前值
NEXTVAL=增加sequence的值,然后返回 sequence 值
比如:
emp_sequence.CURRVAL
emp_sequence.NEXTVAL
可以使用sequenc ......
在日常的业务系统应用中,大家经常会使用到大量数据的的提交(包括查询、更新或删除),假如目标数据库的数据量较大,一次需要处理的操作较多,就会出现系统执行效率低下等问题。文本中笔者以Oracle9i数据库为例,通过对ADO.Net中的数据库支持的应用实践,说明几种常见的优化处理方法,并对比其中的优劣。
为了更详细说明情况,笔者以某业务数据填报功能为例,假设有100个用户每周需要填报某统计数量,填报明细的数据量约为200条,有专门的填报页面实现一次提交,这样一周的数据增量约为2万,一年为100多万,要保证系统有效运行6年以上,需要考虑数据存储(增、删、改)效率问题,(数据库本身的优化配置,包括表空间、索引等查询效率已经考虑,不在此讨论范畴)。这类业务的特点是,数据操作量较大,但执行的指令复杂度较低,包含简单的新增、修改、删除3类。
传统处理方法存在的问题
对每一个要处理的操作,直接对目标表执行对应的SQL操作(或存储过程),可使用ADO.Net的参数化SQL或通过DataSet与DataAdapter来间接处理。这样每个用户批量提交数据时,需要执行大约200次SQL操作,虽然数据库进行了优化,单次执行SQL的效率并不低,但由于一次执行的指令较 ......
create or replace function str_split
(
a_str varchar2,--要分割的字符串
a_split varchar2--分隔符号
)
return varchar2
is
temp_str varchar2(1000);
temp_length number;
split_length number;
result_str varchar2(1000);
begin
temp_str := ltrim(rtrim(a_str));
temp_length := 0;
result_str := a_str;
while instr(temp_str,a_split)<>0 loop
temp_length := instr(temp_str,a_split);
split_length := length(a_split);
result_str := substr(temp_str,split_length+temp_length);
temp_str := result_str;
end loop;
return result_str;
end str_split; ......