Oracle介绍、安装、客户端工具使用、服务、用户

目录

一、Oracle介绍

1、Oracle简介

2、Oracle版本

3、四大特点

4、Oracle体系结构

二、Oracle 安装

三、客户端工具使用

1、SQL Plus工具

2、SQL*Plus 命令行工具

3、PL/SQL Developer 工具

四、服务

1、启动服务

 2、服务实例名设置

五、用户

1、以系统管理员登陆数据库:sqlplus system/a123456@orcl

2、解锁系统自带用户scott, 切换连接并设置密码为tiger

3、Oracle用户创建(删除)

4、授权语句:grant...[on...] to...

5、查看用户的权限或角色

6、取消用户权限:revoke...[on...] to...

7、修改用户密码、锁定状态

8、创建表空间


一、Oracle介绍

1、Oracle简介

Oracle 是甲骨文公司开发的一款关系型数据库,它一款系统可移植性好、使用简单、功能强大的关系型数据库。它为各行业在各类环境下(服务器、虚拟机、微机环境下)可以快速搭建一种高效率、可靠性好、高吞吐量的数据库解决方案。

2、Oracle版本

Oracle有个人版(windows平台上提供),标准版1(1-2cpu的服务器),标准版(1-4cpu的服务器,可以做双机热备和RAC),企业版(全功能);

Oracle从1979开始发布Oracle2.0开始到现在Oracle12c,从开始的只是数据存储和查询到后来的分布式、RAC、网络计算、到现在的对云计算的支持,当中经历了很多变迁和计算的提升。

2001年发布的Oracle9i之前,甲骨文公司把他们的数据库产品广泛的移植到了不同的平台上。截止甲骨文公司的Oracle10g/11g/12c都支持windows、Linux各大版本,包括X-86/64位系统。在各类大、中、小、微机环境中都适用。现阶段12C支持分布式数据处理。

3、四大特点

  • Oracle数据库具有完整的数据库管理功能、完备关系的产品以及具有分布式处理能力的数据库。
  • 它对数据的可靠性、大量性、持久性、共享性提供了一套可靠的解决方案、而且可以轻松支持多用户、大事务量的事务处理
  • 它的优点就是可用性强、可扩展性强、数据安全性强、稳定性高,以及现阶段12C支持分布式数据处理。
  • 它提供了一套严禁的逻辑结构、文件结构、相关恢复技术的解释和实现。

4、Oracle体系结构

Oracle数据库实际上是一个数据的物理储存系统,这其中包括数据文件(ora/dbf)、参数文件、控制文件、联机日志等。Oracle数据库服务器由一个数据库和至少一个数据库实例组成。 数据库是一组存储数据的文件,而数据库实例则是管理数据库文件的内存结构。此外,数据库是由后台进程组成。

实例:Oracle实例是客户端应用程序(用户)和数据库之间的接口。一个操作系统只有一个Oracle数据库,但是可以安装多个Oracle实例,一个Oracle实例对应着一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)。Oracle实例由三个主要部分组成:系统全局区(SGA),程序全局区(PGA)和后台进程

数据文件:Oracle数据文件是数据存储的物理单位,数据库的数据是存储在表空间中的。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间,一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。

表空间:表空间是Oracle 对物理数据库数据文件(ora/dbf)的逻辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间由同一磁盘上的一个或多个数据文件(datafile)组成,一个数据文件只能属于一个表空间。

oracle用户:表当中的数据是有Oracle用户放入到表空间当中的,而这些表空间会随机的把数据放入到一个或者多个数据文件当中。oracle对表数据的管理是通过用户对表的管理去查询,而不是直接对数据文件或表空间进行查询。因为不同用户可以在同一个表空间上面建立相同的表名。但是通过不同的用户管理自己的表数据。

二、Oracle 安装

安装包和安装详细介绍:https://blog.csdn.net/weixin_41685388/article/details/103576137

或者百度一下,找到对应版本安装步骤,按照提示安装即可,这里就不多啰嗦了。

安装时注意不要忘记给用户解锁和设置密码。

三、客户端工具使用

用户名输入规则:用户名[ as 连接身份]   连接身份(normal,sysoper,sysdba)
连接身份代表着改用户连接数据库后享受的权限,oracle 有三种身份如下
    ~ sysdba:数据库管理员身份。权限:打开(关闭)数据库服务器、备份(恢复)数据库、日志功能、会话限制、数据库管理功能等。
    ~ sysoper:数据库操作员身份 。权限:打开(关闭)数据库服务器、备份(恢复)数据库、日志功能、会话限制。
    ~ normal:普通用户。权限:操作该用户下的数据对象和数据查询,默认的身份是normal用户。
注意:sys用户必须用sysdba才能登陆(使用:sys as sysdba),system用户(数据库管理员身份,直接使用:system)。

口令:既是给登陆用户设置的登陆口令
主机字符串:ip:端口(本机默认:127.1.1.0:1521 或者 localhost:1521)

1、SQL Plus工具

该工具是 Oracle 系统默认安装的自带的一个客户端工具。在 Windows cmd 命令行中输入“sqlplus”命令,就能够启动该工具了,如下图:

或一次性全输入语法:sqlplus username/password@serviceName [ as 连接身份](案例:sqlplus system/a123456@orcl)

或者直接在安装文件中找到SQL Plus工具 直接启动(可以在小窗口输入用户、口令等信息连接,也可以直接确认,在命令行中输入登录信息)

         

2、SQL*Plus 命令行工具

该命令行工具提供了和oracle数据库交互能力,不仅仅可以连接本地数据库,也可以连接远程数据库。在cmd命令行中输入“sqlplus /nolog ”启动该工具,如下图:

这个时候其实只是启动了一个客户端进程,可以通过命令行进行连接数据库。输入命令:

语法:conn 用户名/密码@服务器连接字符串 as 连接身份(次身份需要解锁)

案例:conn dmsys/a123456@127.0.0.1:1521/orcl

案例:conn sys/a123456@127.0.0.1:1521/orcl as sysdba

3、PL/SQL Developer 工具

在实际Oracle的开发过程当中,经常会使用到一个第三方开发工具 PL/SQL Developer,因为SQLPLUS开发过程当中操作相对比较麻烦,不具有友好的可视化操作,因此,使用 PL/SQL Developer 开发工具替代SQLPLUS来进行oracle数据库开发,他的运行也需要安装Oracle客户端软件,并且可以通过本地网络服务配置向导配置好网络服务名,可以使用服务名直接连接登录。需要自行下载安装。如下:

四、服务

1、启动服务

方法1:在服务中开启

方法2:在oracle.bat里写入下面三行代码,以后直接双击启动就可以了。

 2、服务实例名设置

默认:

  

新建服务名:新建完成后,再点击上方的文件--保存网络配置

    

五、用户

oracle用户:表当中的数据是由Oracle用户放入到表空间当中的,而这些表空间会随机的把数据放入到一个或者多个数据文件当中。oracle对表数据的管理是通过用户对表的管理去查询,而不是直接对数据文件或表空间进行查询。因为不同用户可以在同一个表空间上面建立相同的表名。但是通过不同的用户管理自己的表数据。

sqlplus登陆用户语法:sqlplus username/password@serviceName [ as 连接身份]

1、以系统管理员登陆数据库:sqlplus system/a123456@orcl

2、解锁系统自带用户scott, 切换连接并设置密码为tiger

  • 锁定用户:ALTER USER 用户名 ACCOUNT LOCK;
  • 解锁用户: ALTER USER 用户名 ACCOUNT UNLOCK;
  • 切换用户(connect 可以简写conn):connect username/password@serviceName [ as 连接身份]
  • 查看当前用户:show user;
  • select table_name from user_tables; //当前用户拥有的表
    select * from tab;  //当前用户拥有的表
    select table_name from all_tables; //所有用户的表
    select table_name from dba_tables; //包括系统表
    select table_name from dba_tables where owner='用户名'; //指定用户
  • 退出登录:quit;

3、Oracle用户创建(删除)

sqlplus system/a123456@orcl as sysdba;  -- 连接数据库(管理员角色)。

-- 创建用户 
create user jalen -- 用户名
  identified by "a123456" -- 密码
  default tablespace USERS -- 表空间名
  temporary tablespace temp -- 临时表空间名
  profile DEFAULT    -- 数据文件(默认数据文件)
  account unlock;  -- 账户是否解锁(lock:锁定、unlock解锁)

-- 连接登陆测试
conn jalen/a123456@orcl

-- 删除用户
drop user student; -- 删除student用户(student:用户名)

 

虽然创建了用户,但还不能使用,需要给用户授予数据库角色和设置用户权限。先说一下数据库角色和用户权限和:

(1)、数据库角色(connect、resouce、dba

oracle数据库角色是若干系统权限的集合,给Oracle用户进行授数据库角色,就是等于赋予该用户若干数据库系统权限。常用的数据库角色如下:

  • CONNECT角色:connect角色是Oracle用户的基本角色,connect权限代表着用户可以和Oracle服务器进行连接,建立session(会 话)。
  • RESOURCE角色:resouce角色是开发过程中常用的角色。 RESOURCE给用户提供了可以创建自己的对象,包括:表、视图、序列、过程、触发器、索引、包、类型等。
  • DBA角色:DBA角色是管理数据库管理员该有的角色。它拥护系统了所有权限,和给其他用户授权的权限。SYSTEM用户就具有DBA权限。

三个数据库角色,对应有三个连接身份。

(2)、用户权限(系统权限、对象权限)

Oracle数据库用户权限分为:系统权限和对象权限两种。

  • 系统权限:比如:create session可以和数据库进行连接权限、create table、create view 等具有创建数据库对象权限
  • 对象权限:比如:对表中数据进行增删改查操作,拥有数据库对象权限的用户可以对所拥有的对象进行相应的操作。

因此,在实际开发过程当中可以根据需求,把某个角色或系统权限赋予某个用户。

  • 系统权限只能通过DBA用户授权!所以通常用于连接的用户(sqlplus system/a123456 as sysdba; 
  • 对象权限由拥有该对象权限的对象授权!
  • 数据库角色选择授权一般也只能通过DBA用户授权!(sqlplus system/a123456 as sysdba;
  • 用户不能自己给自己授权!(所以授权可以统一的:sqlplus system/a123456 as sysdba;

4、授权语句:grant...[on...] to...

--GRANT 数据库角色 TO 用户
grant connect to jalen;--授权connect角色(必须)
grant resource to jalen;--授予resource角色
grant dba to jalen; -- 授予管理员dba角色

--GRANT 用户的系统权限 to 用户
grant create session to jalen; -- 授予用户登录数据库的权限
    -- 授予用户操作表空间的权限:
grant unlimited tablespace to jalen;  -- 授予用户无限制的操作表空间的权限
grant create tablespace to jalen;
grant alter tablespace to jalen;
grant drop tablespace to jalen;
grant manage tablespace to jalen;
    -- 授予用户操作表的权限:
grant create table to jalen; (包含有create index权限, alter table, drop table权限)
    -- 授予用户操作视图的权限:
grant create view to jalen; (包含有alter view, drop view权限)
    -- 授予用户操作触发器的权限:
grant create trigger to jalen; (包含有alter trigger, drop trigger权限)
    -- 授予用户操作存储过程的权限:
grant create procedure to jalen;(包含有alter procedure, drop procedure 和function 以及 package权限)
    -- 授予用户操作序列的权限:
grant create sequence to jalen; (包含有创建、修改、删除以及选择序列)
    -- 授予用户回退段权限:
grant create rollback segment to jalen;
grant alter rollback segment to jalen;
grant drop rollback segment to jalen;
    -- 授予用户同义词权限:
grant create synonym to jalen;(包含drop synonym权限)
grant create public synonym to jalen;
grant drop public synonym to jalen;
    -- 授予用户关于用户的权限:
grant create user to jalen;
grant alter user to jalen;
grant become user to jalen;
grant drop user to jalen;
    -- 授予用户关于角色的权限:
grant create role to jalen;
    -- 授予用户操作概要文件的权限
grant create profile to jalen;
grant alter profile to jalen;
grant drop profile to jalen;
    -- 允许从sys用户所拥有的数据字典表中进行选择
grant select any dictionary to jalen;


--GRANT 用户的对象权限 on 对象 TO 用户    
grant select, insert, update, delete on JSQUSER to STUDENT;
--登陆scott用户把emp表的全部操作权限授予jalen用户
grant all on scott.emp to jalen;

5、查看用户的权限或角色

(一)、查看用户
show user; //查看当前用户名
1.查看所有用户:
select * from dba_users;
select * from all_users;
select * from user_users;    //查看当前用户

(二)、查看角色
1.当前用户被激活的全部角色
select * from session_roles;
2.当前当前用户被授予的角色
select * from user_role_privs;
3.全部用户被授予的角色
select * from dba_role_privs;
4.查看某个用户所拥有的角色
select * from dba_role_privs where grantee='用户名';
5.一个角色包含的系统权限   
select * from dba_sys_privs where grantee='角色名'  
select * from dba_sya_privs where grantee='COONNECT'; connect要大写 
或者 
select * from role_sys_privs where role='角色名'  
select * from role_sys_privs where grantee='COONNECT'; connect要大写  
6.一个角色包含的对象权限   
select * from dba_tab_privs where grantee='角色名' 
7.查看所有角色
select * from dba_roles;

(三)、查看权限
1.基本权限查询:
select * from session_privs; --当前用户所拥有的全部权限
select * from user_sys_privs;--当前用户的系统权限
select * from user_tab_privs;--当前用户的对象权限
select * from dba_sys_privs ;--查询某个用户所拥有的系统权限
select * from role_sys_privs;--查看角色(只能查看登陆用户拥有的角色)所包含的权限
2. 查看用户的系统权限(直接赋值给用户或角色的系统权限)
select * from dba_sys_privs;
select * from user_sys_privs;
3.查看用户的对象权限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
4.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
select * from v$pwfile_users; 

补充
1、以下语句可以查看Oracle提供的系统权限
select name from sys.system_privilege_map
2、查看一个用户的所有系统权限(包含角色的系统权限)
select privilege from dba_sys_privs where grantee='SCOTT'  
union  
select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='SCOTT' ); 
3、 查询当前用户可以访问的所有数据字典视图。 
select * from dict where comments like '%grant%';   
4、显示当前数据库的全称
select * from global_name;           

6、取消用户权限:revoke...[on...] to...

-- Revoke 对象权限 on 对象 from 用户 
revoke select, insert, update, delete on JSQUSER from jalen;
 
-- Revoke 系统权限  from 用户
grant create session to jalen; -- 授予用户登录数据库的权限
revoke SELECT ANY TABLE from jalen;
 
-- Revoke 角色(role) from 用户
revoke RESOURCE from jalen;

7、修改用户密码、锁定状态

--修改用户信息
alter user jalen
  identified by ******  --修改密码
  account lock;--修改用户处于锁定状态或者解锁状态 (LOCK|UNLOCK )

8、创建表空间

Oracle只有一个数据库,但对应的有多用户、多表空间模式,可以按照不同的项目存储和操作在不同的表空间,这样数据不容易混淆。

create tablespace Testts  -- 表空间名

datafile 'D:\oracle\product\10.2.0\oradata\orcl\Testts.dbf'  --表空间路径

size 10m autoextend on next 1M maxsize 2G;  --默认给10m大小,完了以后每次自增1m,最多到2g