荣耀9和华为荣耀9青春版缺点的区别

如何更改ORACLE&用户的&expired状态
oracle中, 经常用户的状态会变成locked, expired
等状态, 这种情况下怎么处理呢?
首先, &如果是locked状态还好办, DBA直接执行alter user scott
account unlock 就可以了.
但是如果变成expired状态, oracle本身是不提供解锁的语句的, 因为账户过期,必须要用户更改密码, 账户才能重新使用.
但有些时候, 因为各种原因, 我们并不知道原密码的明文是什么,这时候就很麻烦了, 经研究发现,有两种方法可以实现:
一. 用原密码的密文来更改密码:
SQL&conn&&/as&sysdba&&
SQL&select&password&from&dba_users&where&username='SCOTT';&&
password&&
------------------------------
E65E6AF62B2449CF&&
SQL&alter&user&SCOTT&identified&by&values&'E65E6AF62B2449CF';&&
/as sysdba
SQL&select password from dba_users where username='SCOTT';
------------------------------
E65E6AF62B2449CF
SQL&alter user SCOTT identified by values 'E65E6AF62B2449CF';
这种情况下,虽然我们不知道原密码是什么,但可以用它的密文来更改密码,这样,在不知道原密码的情况下,既保持了密码不改变,
又可以把expired的状态更改掉.
&下面这一条语句搞定,不管用户的状态是什么:
UPDATE&USER$&SET&ASTATUS=0&WHERE&NAME='SCOTT';&&
UPDATE USER$ SET ASTATUS=0 WHERE NAME='SCOTT';
&用户的信息都是存在user$这样一个系统表里面的
SQL&&select&name,ASTATUS,password&from&user$&where&name&IN('SYS','SCOTT');&&
NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&ASTATUS&PASSWORD&&
------------------------------&----------&------------------------------
SCOTT&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&1&E65E6AF62B2449CF&&
SYS&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&0&8A8F7A&&
SQL&&select&username,account_status&from&dba_users&where&username&in('SYS','SCOTT');&&
USERNAME&&&&&&&&&&&&&&&&&&&&&&&ACCOUNT_STATUS&&
------------------------------&--------------------------------
SYS&&&&&&&&&&&&&&&&&&&&&&&&&&&&OPEN&&
SCOTT&&&&&&&&&&&&&&&&&&&&&&&&&&EXPIRED&&
SQL& select name,ASTATUS,password from user$ where name IN('SYS','SCOTT');
ASTATUS PASSWORD
------------------------------ ---------- ------------------------------
1 E65E6AF62B2449CF
SQL& select username,account_status from dba_users where username in('SYS','SCOTT');
ACCOUNT_STATUS
------------------------------ --------------------------------
而用户ASTATUS对应的表为:user_astatus_map
SQL&&select&*&from&user_astatus_&&
&&&STATUS#&STATUS&&
----------&--------------------------------
&&&&&&&&&0&OPEN&&
&&&&&&&&&1&EXPIRED&&
&&&&&&&&&2&EXPIRED(GRACE)&&
&&&&&&&&&4&LOCKED(TIMED)&&
&&&&&&&&&8&LOCKED&&
&&&&&&&&&5&EXPIRED&&&LOCKED(TIMED)&&
&&&&&&&&&6&EXPIRED(GRACE)&&&LOCKED(TIMED)&&
&&&&&&&&&9&EXPIRED&&&LOCKED&&
&&&&&&&&10&EXPIRED(GRACE)&&&LOCKED&&
9&rows&selected.&&
SQL& select * from user_astatus_
STATUS# STATUS
---------- --------------------------------
2 EXPIRED(GRACE)
4 LOCKED(TIMED)
5 EXPIRED & LOCKED(TIMED)
6 EXPIRED(GRACE) & LOCKED(TIMED)
9 EXPIRED & LOCKED
10 EXPIRED(GRACE) & LOCKED
9 rows selected.
关键是user$表本身是可以更改的, 所以此时我们就可以直接把用户的ASTATUS字段改成0就可以了
SQL&&UPDATE&USER$&SET&ASTATUS=0&WHERE&NAME='SCOTT';&&
1&row&updated.&&
SQL&&COMMIT;&&
Commit&complete.&&
SQL&&alter&system&flush&shared_&&
System&altered.&&
SQL& UPDATE USER$ SET ASTATUS=0 WHERE NAME='SCOTT';
1 row updated.
SQL& COMMIT;
Commit complete.
SQL& alter system flush shared_
System altered.
再来观察结果:
SQL&&select&name,ASTATUS,password&from&user$&where&name&IN('SYS','SCOTT');&&
NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&ASTATUS&PASSWORD&&
------------------------------&----------&------------------------------
SCOTT&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&0&E65E6AF62B2449CF&&
SYS&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&0&8A8F7A&&
SQL&&select&username,account_status&from&dba_users&where&username&in('SYS','SCOTT');&&
USERNAME&&&&&&&&&&&&&&&&&&&&&&&ACCOUNT_STATUS&&
------------------------------&--------------------------------
SCOTT&&&&&&&&&&&&&&&&&&&&&&&&&&OPEN&&
SYS&&&&&&&&&&&&&&&&&&&&&&&&&&&&OPEN&&
SQL& select name,ASTATUS,password from user$ where name IN('SYS','SCOTT');
ASTATUS PASSWORD
------------------------------ ---------- ------------------------------
0 E65E6AF62B2449CF
SQL& select username,account_status from dba_users where username in('SYS','SCOTT');
ACCOUNT_STATUS
------------------------------ --------------------------------
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。博客访问: 115770
博文数量: 53
博客积分: 2295
博客等级: 大尉
技术积分: 540
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Oracle
create tablespace&ivan datafile '/home/oracle/dba.dbf' size 100m autoextend on next 101) DATAFILE: 表空间数据文件存放路径
2) SIZE: 起初设置为200M
3) UNIFORM: 指定区尺寸为128k,如不指定,区尺寸默认为64k
4) 空间名称ivan 与 数据文件名称 dba.dbf 不要求相同,可随意命名.
5) AUTOEXTEND ON/OFF 表示启动/停止自动扩展表空间
创建用户语法:
CREATE USER user
IDENIFIED BY password [default tablespace 默认表空间名/temporary tablespace 临时表空间名 quota 配额大小 on 表空间名]
default tablespace:用户的默认表空间
temporary tablespace:用户的临时表空间
quota on:表示允许该用户在表空间中使用的空间总大小。可以设置多个不同的表空间。
执行该语句当用户需要有‘创建用户’的权限,一般为系统的DBA用户
创建用户并指定表空间:
create user test identified by test def
用户如果想登录,至少需要有"CREATE SESSION"的权限
用户建表相关权限
·对新建用户,默认情况,用户对于其所拥有对象具有所有的数据的增删改查权限,但没有定义的权限(如创建表等)。用户要想创建对象,需要有对象的创建权限CREATE TABLE、CREATE SEQUENCE等
·以test用户身份建表:
CREATE TABLE emp1(id NUMBER,las_name VARCHAR2(20),salary NUMBER);
返回权限不足。
CREATE TABLE emp1*ERROR at line 1:ORA-01031: insufficient privileges
用户建表想关权限
·赋予test用户的创建表的权限
conn / as sysdba
GRANT CREATE TABLE TO
·test用户身份执行建表操作:
CREATE TABLE emp1(id NUMBER,last_name VARCHAR2(20),salary NUMBER);
如果这步返回表空间ivan无权限的话
·建表的相关权限
-CREATE TABLE
-空间使用权限,需要DBA来分配。
·用户空间分配和管理
-给用户分配表空间的配额;
-给用户指定一个默认的表空间,如果没有特殊指定,则对象都是在该用户默认表空间创建的。若不指定默认表空间,则系统缺省默认表空间是USERS,默认情况下,USERS表空间是有给任何普通用户分配配额的。如果是默认表空间是新建的,则需要给空间分配配额。
·查询数据库表空间。以sys用户身份
select * from v$
select * from dba_
insert into emp1 values (1,'xy',5000);
返回ORA-01950: no privileges on tablespace 'IVAN'
问题:没有分配表空间配额:
修改默认表空间及配额
ALTER USER 用户名
DEFAULT TABLESPACE 默认表空间名;
ALTER USER 用户名
QUOTA 10M ON 表空间名;
conn / as sysdba
alter user test quota 10M ON
conn test/test
insert into emp1 values (1,'xy',5000);
这样就可以插入数据了。
修改用户密码
ALTER USER user IDENTIFIED BY 新密码;
·DBA可以修改任何普通用户的密码,而不需要知道用户的旧密码。
·在SQLPLUS下执行password命令来修改登录用户自己的密码,提示会输入旧密码和新密码。
·用户状态:OPEN、EXPIRED、LOCKED
-OPEN表示正常状态,为用户帐号初始创建后状态。
-EXPIRED表示密码过期,用户下次登录的时候需要修改密码;
-LOCKED表示该账户已被锁定,不能执行任何ORACLE相关操作(即使拥有相关的权限)。
·状态管理语句:
ALTER USER user PASSWORD EXPIRE;--密码过期
ALTER USER user ACCOUNT LOCK[UNLOCK];--账户锁定/解锁
·删除用户语法
DROP USER user [CASCADE]
·CASCADE表示系统先自动删除该用户下的所有对象,然后再删除该用户的定义。
·已经登录的用户是不允许被删除的。
数据字典视图
·与用户信息相关的数据字典视图有
-DBA_USERS是关于用户的属性信息
-DBA_TS_QUOTAS是用户的相关表空间的配额信息
·数据字典视图一般是以system用户身份执行:
SELECT username,account_status,default_tablespace FROM dba_
SELECT * FROM dba_ts_
·oracle中存在两种权限
-系统权限(SYSTEM PRIVILEGE):允许用户在数据库中执行指定的行为,一般可以理解成比较通用的一类权限。
-对象权限(OBJECT PRIVILEGE):允许用户访问和操作一个指定的对象,该对象是一个确切存储在数据库中的命名对象。
·包含100多种系统权限,其主要作用:
-执行系统端的操作,比如CREATE SESSION是登录的权限,CREATE TABLESPACE创建表空间的权限
-管理某类对象,比如CREATE TABLE是用户建表的权限
-管理任何对象,比如CREATE ANY TABLE,ANY关键字表明该权限“权力”比较大,可以管理任何用户下的表,所以一般只有DBA来使用该权限,普通用户是不应该拥有这个该类权限的。
表的系统权限
·CREATE TABLE (建表)
·CREATE TABLE (在任何用户下建表)
·ALTER ANY TABLE(修改任何用户的表的定义)
·DROP ANY TABLE (删除任何用户的表)
·SELECT ANY TABLE (从任何用户的表中查询数据)
·UPDATE ANY TABLE (更改任何用户表的数据)
·DELETE ANY TABLE (删除任何用户的表的记录)
索引及会话系统权限
-CREATE ANY INDEX (在任何用户下创建索引)
-ALTER ANY INDEX (修改任何用户的索引定义)
-DROP ANY INDEX (删除任何用户的索引)
·会话:(SESSION)
-CREATE SESSION (创建会话,登录权限)
-ALTER SESSION (修改会话)
表空间系统权限
-CREATE TABLESPACE (创建表空间)
-ALTER TABLESPACE (修改表空间)
-DROP TABLESPACE (删除表空间)
-UNLIMITED TABLESPACE (不限制任何表空间的配额)
·注意:表空间的所有权限都不应该分配给普通用户。
·系统特权权限SYSDBA和SYSOPER
-SYSOPER的权限:启动停止数据库,恢复数据库等
-SYSDBA的权限:所有SYSOPER功能的管理权限;创建数据库等权限。
·注意:以系统特权权限登录的用户一般都是特权用户,或称为超级用户。以SYSDBA身份登录的用户在ORACLE中是权限最大的用户,可以执行数据库的所有操作。这些特权权限是不应该随便赋予给普通用户的。
系统权限授予
·授予用户系统权限语法
GRANT sys_priv_list TO usr_list [WITH ADMIN OPTION]
·sys_priv_list:是一个系统特权的列表,由逗号分隔
·user_list:是一个用户的列表,由逗号分隔
·WITH ADMIN OPTION:允许权限的接受者再把此特权授予其他用户。
系统权限授予
·授予test用户CREATE SESSION权限
GRANT create session TO test WITH ADMIN OPTION;
·以test身份执行CREATE SESSION权限管理:
GRANT create session TO
系统权限回收
·回收系统权限
语法:REVOKE 系统权限列表 FROM user列表;
·只能回收使用GRANT授权过的权限,权限被回收后,用户就失去了原权限的使用权和管理权(如果有管理权限的话)。
·注意:使用WITH ADMIN OPTION选项授予的权限在回收时候的级联回收策略如下:
-如果用户A授予权限给用户B,同时带有选项WITH ADMIN OPTION,用户B给予出去的权限(用户C对该权限的使用权)是否还继续存在。在系统权限管理中,ORACLE的策略是继续保留权限,用户C继续拥有该权限的使用权。
-也就是说,系统权限不会级联回收。所以在权限回收时必须将获权用户的权限一一回收。
·对象权限是在指定的表、视图、序列或过程上执行指定动作的权限或权利。
·每个对象都有一个特殊的可授予的权限集。
阅读(1394) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。}

我要回帖

更多关于 荣耀8和荣耀9青春版 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信