---小技巧:
sqlplus 中清屏命令:host cls
set linesize 400 ---设置列宽度
---启动监听
lsnrctl start
---启动数据库实例
oradim -starup -sid taink
---创建/删除用户
create user lisi identified by lisi;
drop user lisi;
---授权/撤销创建会话的权限
grant create session to lisi;
---grant create session to public; (授权创建会话权限给所有用户)
revoke create session from lisi;
---revoke create session from public;(从所有用户撤销创建会话权限)
---授权创建表的权限
grant create table to lisi;
---grant alter any table to lisi; ---授权修改任意表的权限
revoke create table from lisi;
---授权创建不受限制表空间的权限
grant unlimited tablespace to lisi;
revoke unlimited tablespace from lisi;
/* 查看当前用户的系统权限 */
select * from user_sys_privs; ---数据字典
/* 查看当前用户的对象权限 */
select * from user_tab_privs; ---数据字典
/* 对列进行授权,再进行对象权限查询时使用下列方式查询 */
select * from user_col_privs; ---数据字典
/* 查看当前系统所有用户 */
select * from all_users;
------------------------------------------------------
/* 对象权限 */
---查询(当前用户)拥有的表的信息
select * from user_tables;
---授权/撤消 (对mytable表的)查询权限给san 用户
grant select on mytable to san;
---grant select,insert,update,delete on mytable to san;
---grant all on mytable to san;
revoke select on mytable from san;
---revoke select,insert,update,delete on mytable from san;
---revoke all on mytable from san;
---授权权限可以控制到列(注意:查询和删除 不能控制到列)
grant update(name) on mytable to san; --- 授权只能更新表中的name 列的信息
grant insert(id) on mytable to san; --- 授权只能插入表中的id 列的信息
------------------------------------------------------
---表的创建
create table tab_name (id int);
alter table tab_name add column_name varchar2(10);
-------------------------------------------------------
/* 系统权限和对象权限以及权限的传递 */
/*
系统权限部分.
系统权限具有传递性
即:A ---grant---> B ---grant--->C
当A ---revoke--->B 时,B ---grant--->C (的权限)没有撤消.
*/
grant alter any table to lisi;--- 基本的授权
grant alter any table to lisi with admin option; ---带管理权限的授权
/*
对象权限部分
对象权限不具有传递性
即:A ---grant---> B ---grant--->C
当A ---revoke--->B 时,B ---grant--->C (的权限)同时撤消
*/
grant select on tab to lisi; ---基本授权查询表的权限
grant select on tab to lisi with grant option; ---(带授权选项的)授权
---------------------------------------------------------------
/*
通过角色来管理用户
角色:是权限的集合
*/
---创建role
create role myrole;
---给role 授权
grant create session,create table to myrole;
---把角色myrole 的权限授予用户zhang(用户zhang 拥有了create session,create table 权限了)
grant myrole to zhang;
---删除role
drop role myrole;
注意:当删除一个角色后,用户对应的权限也被撤消.
有些权限是不能赋予给角色:unlimited tablaspace
creata table ---只能为自己创建表
create any table ---不仅可以为自己创建表,也可为其它用户创建表
alter table /*无此类权限的设置,因为有创建权限也就有修改权限*/
alter any table
drop table /*无此类权限的设置,因为有创建权限也就有删除权限*/
drop any table
表属于某一个用户.
角色不属于某一个用户.
---------------------------------------------------------------
管理员密码丢失:
1.修改普通用户密码
alter user scott identified by tiger;
2.重新生成管理员密码:orapwd 命令:
C:\>orapwd
Usage: orapwd file=<fname> password=<password> entries=<users> force=<y/n>
where
file - name of password file (mand),
password - password for SYS (mand),
entries - maximum number of distinct DBA and force - whether to overwrite existing file (opt),OPERs (opt),
There are no spaces around the equal-to (=) character.
demo:
C:\>orapwd file=D:\oracle\product\10.2.0\db_1\database\PWDtaink.ora password=123456 entries=10
//查询密码文件中(PWDtaink.ora)存在多少特权用户
select * from v$pwfile_users;
---------------------------------------------------------------
Oracle 三种验证机制:
1.操作系统验证
2.密码文件验证
3.数据库验证
linux 下oracle 的启动过程:
lsnrctl start
sqlplus sys/pwd as sysdba// 早期版本写法:sqlplus /nolog conn sys/pwd as sysdba
startup
windows 下oracle 的启动过程:
lsnrctl start
oradim -starup -sid orcl
---------------------------------------------
/* 用户的创建 */
create user usertemp ---创建用户
identified by usertemp ---设置密码
default tablespace users ---设置默认的表空间
temporary tablespace temp ---设置临时的表空间
quota 50M on users ---设置默认表空间限额为50M
---------------------------------------------
/* 限制用户 */
---用户加锁
alter user user_name account lock;
---用户解锁
alter user user_name account unlock;
---用户口令即刻失效
alter user user_name password expire