oracle基础知识

导读:本篇文章讲解 oracle基础知识,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1. 数据库管理系统

数据库: 文件的集合 – 数据文件、重做日志文件、控制文件

  • 关系数据库:大型企业用Oracle 、中小型企业用 MySQL
  • 非关系数据库:常用 Redis

数据库管理系统: 管理数据库的软件

2. 用户权限、数据库相关信息

创建数据库后,后台自行创建sys, system,sysman, scott等用户。- 其中scott是示范普通用户

  • sys用户: 最高权限 → 不能用normal身份登录,只能以sysdba、sysoper身份登录
  • system用户: 用于存放一次性的内部数据 – 如特性或工具的管理信息、使用 dba身份登录
  • normal普通用户: 使用 normal身份登录

3. 用户user

新建的用户没有任何权限 → 包括登录权限、需要数据库管理者赋予权限

正在登录状态的用户,不给删除

父亲的系统权限被收回,不会影响儿子的系统权限

父亲的对象权限被收回,直接影响儿子的对象权限

数据字典

  • dba_users:查看当前管理员所管的全部用户名
1. 用户创建、修改、删除

  语法结构

// 创建用户
create user 用户名
identified by 用户登录密码
【 default tablespace 默认表空间名 
    temp tablespace 临时表空间名 
    quota 配额大小 on 表空间名      // 允许用户在表空间使用的空间大小、可以设置多个表空间// 修改用户配额
alter user 用户名 quota 内存大小  on 表空间名

// 删除用户 ---- cascade级联删除,先删除该用户下的所有用户对象,在删除自身
drop user 用户名 【 cascade 】   


  示例

create user test_user
identified by 123456;     // 使用pl-sq;登录:显示缺少创造会话权限

//修改配额
alter user test_user quota 10m on users;

2. 用户权限
用户状态

用户状态

open — 正常状态、初始创建后的状态

expired — 密码过期状态、下次登录时重设密码

locked — 锁定用户状态

unlocked — 不锁定用户状态

  语法结构 – 修改用户状态

alter user 用户名 password expire
alter user 用户名 account lock/unlock;

系统权限

数据字典:

  • system_privilege_map:查看系统所有权限*

权限

系统权限 — 在数据库中执行指定的行为 — DDL

对象权限 — 允许用户访问和操作一个指定对象 — DML


  语法结构 – 授予系统权限

// 多系统权限 或者 多用户  需要逗号分隔
grant 系统权限 to 用户/角色
with admin  option      //"与管理者选项"  -- 说明该用户的权限被允许授予其他用户


  语法结构 – 撤销系统权限

revoke 系统权限 from 用户名/角色名   

对象权限

对象的所有者自动拥有对象所有权限、且可以授予其他用户对象权限

对象权限表
在这里插入图片描述


  语法结构 – 授予、回收对象权限

grant 对象权限 / all privileges / 列名 
on  对象名
to  用户名 / public / 角色名      // pblic授权给所有用户
with grant option;

// 回收对象权限  --  会级联删除
revoke 对象权限种类 on 对象名 from 用户名/角色;

角色 – role

角色是权限的集合
数据字典:

  • DBA_SYS_PRIVS:预定义角色、以及角色权限


简化了用户授权的繁琐、直接赋予用户一个角色,则用户则拥有多项的权限,则无需一个一个的权限赋予个用户
[外链图片转存失败(img-ivwvSq6c-1568539821186)(en-resource://database/2852:1)]


  语法结构 – 角色创建、角色授予用户、撤销角色

create role 角色名;

// 多角色需要用逗号分隔
grant 角色 to 用户;

// 从用户撤销角色
revoke 角色 from 用户名;

// 删除角色
drop role 角色名;
public对象

public对象既不是用户、也不是角色 → 代表公众、公开
一旦赋予该对象权限、所有数据库用户都会拥有该权限 — public一开始没有任何权限


  示例

grant create session to public;

create user b identified by 123456;     // 如果没有前面那条语句是不能登录的

4. 报错、异常解决方案

(1) ORA-12560: TNS: 协议适配器错误
  • 没有打开两个关键的服务
    1. OracleOraDb11g_home1TNSListener → 对数据库进行监听,以及打开端口
    2. OracleService+自己创建的数据库名 → 打开指定本地操作的数据库
       
  • 注册表的 ORACLE_SID 并不是当前打开服务的数据库名 → 需要自行修改为当前所打开的数据库名
    1. 该环境变量在注册表的 \HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_OraDb11g_home1

(2) PL-SQL Developer显示不出Tables文件夹下的所有表格
  • 当前用户、所有用户进行切换,最后返回当前用户 → 即可显示出所有表格
    [外链图片转存失败(img-o7kcG8RU-1568539821226)(en-resource://database/2222:1)]

5. 命令行语句

在本地连接前至少必须打开两个服务:

  • ① OracleOraDb11g_home1TNSListener → 对数据库进行监听,以及打开端口
  • ② OracleService+自己创建的数据库名 → 打开指定本地操作的数据库

  1. 验证数据库是否创建成功 – 命令行输入
sqlplus /nolog
SQL> conn /as sysdba      // 进入超级管理员权限
SQL> conn               // 连接其他用户登录数据库,只需打出这个自行弹出用户名登录字段


2. 修改、查询用户的信息以及权限 – 需要超级管理员权限sys

SQL> select username from dba_users    // 查看当前管理员所管的全部用户名
SQL> alter user 用户名 account unlock   //解锁用户,不在被管理员拉黑不给登陆
SQL> alter user 用户名 identified by  密码   // 设置/修改 用户的登录口令


6. 导入数据到数据库

  方法1:sqlldr

1. 创建一个本地的 ctl类型文件
load data
infile 'C:/Users/lrc/Desktop/dept.csv'
append into table dept_copy1  [ when 过滤插入数据的条件 ]
fields terminated by ','1
trailing nullcols(deptno, dname, loc)

2.  将excel数据保存为   .csv格式的文件

3. 命令提示符:sqlldr userid=用户名/密码@服务器名 control=该ctl文件的地址(不需要写双引号)


  方法2:sqlldr


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/46603.html

(0)
小半的头像小半

相关推荐

极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!