一、Oracle简介 一、Oracle简介
Oracle是由甲骨文公司开发的关系型数据库。 是一种系统可移植性好、使用简单、功能强大的关系型数据库。 可以为各行业在各种环境(服务器、虚拟机、微机环境)快速构建高效、可靠、高吞吐量的数据库解决方案。
2.甲骨文版本
Oracle有个人版(在windows平台上提供)、标准版1(1-2cpu服务器)、标准版(1-4cpu服务器,可以做双机热备和RAC)、企业版(全功能);
Oracle从1979年发布Oracle2.0到现在的Oracle12c,从最开始的数据存储和查询,到后来的分布式、RAC、网络计算,再到现在支持云计算,经历了很多变化和计算改进。
在 2001 年 Oracle9i 发布之前,Oracle 已经将他们的数据库产品广泛移植到不同的平台上。 从Oracle开始,Oracle10g/11g/12c支持所有主要版本的windows和Linux,包括X-86/64位系统。 适用于各种大、中、小型、微型计算机环境。 现阶段12C支持分布式数据处理。
3. 四大特点 4. Oracle架构
Oracle数据库实际上是数据的物理存储系统,包括数据文件(ora/dbf)、参数文件、控制文件、在线日志等。一个Oracle数据库服务器由一个数据库和至少一个数据库实例组成。 数据库是一组存储数据的文件,数据库实例是管理数据库文件的内存结构。 此外,数据库由后台进程组成。
实例:Oracle 实例是客户端应用程序(用户)和数据库之间的接口。 一个操作系统只有一个Oracle数据库,但可以安装多个Oracle实例。 一个Oracle实例对应一系列后台进程(Backguound Processes)和内存结构(Memory Structures)。 Oracle 实例由三个主要部分组成:系统全局区 (SGA)、程序全局区 (PGA) 和后台进程。
数据文件:Oracle数据文件是数据存储的物理单位,数据库的数据存放在表空间中。 一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。 数据文件一旦添加到表空间,就无法删除。 如果要删除一个数据文件cmd连接oracle数据库,只能删除它所属的表空间。
表空间:表空间是Oracle到物理数据库数据文件(ora/dbf)的逻辑映射。 一个数据库在逻辑上被划分为一个或多个表空间,每个表空间由一个或多个数据文件(datafiles)组成,位于同一磁盘上,一个数据文件只能属于一个表空间。
Oracle用户:表中的数据由Oracle用户放入表空间,这些表空间会随机将数据放入一个或多个数据文件中。 Oracle对表数据的管理是通过用户对表的管理来查询,而不是直接查询数据文件或表空间。 因为不同的用户可以在同一个表空间上创建相同的表名。 而是通过不同的用户来管理自己的表数据。
二、Oracle安装
安装包及安装说明:
或者百度一下,找到对应版本的安装步骤,根据提示安装,这里就不啰嗦了。
注意不要忘记在安装过程中为用户解锁和设置密码。
3.客户端工具的使用
用户名输入规则:username[as connection identity]连接身份(normal,sysoper,sysdba)
connection identity代表用户连接到数据库后所享有的权限。 甲骨文有如下三个身份
~ sysdba:数据库管理员身份。 权限:开启(关闭)数据库服务器、备份(恢复)数据库、日志功能、会话限制、数据库管理功能等。
~ sysoper:数据库操作员身份。 权限:开启(关闭)数据库服务器、备份(恢复)数据库、日志功能、会话限制。
~ 正常:普通用户。 权限:在该用户下操作数据对象和数据查询。 默认身份是普通用户。
注意:sys用户必须使用sysdba登录(使用:sys作为sysdba),system用户(数据库管理员身份,直接使用:system)。
密码:为登录用户设置的登录密码
主机字符串:ip:端口(默认:127.1.1.0:1521 或 localhost:1521)
1.SQLPlus工具
该工具是Oracle系统默认安装的客户端工具。 在Windows cmd命令行输入“sqlplus”命令启动工具,如下图:
或者一次性全量输入语法:sqlplus用户名/密码@服务名[as connection identity](案例:sqlplus system/a123456@orcl)
或者在安装文件中找到SQL Plus工具直接启动(可以在小窗口输入用户、密码等信息进行连接,也可以直接在命令行确认并输入登录信息)
2. SQL*Plus 命令行工具
这个命令行工具提供了与oracle数据库交互的能力,不仅可以连接本地数据库,还可以连接远程数据库。 在cmd命令行输入“sqlplus /nolog”启动工具,如下图:
此时只启动一个client进程,可以通过命令行连接数据库。 输入命令:
语法:conn username/password@server 连接字符串作为连接标识(二级标识需要解锁)
案例: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 Developercmd连接oracle数据库,因为SQLPLUS开发过程中的操作比较繁琐,而且没有友好的可视化操作。 因此,使用PL/SQL Developer开发工具代替SQLPLUS来开发oracle数据库,其运行还需要安装Oracle客户端软件,网络服务名称可以通过本地网络服务配置向导进行配置,服务name可以直接连接登录,需要自己下载安装。 如下:
四、服务 1、启动服务
方法一:在服务中打开
方法二:在oracle.bat中写入如下三行代码,然后双击启动。
2.服务实例名称设置
默认:
新建服务名称:创建完成后,点击上面的文件-保存网络配置
5.用户
Oracle用户:表中的数据由Oracle用户放入表空间,这些表空间会随机将数据放入一个或多个数据文件中。 Oracle对表数据的管理是通过用户对表的管理来查询,而不是直接查询数据文件或表空间。 因为不同的用户可以在同一个表空间上创建相同的表名。 而是通过不同的用户来管理自己的表数据。
sqlplus登录用户语法:sqlplus用户名/密码@服务名[作为连接标识]
1、以系统管理员身份登录数据库:sqlplus system/a123456@orcl
2.解锁系统自带用户scott,切换连接,设置密码为tiger
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、resource、dba)
oracle 数据库角色是几个系统权限的集合。 授予一个Oracle用户一个数据库角色,相当于授予该用户若干个数据库系统权限。 常用的数据库角色如下:
三个数据库角色对应三个连接身份。
(2)、用户权限(系统权限、对象权限)
Oracle数据库用户权限分为两种:系统权限和对象权限。
因此,在实际开发过程中,可以根据需要,为某个用户分配某个角色或系统权限。
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 tablespaceTestts — 表空间名称
datafile 'D:oracleproduct10.2.0oradataorclTestts.dbf' — 表空间路径
大小 10m autoextend onnext 1Mmaxsize2G; –默认大小为10m,完成后每次增加1m,最大2g