• Oracle 学习笔记(一)


    与其它数据库比较

    小型数据库:Access、FoxBASE

    中型数据库:MySQL、SQL Server、INFORMIX

    大型数据库:Sybase、Oracle、DB2(负载:Sybase < Oracle < DB2)

    使用哪种数据库考虑因素:

    • 负载

    • 成本

    • 安全性

    安装

    安装过程不描述,网上有教程。

    Oracle 安装会自动的生成 sys 用户和 system 用户:  

    1. sys 用户是超级用户,具有最高权限,具有 sysdba 角色,有 create database的权限,该用户默认的密码是 change_on_install ;

    2. system 用户是管理操作员,权限也很大。具有 sysoper 角色,没有 create database 的权限,默认的密码是 manager ;

    3. 一般而言,对数据库维护使用 system 用户登录就可以了。

    这两个用户最大的区别在于有没有 create database 权限。

    Oracle的基本使用——基本命令

    sql * plus 的常用命令 :

    连接命令 

    1. conn[ect] 

    用法:conn 用户名/密码@网络服务名[as sysdba/sysoper]

    当用特权用户身份连接时,必须带上 as sysdba 或是 as sysoper。 

    2. disc[onnect] 

    说明: 该命令用来断开与当前数据库的连接 。

    3. passw[ord] 

    说明: 该命令用于修改用户的密码,如果要想修改其它用户的密码,需要用 sys/system 登录。 

    4. show user 

    说明: 显示当前用户名 

    5. exit 

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

    文件操作命令 

    1. start 和 @ 

    说明: 运行 sql 脚本 

    案例: sql>@ d:a.sql 或是 sql>start d:a.sql  

    2. edit 

    说明: 该命令可以编辑指定的sql脚本 

    案例: sql>edit d:a.sql,这样会把 d:a.sql 这个文件打开 

    3. spool  

    说明: 该命令可以将sql*plus屏幕上的内容输出到指定文件中去。 

    案例: sql>spool d:.sql 并输入 sql>spool off 

    交互式命令 

    1. &  

    说明:可以替代变量,而该变量在执行时,需要用户输入。 

    select * from emp where job='&job'; 

    2. edit 

    说明:该命令可以编辑指定的 sql 脚本 

    案例:SQL>edit d:a.sql 

    3. spool 

    说明:该命令可以将 sql * plus 屏幕上的内容输出到指定文件中去。 

    spool d:.sql 并输入 spool off 

    显示和设置环境变量 

    概述:可以用来控制输出的各种格式,set show 如果希望永久的保存相关的设置,可以去修改 glogin.sql 脚本 

    1. linesize 

    说明:设置显示行的宽度,默认是80个字符 

    show linesize 

    set linesize 90 

    2. pagesize 说明:设置每页显示的行数目,默认是14,用法和 linesize 一样,其它环境参数的使用也是大同小异。

    oracle用户管理

    oracle 用户的管理 

    用户名scott,密码默认 tiger,默认状态是被锁定, DBA 用户执行

    alter user scott account unlock; 可以解锁登陆;

    scott 是个演示用户,学习用的;

    创建用户  

    概述:在 oracle中 要创建一个新的用户使用 create user 语句,一般是具有 dba (数据库管理员)的权限才能使用。 

    create user 用户名 identified by 密码; 

    (oracle密码必须以字母开头,否则不会创建用户) 

    给用户修改密码 

    概述:如果给自己修改密码可以直接使用 

    password 用户名 

    如果给别人修改密码则需要具有dba的权限,或是拥有alter user的系统权限 

    SQL> alter user 用户名 identified by 新密码 

    删除用户 

    概述:一般以dba的身份去删除某个用户,如果用其它用户去删除用户则需要具有drop user的权限。 

    比如 drop user 用户名 【cascade】 

    在删除用户时,注意: 如果要删除的用户,已经创建了表,那么就需要在删除的时候带一个参数cascade; 

    用户管理的综合案例 

    概述:创建的新用户是没有任何权限的,甚至连登陆的数据库的权限都没有,需要为其指定相应的权限。

    给一个用户赋权限使用命令 grant,回收权限使用命令 revoke。 

    举例:

    SQL>conn stephen/stephen123; 

    ERROR: 

    ORA-01045: user STEPHEN lacks CREATE SESSION privilege; 

    logon denied 

    警告: 您不再连接到 ORACLE。 

    SQL> show user; 

    USER 为 "" 

    SQL> conn system/p; 

    已连接。 

    SQL> grant connect to stephen; 

    授权成功。 

    SQL> conn stephen/stephen123; 

    已连接。 

    注意:grant connect to stephen  准确的讲,connect不是权限,而是角色。 

    对象权限

    现在要做这么件事情: 

    * 希望 stephen 用户可以去查询 emp 表 

    * 希望 stephen 用户可以去查询 scott 的 emp 表  

      grant select on scott.emp to stephen

    * 希望 stephen 用户可以去修改 scott 的 emp 表 

      grant update on scott.emp to stephen

    * 希望 stephen 用户可以去修改、删除、查询、添加 scott 的 emp 表 

      grant all on scott.emp to stephen 

    * scott希望收回 stephen 对 emp 表的查询权限 

      revoke select on emp from stephen

    权限的维护 

    * 希望 stephen 用户可以去查询 scott 的 emp 表,还希望 stephen 可以把这个权限继续给别人。 

    --如果是对象权限,就加入 with grant option 

    grant select on emp to stephen with grant option 

    操作过程: 

    SQL> conn scott/tiger; 

    已连接。 

    SQL> grant select on scott.emp to stephen with grant option; 

    授权成功。 

    SQL> conn system/p; 

    已连接。 

    SQL> create user bobi identified by bobi123; 

    用户已创建。 

    SQL> grant connect to bobi; 

    授权成功。 

    SQL> conn stephen/stephen123; 

    已连接。 

    SQL> grant select on scott.emp to bobi; 

    授权成功。 

    --如果是系统权限。 

    system 给 stephen 权限时: 

    grant connect to stephen with admin option;

    如果 scott 把 stephen 对 emp 表的查询权限回收,那么 bobi 会怎样? 被回收。 

    操作过程: 

    SQL> conn scott/tiger; 

    已连接。 

    SQL> revoke select on emp from stephen; 

    撤销成功。 

    SQL> conn bobi/bobi123; 

    已连接。 

    SQL> select * from scott.emp; 

    select * from scott.emp 

    第 1 行出现错误: 

    ORA-00942: 表或视图不存在 

    结果显示:bobi 受到牵连。

    今天就复习到这,后续更新。

    【微信公众号:Stephen】一个毕业三年后自学 Java 入行的程序员。
  • 相关阅读:
    (转)ASP.NET Mvc 2.0 1. Areas的创建与执行
    新世代交易管理機制~System.Transactions
    水晶報表入門
    MyGeneration 如何连接 mysql 来生成代码
    vs.net 启动不了
    Oracle面试问题-技术篇
    把excel两列字符数据用逗号合并起来
    论Leader的技能
    物流行业名词
    html 向aspx 页面传值
  • 原文地址:https://www.cnblogs.com/stephen-java/p/10706346.html
Copyright © 2020-2023  润新知