一、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/orclassysdba
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 用户名ACCOUNTLOCK;
解锁用户:ALTER USER用户名ACCOUNTUNLOCK;
切换用户(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_map2、查看一个用户的所有系统权限(包含角色的系统权限)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 tablespaceTestts — 表空间名
datafile ‘D:\oracle\product\10.2.0\oradata\orcl\Testts.dbf’ –表空间路径
size 10m autoextend onnext 1Mmaxsize2G; –默认给10m大小,完了以后每次自增1m,最多到2g