日期:2014-05-16  浏览次数:20561 次

oracle10g 学习笔记上
1.oracle 安装完成后,会默认生成三个用户角色
sys 用户:超级管理员 权限最高 他的角色  dba   密码:chane-on-install  (本人的已经改为pass)
system 用户:是系统管理员 权限也很高 她的角色是 dbaoper  密码:manager  (本人该为pass)
scott 用户:普通用户 密码:tiger  (本人改为woai5jia)

sys 与system
sys 有create database 的权限  而system 没有 其他相似


在日常对oracle管理过程中,使用system 就够了

权限   分为系统权限 和 对象权限;

系统权限:用户对数据库的相关权限
对象权限:用户对其他用户的数据对象操作的权限(比如表,视图,过程。。)
xiaoming 密码:m123;
xiaohong 密码:m1234;

在删除用户时,注意:如果要删除用户,已经创建了表,那么久需要在删除的时候带一个参数 cascade即把该用户及该用户创建的表删除(级联删除)

创建一个用户xiaoming 这个用户是没有任何权限的。比如登录  建表;
这时可以使用system 来赋予它这样的权限
如:grant connect to xiaoming
grant resource to xiaoming
还有比如实现xiaoing 对scott 中表的操作;
这时除了system sys 。scott 可以授权如:
查看emp表 如grant select on emp to xiaoming;


查看/增加/删除/修改 emp表 如grant all on emp to xiaoming;()

scott 收回xiaoming 对emp表的操作;
revoke select on emp from xiaoming:

虽然赋予了xiaoming select的权限 但是在连接xiaoming 后使用select * from emp;还是查询不到
可以使用select * from scott.emp;这里就涉及到了“方案”的概念;scott就是方案名

这里有desc 表名:是查看表结构;

//对权限的维护:如:希望xiaoming 用户可以去查询scott的emp表,还希望
xiaoming 可以把这个权限给别人
----如果是对象权限,就加入with grant option;
grant select on emp to xiaoming with grant option;

?如果scott 把xiaoming的select 权限回收了,那么xiaohong 的权限还在嘛:
答:同时被回收了

使用profile管理用户口令:
profile是口令限制,资源限制的命令集合。数据库建立时;oracle会自动建立名称为default的profile  。当建立用户没有指定profile选项。那么oracle会将defalt分配给用户

(1)账户锁定;
指定该账户登录时最多可以输入密码的次数,也可以指定用户锁定的时间(天),一般用dba 的身份去执行该命令。
如:

sql>create profile lockaaa limit failed_login_attempts 3 password_lock_time 2;
sql>alter user xiaoming profile lockaaa;
(2)给账户解锁
sql>alter user xiaoming account unlock;
(3)终结口令

为了让用户定期的修改密码可以使用终止口令的指令来完成。同样这个命令也需要dba身份来操作

如:给前面的创建的用户xiaoming创建一个profile文件,要求该用户每隔10天
要修改自家登录的密码,宽限期为2天
sql>create profile bbb1 limit password_life_time 10 password_grace_time 2;

sql>alter user xiaoming profile bbb1;


----口令历史
如果希望用户在修改密码时。不能使用以前使用过的密码。可使用口令历史,这样oracle就会将口令修改的信息存放在数据字典中,这样当用户修改密码时,oracle就会对新旧密码进行比较,当发现新旧密码不一样时。就提示用户重新输入密码、

如:sql>create profile ccc1  limit password_life_time
10 password_grace_time 2 password_reuse_time 10;
//password_reuse_time 指定口令可重用时间即10天后就可以重用
赋给某个用户


删除profile
sql>drop profile ccc[cascade]



-----oracle 表的管理:
1.必须以字母开头
2.数据类型 
a.字符型:char 定长 最大2000字符//如果知道该字段经常被
查询并且是知道大概有多长这样使用char更好,效率更快  如:身份证号
b.varchar2() 变长 最大4000字符
c.clob ()最大字符达4G
3.数字型
number 可以表示整数 也可以表示小数

number(m,n)表示一个小数有m位有效数 n位小数

number(m) 表示一个m位整数
4.日期类型
date  包括年月日时分秒
timestamp 是对date类型的扩展

5 图片 视频等
blob 二进制数据 ,一般我们在数据库中只放视频图片的路径。如果需要安全的
考虑则可以考虑把他们放在数据库中


--建表
create table student(
stuId number(5),
stuName varchar2(10),
sal number(7,2)
);

添加字段
sql>alter table student add(classId number(2));
修改字段
sql>alter table student modify (stuId varchar2(10))
删除字段
sql>alter table student drop column sal;
删除表:
sql>drop table student;
注意:一般我们不做修改字段和删除字段的操作

添加数据
insert into student values(1,'小明','男','01-3月-1997',489.4,12);
在oracle中默认的日期格式是:dd-mm-yy ,月份后要加上“月”
如果要修改默认格式:
SQL> alter session set nls_date_format ='yyyy-MM-dd';
SQL> insert into student values(2,'小红','女','1988-7-6',489.4,12);
插入部分字段:insert into student (xh,xm,sex)values('','','');

空字段的增加和查询------
SQL> insert into student (xh,xm,sex,birthday) values(3,'aa','女',null);

select * from student where birthday is null;

修改一个字段
update student set sal = sal/2 where sex ='男