三个默认用户默认9i里面密码如下 sys change_on_install system manager scott tiger10g里面前两个没有密码了。在安装过程中我们设定了scott默认已经被锁定了。
sys网络管理员 system本地管理员普通管理员
用sys登录时一定要在末尾 [as sysdba]
创建用户
命令:lsnrctl start [监听的名字]
oradim -startup -sid orcl启动数据库实例
登陆:sqlplus / as sysdba正常:sqlplus lisi/lisi;sqlplus / as sysdba用默认数据库管理员登陆
show user;显示当前用户
create user lisi identified by lisi;图形界面也可以创建用户,但是默认传递了一些权限。
grant create session to lisi;授权新建用户是没有任何权利,甚至是登陆权限也没有。
grant create table to lisi;授权建表权限
但此时并没有使用表空间权限。
grant unlimited tablespace to lisi;不受限制的表空间权限
revoke create table from lisi;撤销权限
查看用户拥有权限提供系统信息的视图叫字典。select * from user_sys_privs;
user_sys_privs是系统提供的视图,当然我们可以理解成是一个表
oracle中分系统和对象两种权限。 grant create table,unlimited tablespace to wangwu;同时授权
用select默认是访问自己的表,如果想用别人的就加上用户名.表名
但sys拥有访问其他用户表的权利,因为默认Wie访问自己的表,所以访问要用用户名.表名格式
*记得增删改查要提交,因为默认是要手动提交
grant select on mytab to lisi;对于对象权限,可以是表拥有者授予权利。grant all on mytab to lisi; revoke all on mytab from lisi;
谁拥有这个对象,谁就可以授权。整理如下:
创建用户: create user lisi identified by lisi;系统权限:grant create session to lisi;grant create table to lisi;grant unlimited tablespace to lisi;
grant create session to public;把一个权限赋给所有用户.
select * from user_sys_privs;查看当前用户拥有哪些系统权限。
对象权限:grant select on mytab to lisi;grant all on mytab to lisi;revoke select on mytab from lisi;revoke all on mytab from lisi;revoke unlimited tablespace from lisi;
select * from user_tab_privs;查询对象权限
对象权限可以控制到列grant update(name) on mytab to lisi;grant insert(id) on mytab to lisi;注意:查询和删除不能控制到列select * from user_col_privs;查询权限
有时命令窗口很窄,可以用set linesize 400;来设置行的宽度。当然还需要设置命令窗口的宽度,默认为80,可以根据需要设置大一些300。
oracle 在控制权限里很严格,甚至可以控制到列。
disconn在当前用户内断开连接conn wangwu/wangwu连接
##有时可能会遇到资源正忙或者其他错误,导致你无法修改表结构,那么这个时候你可以在其他登录用户输入commit来提交事务。再进行修改。比如我们例子过程中的一些操作我们可能并没有提交,导致我们无法修改表资源。
grant update(name) on mytab to lisi;授权更新name列的权限
update wangwu.mytab set name='lihuoming' where id=1;更新列对于插入和更新可以到列,而查询和删除不可以。
如果对象权限控制到列,用一下查询权限插入更新删除 最后需要提交commitddl数据定义语言dml数据操纵语言 更删改查 dcl数据控制语言 授权和撤销语言只有dml需要提交保存
grant alter any table to lisi with admin option;带着管理选项的授权
grant select on a to lisi with grant option;这个是sys授权的写法
如果a授权给b并允许b授权给c,那么当a撤销b的权限时,c还保持权限吗。注意:这个问题在oracle9和10是不一样的。【经过测试,在10g里面,当a被撤销权限时,b就失去了a赋予它的权利。那么按老师说,9和10的处理机制不一样,那么就是说在9i里面,这种情况下,b拥有的权利会被保留?】
角色就是权限的集合。create role myrole;建立角色
grant create session to myrole;grant create table to myrole;
grant myrole to zhangsan;
drop role myrole;删除角色
有些权限是特殊的,不能放到角色里面。只能直接赋予用户。例如:grant unlimited tablespace to myrole;这个是错误的。
权限的传递grant alter any table to lisi with admin option;grant select on a to lisi with grant option;
角色create role myrole;grant create session to myrole;drop role myrole;
注意 有些系统权限无法直接赋予角色create table可以给自己创建表 create any table可以给任意一个用户创建其他表[alter table] alter any table[drop table] drop any table []中权限是没有的。表是属于某一个用户的。角色不属于某个用户。
丢掉管理员密码怎么办?alter user scott identified by tiger;用sys身份修改用户密码。
如果是sys丢了密码Oracle数据库得三种验证机制 操作系统验证 密码文件验证 数据库验证在大多数情况下,sys在数据库还没有启动的时候对数据库进行操作,这样sys默认是在操作系统和密码文件进行验证的。
liunx下,oracle的启动过程:首先启动监听lsnrctl start//sqlplus sys/oracle as sysdba 用sys登陆,一看是sysdba就采用系统验证和密码文件验证sqlplus /nologconn sys/oracle as sysdbastartup上述应该注意版本问题,一般新版本支持上述写法
sqlplus scott/tiger监听一看是普通用户就传给了数据库
windows下oracle的启动过程lsnrctl startordmin startup -sid orcl
用sys登陆 conn abc/cba as sysdba也可以连接。是因为默认是通过系统验证和密码文件验证因为在wins下安装过程中已经默认的在系统建立了ora_dba组并且默认已经设置了登陆wins登录用户。所以说conn abc/cba as sysdba需不需要密码都无所谓,它根本不会理会,只会以系统用户验证。
如果当不能通过系统用户进行验证时,又忘记密码时,我们可以直接删除密码验证文件(路径在oracle\product\10.2.0\db_1\database\PSWorcl.ora)并且用命令提示内键入orapwd file=oracle\product\10.2.0\db_1\database\PWDorcl.ora password=sys entries=10;来生成一个密码验证文件。之后就可以用设置的密码登陆,并且在登陆之后可以用select * from v$pwfile_users;来查看。
在oracle里面企业管理器里面当一个用户里面没有任何表的时候,就不会在方案里面显示出来。
drop user fff cascade;删除用户,并删除用户下所有对象
OEM oracle enterprise manager [有待验证]在sql server中一个语句就是一个事务,对表的修改是阻塞读操作的,所以sql server的锁是非常昂贵的。
select * from v$sga;查看SGA大小。(SGA System Global Area)
alter system flush SHARED_POOL; 刷新SGA中的shared_pool
没有评论:
发表评论