您的位置:首页 > 数据库 > Oracle

oracle学习之二:oracle常用命令

2016-04-10 08:46 435 查看
(1)Conn命令:

用法:conn[ect] 用户名/密码@网络服务名[as sysdba/sysoper] 当用特权用户登录是,必须带上assysdba或者是as sysoper

举例: connsysem/manage@orcl as sysdba

(2)disc[onnect]:

用于断开与当前数据库的连接

(3)passw[ord]:

用于修改用户的密码,如要修改用户密码,需用sys/system用户登录

Password xiaoming:意思是指修改用户xiaoming的密码

(4)show user

显示当前用户名

(5)exit

该命令会断开与数据库的连接,同时会退出sql*plus

(6)文件操作命令

Start和@:运行sql脚本,例如,sql>@d:\a.sql或者sql>startd:\a.sql

Edit:编辑指定的sql脚本,例如,sql>editd:\a.sql

Spool:将sql*plus屏幕上的内容输出到指定的文件中去,例如,sql>spool d:\b.sql,并输入sql>spooloff,这两个命令之间屏幕上的内容保存到一个文档中。

(7)显示和设置环境变量

Linesize: sql>set linesize  sql>show linesize,行宽默认80个字符

Pagesize:和上面一样的.

(8)oracle 的用户管理和权限管理

Create user:只有dba 权限用户才可以,例:create userxiaoming identified by
sang 红色代表密码

Drop user [cascade]:删除用户,在删除用户时,注意如果要删除的用户已经创建了表,那么就需要带一个参数cascade 级联删除

新创建用户是没有任何权限的,需要为用户赋予权限,oracle默认有140多种权限,分系统权限(用户对数据的相关操作)和对象(用户对其他用户的数据对象操作的权限)权限两种

Grant:授权  grant connect to xiaoming;

权限:

createsession

createtable

unlimitedtablespace

connectresource dba

例:

#sqlplus/nolog

SQL>conn / as sysdba;

SQL>createuser username identified by password

SQL>grant dba to username;

SQL>conn username/password

SQL>select * from user_sys_privs;

 

用户权限表有个深入的了解。

创建

sys;//系统管理员,拥有最高权限

system;//本地管理员,次高权限

scott;//普通用户,密码默认为tiger,默认未解锁

登陆sqlplus / as sysdba;//

登陆sys帐户sqlplus sys as sysdba;//

sqlplusscott/tiger;//登陆普通用户scott

sqlplus sys as sysdba;//同上 

sqlplus scott/tiger;//登陆普通用户scott   

管理用户 

create user zhangsan;//在管理员帐户下,创建用户zhangsan   

alter user scott identified by tiger;//修改密码   

授予权限 

1、默认的普通用户scott默认未解锁,不能进行那个使用,新建的用户也没有任何权限,必须授予权限   /*管理员授权*/ 

grant create session to zhangsan;//授予zhangsan用户创建session的权限,即登陆权限 

grant unlimited session to zhangsan;//授予zhangsan用户使用表空间的权限   

grant create table to zhangsan;//授予创建表的权限   

grante drop table to zhangsan;//授予删除表的权限   

grant insert table to zhangsan;//插入表的权限   

grant update table to zhangsan;//修改表的权限 

grant all to public;//这条比较重要,授予所有权限(all)给所有用户(public) 

2、oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的,需要互相授权 

  /*oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的*/   

grant select on tablename to zhangsan;//授予zhangsan用户查看指定表的权限   

grant drop on tablename to zhangsan;//授予删除表的权限   

grant insert on tablename to zhangsan;//授予插入的权限   

grant update on tablename to zhangsan;//授予修改表的权限 

grant insert(id) on tablename to zhangsan; 

grant update(id) on tablename to zhangsan;//授予对指定表特定字段的插入和修改权限,注意,只能是insert和update 

grant alert all table to zhangsan;//授予zhangsan用户alert任意表的权限 

select * from  scott.emp  //select将select 权限授予一个用户,登录以后进行查询

撤销权限 

基本语法同grant,关键字为revoke   

查看权限 

select * from user_sys_privs;//查看当前用户所有权限   

select * from user_tab_privs;//查看所用用户对表的权限   

操作表的用户的表 

  /*需要在表名前加上用户名,如下*/   

select * from zhangsan.tablename   

权限传递 

  即用户A将权限授予B,B可以将操作的权限再授予C,命令如下: 

  grant alert table on tablename to zhangsan with admin option;//关键字 with admin option ,系统管理员给用户赋权时候

  grant alert table on tablename to zhangsan with grant option;//关键字 with grant option效果和admin类似  

如果A的权限被回收,那么相应A给B的权限也同时没有了。

角色 

  角色即权限的集合,可以把一个角色授予给用户   

create role myrole;//创建角色 

  grant create session to myrole;//将创建session的权限授予myrole   

grant myrole to zhangsan;//授予zhangsan用户myrole的角色   

drop role myrole;删除角色 

 

  /*但是有些权限是不能授予给角色的,比如unlimited tablespace和any关键字*/ 

Oracle创建表空间、创建用户以及授权、查看权限  

创建临时表空间 

CREATE TEMPORARY TABLESPACE test_temp 

TEMPFILE 'C:\oracle\product\10.1.0\oradata\orcl\test_temp01.dbf' 

SIZE 32M AUTOEXTEND ON NEXT 32M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL; 

创建用户表空间 

 

CREATE TABLESPACE test_data LOGGING 

DATAFILE 'C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\TEST_DATA01.DBF'  SIZE 32M AUTOEXTEND ON NEXT 32M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL; 

创建用户并制定表空间 

CREATE USER username IDENTIFIED BY password DEFAULT TABLESPACE TEST_DATA TEMPORARY TABLESPACE TEST_TEMP; 

给用户授予权限 

GRANT CREATE SESSION, CREATE ANY TABLE, CREATE ANY VIEW ,CREATE ANY INDEX, CREATE ANY PROCEDURE,ALTER ANY TABLE, ALTER

ANY PROCEDURE, 

DROP ANY TABLE, DROP ANY VIEW, DROP ANY INDEX, DROP ANY PROCEDURE, 

  SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE 

  TO username; 

将role这个角色授与username,也就是说,使username这个用户可以管理和使用role所拥有的资源 

GRANT role TO username; 

查看用户权限 

查看所有用户 

SELECT * FROM DBA_USERS; 

SELECT * FROM ALL_USERS; SELECT * FROM USER_USERS; 

查看用户系统权限 

SELECT * FROM DBA_SYS_PRIVS; SELECT * FROM USER_SYS_PRIVS; 

查看用户对象或角色权限 

SELECT * FROM DBA_TAB_PRIVS; SELECT * FROM ALL_TAB_PRIVS; SELECT * FROM USER_TAB_PRIVS; 

查看所有角色 

SELECT * FROM DBA_ROLES; 

查看用户或角色所拥有的角色 

SELECT * FROM DBA_ROLE_PRIVS; SELECT * FROM USER_ROLE_PRIVS; 

-------遇到no privileges on tablespace 'tablespace ' 

alter user userquota 10M[unlimited] on tablespace; 

(8)查看表结构命令:desc

(9)解锁scott/tiger用户

用户名scott,密码默认tiger,默认状态是被锁定,DBA用户执行
alter user scott account unlock;
用profile管理用户口令:

指定帐号登录输入密码的次数,也可指定用户锁定的时间,一般用dba用户执行,如下:

Sql>createprofile lock_account
limit failed_login_attemps 3password_lock_time 2;

Sql>alter user xiaoming profilelock_account;

终止口令:

要求用户每隔10天修改自已的登录密码,宽限期为2天,如下

Sql>create profile myprofile limitpassword_life_time 10 password_grace_time 2;

Sql>alter user tea profile myprofile;

口令历史:

如果希望用户修改密码时,不能使用以前使用过的密码,可使用口令历史,这样oracle就将口令修改信息存放到数据字典中,当修改密码时,对旧密码进比较,当用户输入与旧密码一样时,提醒用户重新输入。如下:

Sql>createprofile password_history
limitpassword_life_time 10 password_grace_time2
password_resue_time;//指定口令可重用,即10天后就可以重用

Sql> alter user tea profilepassword_history;

删除profile:

Sql>Drop profile password_history[cascade];

[cascade]代表级联删除
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: