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给lisilisi又把这个权限授予给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;

  

编辑器加载中...

原文地址:https://www.cnblogs.com/zfc2201/p/2143440.html