Oracle 12C 数据库安装与配置

 

 

1·数据库介绍

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。

Oracle数据库最新版本为Oracle Database 12c。Oracle数据库12c 引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。此外,一些创新特性可最大限度地提高资源使用率和灵活性,如Oracle Multitenant可快速整合多个数据库,而Automatic Data Optimization和Heat Map能以更高的密度压缩数据和对数据分层。这些独一无二的技术进步再加上在可用性、安全性和大数据支持方面的主要增强,使得Oracle数据库12c 成为私有云和公有云部署的理想平台。

2·数据库安装教程(建议:通过软件包安装数据库软件,安装成功后通过Database Configuration Assistant软件实现数据库的安装与配置)

①  下载Oracle官网安装压缩包;

② 解压至文件夹;

③ 点击运行setup.exe可执行程序;

 

④ 选择输入电子邮件以及选择勾选希望获得Oracle安全更新;

 

⑤ 选择操作目的创建配置数据库、仅安装数据库软件&升级数据库;


⑥ 三种安装选项及对应的选项,

1、选择安装类型:桌面类还是服务器类,如果在服务器安装建议选择服务器类;

 

2、选择数据库安装类型

 

3、选择数据库升级类型

 

⑦ 选择设置主目录用户类型并创建账户;

 

⑧ 选择填写安装Oracle安装信息;

 

 

⑨ 检查配置信息,如有需要保存响应文件;

 

⑩ 点击安装,等待安装成功;

 

 

备注:database中下载12C版本的数据库中不存在scott/tiger账户(官网中软件未测试)

第二种安装数据库的方法(前提已安装数据库软件)

①  打开开始菜单->Oracle文件夹->配置和移植工具->Database Configuration Assistant

 

②  管理现有数据库或者创建新的数据库

 

③  创建数据库

  

 

新安装的数据库只有SYS和SYSTEM两个账户没有锁定,可以通过口令管理设置解锁和口令密码;

④  配置现有数据库

 

⑤  删除数据库操作

 

⑥  管理模板

从现有数据库创建模板

 

 

 

从现有模板创建模板

 

 

作用:通过创建好的模板可以实现数据库的快速部署与灾难恢复。

⑦  管理可插入数据库

 

⑧  多租户

Oracle 多租户是 Oracle Database 12c 中的新选项。使用多租户体系结构,Oracle DB 可以包含一组可移植的方案、对象和相关结构,面向应用程序作为一个逻辑上的单独数据库出现。
使用 Oracle 多租户选项,DBA 可以将大量小的部门数据库应用程序合并为单个较大的RDBMS 安装。
在 Oracle Database 11 中,每个数据库实例与一个且仅一个数据库相关联。在 RAC 环境中,多个实例可以与一个数据库关联。
在 Oracle Database 12c 中,一个实例将与整个 CDB 关联。
如果同一个服务器上有多个数据库,则每个非 CDB 或 CDB 具有单独的相异实例。
实例不能在非 CDB 和 CDB 之间共享。
在 Oracle Database 12c 中,有三个可能的配置选项:
1、多租户配置:通常每个 CDB 有多个 PDB,但是任何时候可以一次存放零个、一个
或许多 PDB,从而利用新体系结构的全部功能,这需要授权的 Oracle 多租户选项
2、单租户配置:新体系结构的特殊案例,这不需要授权的选项
3、非 CDB :旧的 Oracle Database 11 体系结构
容器
在 Oracle 12c 中,引入了容器的概念来将 Oracle 提供的对象和用户数据(包括元数据)分离到不同容器中。
可将其视为水平分区。在存放数据字典的每个容器中有一个 SYSTEM 表空间。
在仅 Oracle 元数据容器(其包含 Oracle 提供的对象的元数据)中有一个字典。
在存放用户元数据的用户容器中有一个字典。

Oracle 提供的对象位于称为根容器(名为 CDB$ROOT)的容器中。用户容器称为可插入
数据库 (PDB),其名称是在创建该容器或者将其插入 CDB 时为其提供的名称。
使用存放多个 PDB 的多租户体系结构,这些曾经分离的非 CDB 现在可以位于单个实例
中,共享内存、磁盘和 CPU 资源,但维护应用程序分离。这些数据库通过使用数据库链接(快速CDB内db链接)共享数据。
数据库链接仍起作用,但是现在因为“链接”通信不离开实例,所以该链接非常快。

Oracle 12c的V$CONTAINERS 中有两种类型的容器:
1、根容器:
– 在创建 CDB 时创建的第一个容器
– 必需
– Oracle 系统提供的公用对象和元数据
– Oracle 系统提供的公用用户和角色
2、可插入数据库容器 (PDB):
– 应用程序的容器:
— 表空间(永久和临时)
— 方案/对象/权限
— 已创建/已克隆/已移走/已插入
– 特定种子 PDB:
— PDB$SEED 提供新 PDB 的快速预配
– 限制一个 CDB 中只能有 253 个 PDB(包括种子)
– 限制一个 CDB 中只能有 1024 个服务

使用多租户体系结构,Oracle DB 可以包含方案、方案对象和非方案对象的可移植集合,
面向 Oracle Net 客户机作为一个单独数据库出现。为了 PDB 存在和运行,CDB 要求在
创建 CDB 时生成特定类型的容器,即根容器。根是存储公用用户的系统提供的容器,这
些容器可以连接到多个容器以及系统提供的元数据和数据。例如,系统提供的 PL/SQL 程
序包的源代码存储在根中。存在根容器时,您可以创建其他类型的容器,即 PDB。
CDB 中仅有一个种子 PDB。种子 PDB 是用于创建新 PDB 的系统提供的模板。
CDB 最多可以包含 253 个 PDB,包括种子。因此,可以创建 252 个用户定义的 PDB。
V$CONTAINERS 视图显示包括根在内的所有容器。

PDB与根
下列组件位于某个PDB中而不在根中,也不在另一PDB中,分别是:
应用程序表空间、本地临时表空间、本地用户和本地角色、本地用户连接到其所在的 PDB、
非共享的本地元数据、不与其他 PDB 共享的应用程序数据、PDB 资源管理器计划。
下列组件在PDB中而不在根中,分别是:
应用程序表空间、
本地临时表空间、
本地用户和本地角色、
非共享的本地元数据、
PDB 资源管理器计划,允许在 PDB 内进行资源管理。

公用用户和本地用户
本地用户
非 CDB 中的用户映射到非 PDB 中的本地用户。
在 PDB 自己的数据字典中定义本地用户,所以在该 PDB 之外不知道该用户。
本地用户仅可连接到在其中定义该用户的 PDB。
本地用户特定于特定 PDB,在该 PDB 中拥有方案。
根据授予的权限,用户可以处理 PDB 内的应用程序数据或者使用数据库链接处理
其他 PDB 的应用程序。而且,不能在根中定义任何本地用户。
公用用户
公用用户在 root 的数据字典中定义。
仅可以在根中定义公用用户:通过创建公用用户,CDB 管理员可以一次创建将在
每个 PDB 中复制的用户。
公用用户不仅在根中其定义的位置而且在属于 CDB 的每个 PDB 中为已知。
公用用户可以执行特定于根或 PDB 的管理任务,例如插入和移走 PDB、启动 CDB
或在授予正确权限时打开 PDB。

共享和非共享对象
在非 CDB 中,所有对象都是本地对象。12c 中引入了公用对象,以避免在 CDB 中存储
数据和元数据的冗余表示,并简化 CDB 的升级过程。共享对象仅存在于 Oracle 提供的
方案中。
共享对象可能是与元数据链接的或者与对象链接的。
1、与元数据链接的对象仅在根中存储有关字典对象的元数据。每个 PDB 具有对象的专
用数据副本,指向根中存储的元数据链接。
2、与对象链接的对象及其数据仅位于根中,由所有 PDB 共享。

3·常见Oracle操作配置

①  Winodw操作系统DOS界面输入SQLplus进入命令行模式;

②  命令行界面输入SELECT name,cdb, from v$database;可以判断数据库类型是否是CDB;

③  ~product12.2.0dbhome_1 etworkadmin nsnames.ora 文件中对相应数据库的网络情况进行配置;

# PROTOCOL 指明要连接使用的协议

# HOST 是TCP/IP协议使用的服务器IP地址。

# PORT 是TCP/IP使用的端口地址。

# ADDRESS_LIST 表示该客户机要经由多种协议与一台或多台服务器连接。在该样式文件中就表示该客户机要用TCP/IP协议来和服务器相连

# SID 指定要连接的服务器上ORACLE数据库的ORACLE_SID。

# SERVER=DEDICATED 表示用专用服务器连接ORACLE数据库

# SERVICE_NAME 服务器数据库全局名称

同时也要在监听配置中设置IP信息(~product12.2.0dbhome_1 etworkadminlistener.ora)

④  SYS用户默认密码changer_on_install

⑤  查询当前链接实例:命令行模式输入select name from v$database;

查询当前实例下数据库:命令行模式输入select instance_name from v$instance;

服务名称OracleService+sid的个数;

⑥  命令行模式查看表空间:select * from v$tablespace;

查看每个表空间有哪些数据文件:desc dba_data_files;

查详细数据文件:select file_name,tablespace_name from dba_data_files;

创建表空间:create tablespace paul datafile '/ora10/product/oradata/ora10/paul01.dbf' size 20m;

查看表空间大小:Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name

 

能帮助DBA用户完成以下工作:决定数据库实体的空间分配;设置数据库用户的空间份额;控制数据库部分数据的可用性;分布数据于不同的设备之间以改善性能;备份和恢复数据。

所以要操纵一个ORACLE数据库中的数据,应该:被授予关于一个或多个表空间中的RESOURCE特权;被指定缺省表空间;被分配指定表空间的存储空间使用份额;被指定缺省临时段表空间,建立不同的表空间,设置最大的存储容量。

我们可以通过创建用户并且指定用户默认表空间来实现对不同数据的管理工作

①  用户创建、授权、登录&使用

推荐使用Oracle自带的数据库管理进行用户创建、授权、登录&使用。

 

 

 

 

②  用户常用工具

开始菜单

 

 

4·监听程序配置

①  打开工具软件Net Manager

②  打开数据库配置

 

③  测试服务是否联通

④ 

⑤  更改数据库网络配置后点击文件->保存网络配置保存配置结果

注:)我们推荐使用Net Manager工具软件来进行数据库网络配置而非直接更改配置文件

5·Oracle Instance Manager 实例管理器

 

6·Net Configuration Assistant 数据库网络配置(作用类似于Net Manager)

7·Microsoft ODBC 管理员 对数据库连接进行管理

 

8·Oracle Locale Builder 定制本地数据

 

9·Database Upgrade Assistant 数据库升级助手

 

10·Database Migration Assistant for Unicode 数据库迁移助手

 

角色限定为SYSDBA

11·Administration Assistant for Windows Windows管理助手

 

12·网络控制台管理

参考资料:Oracle Database12c新特性:EM Express - 精简EM版本

①  打开登录至SQL操作界面

②  设置服务器端口号

SQL命令行中输入一下命令

show parameter dispatchers;// 确认Oracle 12c中,XDB是强制安装的,所以在数据库安装完成之后,只需要确认基本的XDB配置,设置端口即可启用EM Express,以下配置8080端口作为EM Express的监听端口:

exec DBMS_XDB_CONFIG.setHTTPPort(8080);

③  打开浏览器输入http://服务器IP:设置端口号/em/login

eg:http://192.168.12.244:8080/em/login

 

 

注)通过网络控制台URL实现远程管理Oracle数据库,方便现实远程管理

功能:

配置:设置初始化参数、内存情况监控、数据库当前使用情况监控、当前数据库属性、资源管理配置;

存储:还原管理、重做日志组、日志归档、控制文件查看及备份;

安全:对用户增删查改、对角色增删查改;

性能:性能中心(查看、保存报告)、SQL优化指导、SQL性能分析

4·常见错误及处理方案

①  错误提示:没有匹配的验证协议

解决方案:~product12.2.0dbhome_1 etworkadminsqlnet.ora 文件末尾添加 SQLNET.ALLOWED_LOGON_VERSION=8

②  错误提示:端口问题

解决方案:~product12.2.0dbhome_1 etworkadmin nsnames.ora 文件中记录数据库端口信息

③  判断数据库是否为CDB

解决方案:select CDB from v$database; 结果为YES则证明为CDB数据库否则为PDB数据库

④  用户口令丢失

解决方案:1、右键“计算机” ->“管理” ->选择"本地用户和组" ->即可看到oracle用户,单击右键选择"设置密码 ",然后设置新的登陆密码即可

              2、开始菜单中找到oracle12c的文件夹,会在里面看到“更新oracle主目录用户的口令”,打开它,即可弹出一个dos窗口,进而修改密码

⑤   

5·常见名词解释

表空间:Oracle的表空间属于Oracle中的存储结构,是一种用于存储数据库对象(如:数据文件)的逻辑空间,是Oracle中信息存储的最大逻辑单元,其下还包含有段、区、数据块等逻辑数据类型。表空间是在数据库中开辟的一个空间,用于存放数据库的对象,一个数据库可以由多个表空间组成。可以通过表空间来实现对Oracle的调优。(Oracle数据库独特的高级应用)

.

容器数据库(多租用户环境):在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为ContainerDatabase,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。关于CDB与PDB的关系图

 

①     Oracle用户角色与权限:Oracle 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级、System 系统级、Role 角色级。这些权限可以授予给用户、特殊用户public或角色,如果授予一个权限给特殊用户"Public"(用户public是oracle预定义的,每个用户享有这个用户享有的权限),那么就意味作将该权限授予了该数据库的所有用户。对管理权限而言,角色是一个工具,权限能够被授予给一个角色,角色也能被授予给另一个角色或用户。用户可以通过角色继承权限,除了管理权限外角色服务没有其它目的。权限可以被授予,也可以用同样的方式撤销。

权限分类

1、系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。

2、实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。

系统权限分类

DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。

RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。

CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。

对于普通用户:授予connect, resource权限;对于DBA管理用户:授予connect,resource, dba权限。注:系统权限只能由DBA用户授出:sys, system(最开始只能是这两个用户)

      实体权限分类

                      select, update, insert, alter, index, delete, all  //all包括所有权限

execute  //执行存储过程权限

Oracle 角色管理

角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限。系统预定义角色是在数据库安装后,系统自动创建的一些常用的角色。下介简单的介绍一下这些预定角色。角色所包含的权限可以用以下语句查询:

sql>select * from role_sys_privs where role='角色名';

                 推荐创建角色权限可以通过SQL Developer或者网络控制台进行操作

常见角色:.

CONNECT, RESOURCE, DBA:这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色。

DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE:这些角色主要用于访问数据字典视图和包。

EXP_FULL_DATABASE, IMP_FULL_DATABASE:这两个角色用于数据导入导出工具的使用。

AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE:AQ:Advanced Query。这两个角色用于oracle高级查询功能。

SNMPAGENT:用于oracle enterprise manager和Intelligent Agent

RECOVERY_CATALOG_OWNER:用于创建拥有恢复库的用户。关于恢复库的信息,参考oracle文档《Oracle9i User-Managed Backup and Recovery Guide》

HS_ADMIN_ROLE:A DBA using Oracle's heterogeneous services feature needs this role to access appropriate tables in the data dictionary.

oracle的系统和对象权限列表

alter any cluster 修改任意簇的权限
alter any index 修改任意索引的权限
alter any role 修改任意角色的权限
alter any sequence 修改任意序列的权限
alter any snapshot 修改任意快照的权限
alter any table 修改任意表的权限
alter any trigger 修改任意触发器的权限
alter cluster 修改拥有簇的权限
alter database 修改数据库的权限
alter procedure 修改拥有的存储过程权限
alter profile 修改资源限制简表的权限
alter resource cost 设置佳话资源开销的权限
alter rollback segment 修改回滚段的权限
alter sequence 修改拥有的序列权限
alter session 修改数据库会话的权限
alter sytem 修改数据库服务器设置的权限
alter table 修改拥有的表权限
alter tablespace 修改表空间的权限
alter user 修改用户的权限
analyze 使用analyze命令分析数据库中任意的表、索引和簇
audit any 为任意的数据库对象设置审计选项
audit system 允许系统操作审计
backup any table 备份任意表的权限
become user 切换用户状态的权限
commit any table 提交表的权限
create any cluster 为任意用户创建簇的权限
create any index 为任意用户创建索引的权限
create any procedure 为任意用户创建存储过程的权限
create any sequence 为任意用户创建序列的权限
create any snapshot 为任意用户创建快照的权限
create any synonym 为任意用户创建同义名的权限
create any table 为任意用户创建表的权限
create any trigger 为任意用户创建触发器的权限
create any view 为任意用户创建视图的权限
create cluster 为用户创建簇的权限
create database link 为用户创建的权限
create procedure 为用户创建存储过程的权限
create profile 创建资源限制简表的权限
create public database link 创建公共数据库链路的权限
create public synonym 创建公共同义名的权限
create role 创建角色的权限
create rollback segment 创建回滚段的权限
create session 创建会话的权限
create sequence 为用户创建序列的权限
create snapshot 为用户创建快照的权限
create synonym 为用户创建同义名的权限
create table 为用户创建表的权限
create tablespace 创建表空间的权限
create user 创建用户的权限
create view 为用户创建视图的权限
delete any table 删除任意表行的权限
delete any view 删除任意视图行的权限
delete snapshot 删除快照中行的权限
delete table 为用户删除表行的权限
delete view 为用户删除视图行的权限
drop any cluster 删除任意簇的权限
drop any index 删除任意索引的权限
drop any procedure 删除任意存储过程的权限
drop any role 删除任意角色的权限
drop any sequence 删除任意序列的权限
drop any snapshot 删除任意快照的权限
drop any synonym 删除任意同义名的权限
drop any table 删除任意表的权限
drop any trigger 删除任意触发器的权限
drop any view 删除任意视图的权限
drop profile 删除资源限制简表的权限
drop public cluster 删除公共簇的权限
drop public database link 删除公共数据链路的权限
drop public synonym 删除公共同义名的权限
drop rollback segment 删除回滚段的权限
drop tablespace 删除表空间的权限
drop user 删除用户的权限
execute any procedure 执行任意存储过程的权限
execute function 执行存储函数的权限
execute package 执行存储包的权限
execute procedure 执行用户存储过程的权限
force any transaction 管理未提交的任意事务的输出权限
force transaction 管理未提交的用户事务的输出权限
grant any privilege 授予任意系统特权的权限
grant any role 授予任意角色的权限
index table 给表加索引的权限
insert any table 向任意表中插入行的权限
insert snapshot 向快照中插入行的权限
insert table 向用户表中插入行的权限
insert view 向用户视图中插行的权限
lock any table 给任意表加锁的权限
manager tablespace 管理(备份可用性)表空间的权限
references table 参考表的权限
restricted session 创建有限制的数据库会话的权限
select any sequence 使用任意序列的权限
select any table 使用任意表的权限
select snapshot 使用快照的权限
select sequence 使用用户序列的权限
select table 使用用户表的权限
select view 使用视图的权限
unlimited tablespace 对表空间大小不加限制的权限
update any table 修改任意表中行的权限
update snapshot 修改快照中行的权限
update table 修改用户表中的行的权限
update view 修改视图中行的权限

6·参考资料

    Oracle表空间

    Oracle12C用户创建、授权、登录

    MySql与Oracle的几个主要区别

    Oracle和MySQL的对比

    oracle 12C SYS,SYSTEM用户的密码都忘记或是丢失

    Oracle Database 12c 多租户容器数据库和可插入数据库 

    Oracle 12c新特性(For DBA)

    Oracle 12C新特性-CDB和PDB 详解

    Oracle 表空间详解

    创建数据库时,模板选择“一般用途或事务处理”与“数据仓库”有何不同?

    dbca创建数据库不同模板之间的区别

     ORACLE利用模板创建数据库

    Oracle权限管理详解

    oracle数据库用户删除及表空间删除

    Oracle创建用户并授权

痛苦预示着超脱
原文地址:https://www.cnblogs.com/supperlhg/p/8890765.html