oracle使用总结
3个默认的帐户:
对于oracle 9来说:
sys change_on_install 网络管理员 [as sysdba]
system manage 本地管理员
scott tiger 普通用户 默认锁定,需解锁才能用
对于oracle 10来说:
sys和system是没有密码的,scott也没有密码,都要自己设定,scott使用需解锁。
常用操作:
sqlplus lisi/lisi 用户登录
disconn; 断开连接(用户已经登录成功的情况下才能使用)
conn lisi/lisi; 打开连接(用户已经登录成功的情况下才能使用)
commit; 提交数据,每次进行增、删、改之后就要执行这个命令,以保存到硬盘上,
其他用户操作时,才会数据一致。
创建用户:
一般用sys进行操作:
create user lisi identified by lisi;
系统权限:(进行DDL操作的权限)
授权:
grant create session to lisi; 会话权限,每个用户都要有这个权限后才能登陆
grant create table to lisi; 建表权限,建表之前先要有表空间
grant unlimited tablespace to lisi; 不受限表空间权限,可以对数据库中所有表空间进行操作
有了这三个授权之后才能对表进行CRUD操作
撤消权限:
revoke create session from lisi;
revoke create table from lisi;
revoke unlimited tablespace from lisi;
将某个权限公开(比如sys帐户的以下两个权限):
grant create session to public;
grant create any talbe to public;
查看权限表:
set linesize 400 设置行宽度
select * from user_sys_privs
对象权限(进行DML操作的权限):
grant select on mytab to lisi; 把对表的查询权限授予lisi
grant all on mytab to lisi; 把对表的增、删、改、查、索引、外键等权限授予lisi
revoke select on mytab from list; 对lisi撤消对表的查询权限
revoke all on mytab from lisi; 对lisi撤消对表的所有权限
select * from user_tab_privs; 查看用户对表的操作权限范围
对象权限可以控制到列(仅限于增、改):
grant update(name) on mytab to lisi; 把对表中name字段的更新权限授予lisi
grant insert(id) on mytab to lisi; 把对表中id字段的插入权限授予lisi
select * from user_col_privs; 查看用户对表中列的操作权限范围
注意:查询和删除不能控制到列。
ddl----数据定义语言
dml----数据操纵语言
dcl----数据控制语言
dml中的增删改需要 commit , 其他不用;
如果忘记了commit,可能用不同的用户对同一表进行操作时,会发生资源冲突(不能进行DML操作),
同一个用户操作时;会看不到最新的数据结果。commit是把数据写到硬盘上。
权限的传递:
grant alter any table to lisi with admin option;
注:在oracle 10中,假设sys用户授予alter any table给lisi,lisi又把这个权限授予给wang,
当sys撤消lisi的alter any table权限时,wang的alter any table权限还会存在。
grant select On A to lisi with grant option;
注:在oracle 10中,假设sys用户授予select On A 给lisi,lisi又把这个权限授予给wang,
当sys撤消lisi的select On A权限时,wang的这个权限也会被撤消。
角色
create role myrole;
grant create session to myrole;
grant create table to myrole;
drop role myrole;
不能把unlimited tablespace权限授予自定义的角色,因为这个权限比较大,是一个比较特殊的权限。
注意:
create table 可以给自己创建表 create any table 创建任意一个用户的表
[alter table] 没有这个权限 alter any table 修改任意一个用户的表
[drop table] 没有这个权限 drop any table 删除任意一个用户的表
当一个用户有了create any table权限时,也就有了另外两个权限。
由于create any table权限较大,所以不建议把它授予给角色。
表是属于某一个用户的。
而角色不属于某个用户,是一个用户集合。
数据库的三种验证机制:
操作系统验证 / (当前window用户,系统管理员权限)
密码文件验证 sys
数据库验证 scott
linux下的oracle的启动过程
lsnrctl start
sqlplus sys/oracle as sysdba
startup
window下的oracle的启动过程
lsnrctl start 启动监听器
oradim -startup -sid orcl 启动数据库实例
管理员密码丢了怎么办?
★假设用户是scott,密码丢了,要对它进行修改。
1.用sys登陆 sqlplus / as sysdba;注,这是操作系统验证,
或者使用sqlplus sys/sys as sysdba;进行登录
2.执行sql语句 alter user scott identified by tiger;
经本人试验,通过。
★如果用户是sys,由于它属于SYSDBA,采用操作系统验证和密码文件验证(SYSOPER也是采用这两种验证),
当我们使用sqlplus / as sysdba进行登录时,就是使用操作系统验证,由于你在window下是管理员,
默认安装时会把当前用户添加到ora_dba用户组中,所以有权限登录。
这样比较危险,打开计算机管理->本地用户和组->组->ora_dba,把当前window用户从表中删除,
这样用sqlplus / as sysdba就不能登录了。
★假设上面的操作都做了,这时就要使用sqlplus sys/sys as sysdba进行登录了,而在这种情况下只有一种验证,
那就是密码文件验证,所以如果忘了sys的密码,这时就要执行以下操作:
1.找到PWDorcl.ora
一般位于C:\oracle\product\10.2.0\db_1\database\下,找到后将PWDorcl.ora删除。
2.使用命令重新生成PWDorcl.ora
在命令行中,输入
orapwd file=C:\oracle\product\10.2.0\db_1\database\PWDorcl.ora password=sys entries=10
执行完成后,sys的密码就改成了sys了。
经本人试验,通过。file指PWDorcl.ora文件的路径,password就是sys的密码,entries是用户数量
帐户管理细节 创建用户的完整格式: create user 用户名 identified by 密码 default tableSpace 表空间 Temporary TableSpace 表空间 Quota 整数[ K | M ] | Limited | unlimited on 表空间 例子: create user abc identified by 123 default tablespace Users Temporary tablespace Temp Quota 50M on Users 限制用户: 用户加锁 -- alter user 用户名 account lock 用户解锁 -- alter user 用户名 account unlock 用户口令即刻失效 -- alter user 用户名 password expire(登陆成功即修改密码) 删除用户: drop user 用户名 [CasCade] CasCade表示删除用户所有对象 示例: drop user abc cascade;
一个完整的示例:
sqlplus sys/sys as sysdba;
SQL> create user zhang identified by zhang default tablespace users
temporary tablespace temp quota 100M on users;
SQL> create role myrole;
SQL> grant create session to myrole;
SQL> grant create table to myrole;
SQL> grant myrole to zhang;
sqlplus zhang/zhang
SQL> create table teacher(id int,name varchar(10));
SQL> show user;
编辑器加载中...