zoukankan      html  css  js  c++  java
  • oracle1

    引言:

    数据保存问题?

    可使用文件保存和数据库保存。 

    使用文件保存数据存在几个缺点:

    1、文本的安全性问题;

    2、文件不利于查询和对数据的管理;

    3、文件不利于存放海量数据;

    4、文件在程序中控制不方便。

    为解决数据保存问题,专家们设计出更加利于管理数据的东东--数据库(本质就是一个软件),它能更有效的管理数据。数据库是衡量一个程序员水平的重要指标。

    数据库

    1、数据库的本质就是一款软件,这个软件专门用于管理和维护数据;

    2、数据存放在数据库中。

    数据库服务器、数据库和表的关系

    所谓安装数据库服务器,只是在机器上装了一个数据库管理程序,这个管理程序可以管理多个数据库,一般开发人员会针对每个应用创建一个数据库。

    为了保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。

    服务器访问量大的时候随时准备重启。

     oracle的安装

    系统要求 ■ 操作系统最好为windows server ■ 内存最好在256M以上 ■ 硬盘空间需要2G以上

    iso文件要镜像陈驱动器才能够使用。

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

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

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

    (3) 一般讲,对数据库维护,使用system用户登录就可以拉 

    也就是说syssystem这两个用户最大的区别是在于有没有create database的权限。

     oracle管理工具的介绍(1)

    sql*plus是oracle自带的工具软件,主要用于执行sql语句,plsql块. 如何使用:

    1)在开始->程序->oracle oradb_home10g->application development->sql*plus

    2)在运行栏中输入: sqlplusw即可

     oracle管理工具的介绍(2)

    概述: sqlplus 是 dos下操作oracle的工具,其功能和sql*plus相似.

    1)在运行栏中输入 sqlplus

    2)找到该可执行文件sqlplus.exe, 在oracle主目录ora10ginsqlplus.exe ,鼠标双击即可

     oracle管理工具的介绍(3)

    概述: pl/sql developer 属于第三方软件,主要用于开发,测试,优化 oracle pl/sql 的存储过程比如: 触发器,此软件oracle不带,需要单独安装。

     oracle管理工具的介绍(4)

    ■ Enterprise manager console(企业管理器) oracle 10g是通过web管理的 一般默认端口是5500, 也有1158的。 访问url(请一定保证oracle服务启动了): http://ip:1158 (也可能是5500)/em http://机器名:端口/em

    sql*plus常用命令

    ■ 连接命令

    (1)conn[ect]

    用法: conn 用户名/密码,则链接进去。

    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 回车,slecet* from table回车,并输入 sql>spool off 

    显示和设置环境变量 

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

    1.linesize 

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

    show linesize 

    set linesize 90 

    2.pagesize说明:设置每页显示的行数目,默认是14 

    用法和linesize一样 

    至于其它环境参数的使用也是大同小异 

    创建用户 
    概述:在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 xiaoming/m12; 
    ERROR: 
    ORA-01045: user XIAOMING lacks CREATE SESSION privilege; logon denied 
    警告您不再连接到 ORACLE。 
    SQL> show user; 
    USER 为 "" 
    SQL> conn system/p; 
    已连接。 
    SQL> grant connect to xiaoming; 赋予xiaoming连接的权限
    授权成功。 
    SQL> conn xiaoming/m12; 
    已连接。 
    SQL> 
    注意:grant connect to xiaoming;在这里,准确的讲,connect不是权限,而是角色。。 看图: 

    数据库除了表还有存储过程,触发器,视图。

    数据对象:函数,过程,包,类型,触发器,工作,库,表,视图,序列,角色,同义词,表空间,簇。

    现在说下对象权限,现在要做这么件事情: 
    * 希望xiaoming用户可以去查询emp表 
    * 希望xiaoming用户可以去查询scott的emp表 ,管理员和表的拥有者有这个权限,
      grant select on emp to xiaoming 
     select  *  from  scoot.emp
    * 希望xiaoming用户可以去修改scott的emp表 
      grant update on emp to xiaoming 
    * 希望xiaoming用户可以去修改/删除,查询,添加scott的emp表 
      grant all on emp to xiaoming 
    * scott希望收回xiaoming对emp表的查询权限 
      revoke select on emp from xiaoming 
    
    //对权限的维护。 
    * 希望xiaoming用户可以去查询scott的emp表/还希望xiaoming可以把这个权限(select 权限)继续给别人。 
    --如果是对象权限,就加入 with grant option 
      grant select on emp to xiaoming with grant option 
    我的操作过程: 
    SQL> conn scott/tiger; 
    已连接。 
    SQL> grant select on scott.emp to xiaoming with grant option; //不是系统用户(sys,system)要用scott.emp 
    授权成功。 
    SQL> conn system/p; 
    已连接。 
    SQL> create user xiaohong identified by m123; 
    用户已创建。 
    SQL> grant connect to xiaohong; 
    授权成功。 
    SQL> conn xiaoming/m12; 
    已连接。 
    SQL> grant select on scott.emp to xiaohong; //不是系统用户(sys,system)授权时要用scott.emp 
    
    授权成功。 
    
    --如果是系统权限。 
    system给xiaoming权限时: 
    grant connect to xiaoming with admin option //xiaoming可以把admin这个系统权限继续向下传递
    
    问题:scoot把权限给了xiaoming,xiaoming把权限给了xiaohong,如果scott把xiaoming对emp表的查询权限回收,那么xiaohong会怎样? 
    答案:被回收。 
    下面是我的操作过程: 
    SQL> conn scott/tiger; 
    已连接。 
    SQL> revoke select on emp from xiaoming; 
    撤销成功。 
    SQL> conn xiaohong/m123; 
    已连接。 
    SQL> select * from scott.emp; 
    select * from scott.emp 
    第 1 行出现错误: 
    ORA-00942: 表或视图不存在 
    
    结果显示:小红受到诛连了。

    数据库服务器、数据库和表的关系如图所示:

  • 相关阅读:
    关于unity的一个不错的插件平台
    erlang otp中的socket参数设置
    android开发国内镜像
    composer中文镜像
    bootstrap的一些资源
    根据现有表操作基于active record的model
    Erlang Web 监控工具
    erlang程序发布的时候需要注意的地方
    pcl学习笔记(二):点云类型
    c++中inline函数的意义
  • 原文地址:https://www.cnblogs.com/yaowen/p/4851918.html
Copyright © 2011-2022 走看看