sqlplus使用梳理

sql/plus的使用
username@hostString  
username/password@hostString

SQL> select * from tab;  查看用户下所有的表
SQL> set pause on;  可以使大量结果集在用户按“Enter”(回车)后翻页
SQL> set pagesize 100;  设定SQL语句返回结果集一页的行数100, 默认值是14
SQL> set linesize 100;  设定SQL语句返回结果集一行的宽度100, 默认值是80
SQL> column 字段名 format 99999999999;


改变表的名称
SQL> RENAME 表名1 TO 表名2;
SQL> ALTER TABLE 表名1 RENAME TO 表名2;
 

如何分析和执行SQL语句
写多表连接SQL语句时要知道它的分析执行计划的情况.
Sys用户下运行@/ORACLE_HOME/sqlplus/admin/plustrce.sql
 产生plustrace角色
Sys用户下把此角色赋予一般用户 SQL> grant plustrace to &username;
一般用户下运行@/ORACLE_HOME/rdbms/admin/utlxplan.sql
 产生plan_table
SQL> set time on;   说明:打开时间显示
SQL> set autotrace on;    说明:打开自动分析统计,并显示SQL语句的运行结果
SQL> set autotrace traceonly;  说明:打开自动分析统计,不显示SQL语句的运行结果
接下来你就运行测试SQL语句,看到其分析统计结果了。
一般来讲,我们的SQL语句应该避免大表的全表扫描。
SQL> set autotrace off;   说明:关闭自动分析统计


 Ctrl^C    终止正在运行的SQL语句
 remark  /*...*/  --  注释符号
 HOST     可执行的操作系统下的命令 有些unix可以用 !
 BREAK ON column_name SKIP n [ ON column_name SKIP n ]
              按字段的名称column_name分隔显示,更清晰,SKIP n 是在分隔处空行的数量n
        BREAK ON ROW SKIP n  每一行间隔都放n个空行

 COMPUTE 集合运算符 OF 字段1 ON 字段2 按字段2对字段1进行集合运算
 COMPUTE后面可以跟的集合运算符:
  SUM  MINIMUM  MAXIMUM  AVG  STD  VARIANCE  COUNT  NUMBER
  BREAK ON REPORT
        COMPUTE SUM LABEL TOTAL OF SAL ON REPORT 在全部结果集后面算合计
        select ename,sal from emp where job='SALESMAN';
      
        COMPUTE AVG LABEL avg OF SAL ON REPORT  在全部结果集后面算平均值
        /      再次执行上次的sql语句    
        break on DEPTNO skip 2 on JOB skip 1   在BREAK字段结果集后面算合计
 COMPUTE SUM OF SAL ON DEPTNO  
        SELECT DEPTNO,JOB,ENAME,SAL FROM EMP ORDER BY DEPTNO,JOB;
 
 SQL> CLEAR BREAKS;   清除设置的BREAK条件
 SQL> CLEAR COMPUTES;   清除设置的COMPUTE条件


控制用户访问
1.权限的类别
系统级权限: 针对整个系统操作的权限 
 如: 用户名/密码, 使用表空间的限额等
对象级权限: 针对某个具体object操作的权限
 如: 针对某个表, 视图, 表的某个字段的select, update, delete权限
2.
查看当前数据库的用户信息
SQL>select username,default_tablespace,temporary_tablespace from dba_users;
查看在线用户信息
SQL>select count(*) “number”,username “current username”  from v$session group by username;  
用户查看自己的缺省表空间
SQL>select username,default_tablespace from user_users;

3. 创建新用户
SQL> create user username identified by password
 default tablespace tablespace_name temporary tablespace temp
 quota unlimited on tablespace_name
 quota 1k on system
 [quota 1k on other_tablespace_name ……] ;
给用户赋权限
SQL> grant connect, resource to username;
查看当前用户的权限角色
SQL>  select * from user_role_privs;
查看当前用户的系统权限和表级权限
SQL>  select * from user_sys_privs;
SQL>  select * from user_tab_privs;

4 、常用的角色及其权限
CONNECT        8 privs 连上Oracle,做最基本操作
RESOURCE       8  privs 具有程序开发最基本的权限
DBA            114  privs 数据库管理员所有权限
EXP_FULL_DATABASE      5  privs 数据库整个备份输出的权限
IMP_FULL_DATABASE        64  privs 数据库整个备份输入的权限
查看角色明细的系统权限
SQL> select * from role_sys_privs;

5、改变老用户     可以改变老用户的密码, 缺省表空间, 临时表空间, 空间限额.
SQL> alter user username identified by password
      default tablespace tablespace_name
      temporary tablespace temp 
      quota unlimited on tablespace_name
      quota 1k on system
      [quota 1k on other_tablespace_name ……] ;
撤销用户的角色或权限
SQL> revoke role_name or priv_name from username;
注意事项:撤消用户的角色dba时, 同时撤消了用户unlimited tablespace的系统权限, 切记要再次赋予resource角色给此用户
SQL> grant resource to username;
6、删除用户
如果用户下没有任何数据对象
SQL> drop user username;
如果用户下有数据对象
SQL> drop user username cascade;
注意事项 如果用户下有含clob,blob字段的表, 应该先删除这些表后,才能用cascade选项完全删除.

7、角色的概念和管理
角色是命名多个相关权限的组合. 能把它赋于其它的用户或角色我们能创建角色, 使权限管理更容易一些.

扫描二维码关注公众号,回复: 1141374 查看本文章

8、赋于系统的权限语法和例子
语法:
SQL> GRANT sys_priv TO {user|role|PUBLIC}      [WITH ADMIN OPTION];
例子:
SQL> GRANT create session  TO sue, rich;
SQL> GRANT create table To scott, manager;

注意: 如果用WITH ADMIN OPTION通过中间用户赋于的系统权限 中间用户删除后, 系统权限仍然存在.

9、赋于数据对象级的权限语法和例子
语法:
SQL> GRANT object_priv [(columns)] ON object TO {user|role|PUBLIC}      [WITH GRANT OPTION];
例子:
SQL> GRANT select ON s_emp  TO sue, rich;
SQL> GRANT update (name, region_id)
 ON s_dept  TO scott, manager;
注意: 如果用WITH GRANT OPTION通过中间用户赋于的对象权限 中间用户删除后,对象权限就不存在了. 

首先你得创建一个计划表而且还需要有PLUSTRACE角色才行!
一.首先Creating a PLAN_TABLE
CONNECT test_user
@$ORACLE_HOME/rdbms/admin/utlxplan.sql
Table created.

二.你用DBA授下权
这样做:
CONNECT / AS SYSDBA
@$ORACLE_HOME/sqlplus/admin/plustrce.sql

drop role plustrace;
Role dropped.

create role plustrace;
Role created.

grant plustrace to dba with admin option;
Grant succeeded.

grant PLUSTRACE to test_user

猜你喜欢

转载自yuebishuhui-sina-com.iteye.com/blog/2194759