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

oracle 常用语句

2016-07-27 14:07 573 查看
ORACLE用户

数据库系统权限(DataBase System Privilege)

数据库对象权限(DataBase System Privilege)

Oracle内部用户Sys和System

创建用户:create user user01 identified by u01;

修改用户:alter user user01 identified by usr01;

删除用户:drop user user01;

删除用户与其对象:drop user user01 CASCADE;

用户授权连接:grant connect,resource to user01;

Oracle 3种标准角色:

1.Connect Role(连接角色):临时用户,不需要建表的用户。

2.Resource Role(资源角色):更可靠和正式的数据库用户。

3.Dba Role(数据库管理员角色):拥有所有的系统权限。

操作:grant(授权)命令:grant connect,resource to user01;

      revoke(撤销)命令:revoke connect,resource to user01; 

 create user user01 identified by u01;

grant connect,resource,dba to user01; 

创建用户并指定表空间

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;

ORACLE用户

数据库系统权限(DataBase System Privilege)

数据库对象权限(DataBase System Privilege)

Oracle内部用户Sys和System

创建用户:create user user01 identified by u01;

修改用户:alter user user01 identified by usr01;

删除用户:drop user user01;

删除用户与其对象:drop user user01 CASCADE;

用户授权连接:grant connect,resource to user01;

Oracle 3种标准角色:

1.Connect Role(连接角色):临时用户,不需要建表的用户。

2.Resource Role(资源角色):更可靠和正式的数据库用户。

3.Dba Role(数据库管理员角色):拥有所有的系统权限。

操作:grant(授权)命令:grant connect,resource to user01;

      revoke(撤销)命令:revoke connect,resource to user01;

创建角色:除了系统自带的3种标准角色外用户可以创建自己的role.

          create role student;

角色授权: grant select on CLASS to student; 注:拥有student角色的用户都具有对CLASS表的select权限。

删除角色:drop role student;

查看用户有哪些角色:select grant_role from dba_role_privs where grantee='scott';

查看用户有哪些权限:select privilege from dba_sys_privs where grantee='scott';

                    select privilege from dba_sys_privs where grantee='CONNECT';

默认用户:Sys:oralce中的超级用户,主要用来维护系统信息和管理实例。

          System:oracle中默认的系统管理员,拥有dba权限。通常管理oracle数据库的用户、权限和存储等。

          Scott:oracle数据库的一个示范账户,在数据库安装时创建。

用户授权:grant 权限 [ on 对象名 ] to 用户名 [ with grant option];

          grant select on scott.emp to user01 with grant option;

          grant creat session to user01;

授予user01用户查看emp表数据的权限

1.验证user01对scott用户的emp表进行查询的权限。

SQL>select * from scott.emp;

2.为用户user01授予scott用户的emp表的查询权限。

SQL>conn scott/scott@test;

SQL>grant select on scott.emp to user01;

3.使用user01账户登录并查询scott用户的表emp信息。

SQL>conn user01/u01@test;

SQL>select * from scott.emp;

收回权限: revoke 权限 [ on 对象名 ] from 用户名

SQL>revoke select on scott.emp from user01;

修改用户密码:alter user 用户名 identified by 新密码;

与权限相关的表:

1.dba_sys_privs(所有系统权限)

2.user_sys_privs(用户拥有的系统权限)

3.user_col_privs(用户拥有的对象权限)

常用的系统权限赋值语句:

SQL>grant create session to user01;

SQL>grant create table to user01;

SQL>grant unlimited tablespace to user01;

SQL>grant create session to public;

对象权限的赋予与撤销语句:

SQL>grant select on mytable to user01;

SQL>grant all on mytable to user01;

SQL>revoke select on mytable from user01;

SQL>revoke all on mytable from user01;

Oracle中除了能在表对象上赋予相应的权限,还能将权限控制到表的列上:

SQL>grant update(name) on mytable to user01;

SQL>grant insert(id) on mytable to user01;

口令管理

使用profile管理用户口令

profile是口令限制,资源管理的命令集合,当建立数据库时,Oracle会自动建立名词为default的profile。当建立用户没有指定profile选项,那Oroacle就会将default分配给用户。

关键字列表:

SQL>create profile 配置文件名称 limit failed_login_attempts 尝试次数 password_lock_time 锁定天数;

SQL>alter user 用户名 profile 配置文件名称; 

例:指定tea用户最多只能尝试3次登陆,锁定时间为2天,下面可以实现。

SQL>create profile lock_account limit failed_login_attempts 3 password_lock_time 2;

SQL>alter user tea profile lock_account;

给账号解锁

SQL>alter user user01 account unlock;

例:为了让用户定期修改密码可使用终止口令完成。

SQL>create profile myprofile limit password_life_time 10 password_grace_time 2;

给用户解锁

SQL>alter user user01 profile myprofile;

删除profile

SQL>drop profile myprofile [cascade];

-----------------------------------------------查看用户权限---------------------------------------------------------

查看所有用户

查看所有用户

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;

select * from QUEST_SCRIPT

--查看用户有那些角色

select * from dba_role_privs 

where grantee=upper('oneboss')

select * from dba_role_privs 

where grantee=upper('dbcustadm')

select * from dba_role_privs 

where grantee=upper('query')

select * from dba_role_privs 

where grantee=upper('prog_user')

--查看当前用户有那些角色

select * from user_role_privs

--查看角色有那些权限操作

select * from role_sys_privs where role = upper('SELECT_CATALOG_ROLE')

select * from role_sys_privs where role = upper('EXP_FULL_DATABASE')

-----------------修改密码问题-----------------------------------

有同事在修改oracle用户名密码是提示ORA-00988错误。

修改密码之所以会有如上报错是因为Oracle本身对系统用户密码有限制造成的,首先修改的密码必须满足如下条件。

?系统用户(SYS、SYSTEM)口令长度不能小于7个字符

?第一个字符不能为数字

?且全部字符中应该为字母和数字混合

如果非要把密码修改为以数字开头或有特殊字符的密码,可以使用如下方法:

SQL> alter user test identified by "123abc";

User altered.

此处应该使用" "

下面的操作在密码中使用“/”

SQL> alter user test identified by "123/abc";

User altered.

SQL>

  下载LOFTER客户端 

--查看用户和默认表空间的关系

select username,default_tablespace from dba_users;

--查看当前用户能访问的表

select * from user_tables; 

--Oracle查询用户表

select * from user_all_tables;

--Oracle查询用户视图

select * from user_views;

--查询所有函数和储存过程:

select * from user_source;

--查询所有用户:

select * from all_users;

--select * from dba_users

--查看当前用户连接:

select * from v$Session;

--查看用户角色

SELECT * FROM USER_ROLE_PRIVS;

--查看当前用户权限:

select * from session_privs;

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

SELECT * FROM DBA_ROLE_PRIVS;

--查看所有角色

select * from dba_roles;

--查看数据库名

SELECT NAME FROM V$DATABASE;

--查看所有表空间使用情况

select a.file_id "FileNo",

       a.tablespace_name "Tablespace_name",

       a.bytes "Bytes",

       a.bytes - sum(nvl(b.bytes, 0)) "Used",

       sum(nvl(b.bytes, 0)) "Free",

       sum(nvl(b.bytes, 0)) / a.bytes * 100 "%free"

  from dba_data_files a, dba_free_space b

 where a.file_id = b.file_id(+)

 group by a.tablespace_name, a.file_id, a.bytes

 order by a.tablespace_name;

显示分区表信息

  显示数据库所有分区表的信息:DBA_PART_TABLES

  显示当前用户可访问的所有分区表信息:ALL_PART_TABLES

  显示当前用户所有分区表的信息:USER_PART_TABLES

  显示表分区信息 显示数据库所有分区表的详细分区信息:DBA_TAB_PARTITIONS

  显示当前用户可访问的所有分区表的详细分区信息:ALL_TAB_PARTITIONS

  显示当前用户所有分区表的详细分区信息:USER_TAB_PARTITIONS

  显示子分区信息 显示数据库所有组合分区表的子分区信息:DBA_TAB_SUBPARTITIONS

  显示当前用户可访问的所有组合分区表的子分区信息:ALL_TAB_SUBPARTITIONS

  显示当前用户所有组合分区表的子分区信息:USER_TAB_SUBPARTITIONS

  显示分区列 显示数据库所有分区表的分区列信息:DBA_PART_KEY_COLUMNS

  显示当前用户可访问的所有分区表的分区列信息:ALL_PART_KEY_COLUMNS

  显示当前用户所有分区表的分区列信息:USER_PART_KEY_COLUMNS

  显示子分区列 显示数据库所有分区表的子分区列信息:DBA_SUBPART_KEY_COLUMNS

  显示当前用户可访问的所有分区表的子分区列信息:ALL_SUBPART_KEY_COLUMNS

  显示当前用户所有分区表的子分区列信息:USER_SUBPART_KEY_COLUMNS

  ---------------------------------------------------------------------------------------------------

  select * from user_tables a where a.partitioned='YES'

  删除一个表的数据是truncate table table_name; 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: