Oracle安装(Windows)及客户端连接配置
本文 oracle 版本 12.2.0.1.0 。
安装指南: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/ntdbi/index.html
win10 安装Oracle19c (19.3版本)详细步骤
别瞎折腾
以下安装顺序遇到的问题:
步骤1、安装数据库软件
步骤2、创建PDB: orcl.zhaolq.com
步骤3、创建CDB: orcl2.zhaolq.com
安装完成后,将两个数据库都关闭,启动 PDB,用户无法登录:指定 pfile 文件启动成功。
Oracle Help for Java
帮助导航器 对数据库安装的每一步都进行了详细说明,点击安装界面左下角的 帮助 按钮进入:
安装数据库软件、创建和配置数据库
指定 Oracle 主目录用户
使用 Windows 内置帐户或指定标准 Windows 用户帐户 (非管理员帐户) 来安装和配置 Oracle 主目录。此帐户用于运行 Oracle 主目录的 Windows 服务。请勿使用此帐户登录执行管理任务。
使用虚拟帐户
帐户是指用于 Oracle 数据库单实例安装的 Oracle 主目录用户。使用此帐户可以安装 Oracle 数据库, 创建和管理数据库服务而无需口令。
使用现有 Windows 用户
帐户可以是 Windows 本地用户, Windows 域用户或 Windows 托管服务帐户 (MSA)。必须为 Windows 本地或域用户提供用户名和口令。对于托管域帐户 MSA 帐户, 只需提供用户名。
对于 Oracle RAC 数据库或 Oracle Grid Infrastructure 的安装, 只能使用 Windows 域用户帐户。
创建新 Windows 用户
提供希望 Oracle Universal Installer 创建的 Windows 本地用户的用户名和口令。确认口令。创建的新用户未获得 Windows 计算机的交互式登录权限。不过, Windows 管理员可以像管理其他 Windows 帐户那样管理此帐户。
使用 Windows 内置帐户
不要求用户名或口令。Oracle 使用 Windows 内置帐户 (LocalSystem 或 LocalService) 创建 Windows 服务。
对于数据库服务器的安装, Oracle 建议将标准 Windows 用户帐户 (而不是 Windows 内置帐户) 作为 Oracle 主目录用户使用, 以增强安全性。
指定数据库标识符
数据库由全局数据库名标识, 与该数据库关联的实例由 Oracle 系统标识符 (SID) 标识。
全局数据库名 - 这是为了对数据库进行唯一标识以将其与网络中其他数据库区分开而指定给数据库的名称。全局数据库名由数据库唯一名称 (db_unique_name
), 分隔符 (句点) 和数据库域名 (db_domain
) 组成。它表示为: db_unique_name.db_domain
。
其中:
db_unique_name
是数据库的名称。它最多可包含 30 个字符, 前 8 个字符必须是唯一的, 并且必须以字母字符开头。这些字符包括字母数字, 下划线 (_), 美元符号 ($) 和井号 (#)。db_domain
是用于数据库的计算机环境。它最多可包含 128 个字符。字符可以包含字母数字, 下划线 (_), 井号 (#) 和句点 (.)。
注: 请确保数据库名 (数据库唯一名称的前 8 个唯一字符), 分隔符和数据库域名的组合不超过 128 个字符。
例如:
sales.us.example.com
其中:
db_unique_name
为 salesdb_domain
为 us.example.com
Oracle 系统标识符 - 它是特定主机上 Oracle 数据库实例的唯一名称。Oracle 系统标识符 (SID) 帮助标识控制文件并定位打开数据库时所需的文件。当您输入全局数据库名时, Oracle Universal Installer 会使用该数据库名自动填充“Oracle 系统标识符”字段。您可以在高级安装中更改此名称。
Oracle Univeral Installer 将单实例数据库的 SID 限制为 12 个字母数字字符。对于 Oracle RAC 数据库, SID 前缀 (即 SID 的前 8 个字符) 必须是每个数据库的唯一名称。SID 不能包含下划线 (_), 美元符号 ($) 或井号 (#)。
选择创建为容器数据库选项以将数据库创建为支持一个或多个插接式数据库 (PDB) 的容器数据库 (CDB)。如果希望 Oracle Universal Installer 在创建 CDB 时创建 PDB, 请在插接式数据库名字段中指定 PDB 名称。
PDB 名称必须唯一并且遵守数据库命名惯例。
要创建其他 PDB 和管理 PDB, 请使用 Oracle Database Configuration Assistant。
单击下一步。
服务名 (使用 Oracle RAC One Node) - 请确保为 Oracle RAC One Node 数据库提供服务名。使用服务名, 客户机可以连接到服务, 而不是连接到特定的 Oracle 数据库实例。使用服务名可在 Oracle RAC One Node 数据库已故障转移或重新定位到其他节点时仍然为客户机提供持续的连接。
创建和配置数据库
数据库配置助手(Database Configuration Assistant)简称DBCA,在12c中的功能有:创建数据库、配置现有数据库、删除数据库、管理数据库模板、管理可插入数据库、Oracle RAC 数据库实例管理。
PDB包含在CDB中,所以,要创建PDB,必须先创建CDB。详情见 CDB和PDB 章节。
以下创建 非 CDB :
典型配置
高级配置
Oracle的服务
成功安装并创建 Oracle 12c 数据库后的6个服务及默认设置:
其中最重要的两个服务:
OracleServiceORCL
:数据库服务(数据库实例),是Oracle核心服务,该服务是数据库启动的基础, 只有该服务启动,Oracle数据库才能正常启动。(必须启动)OracleOraDB12Home1TNSListener
:监听器服务,该服务只有在数据库需要远程访问的时候才需要。(非必须启动)
若只用 Oracle 自带的 sql*plus
,只启动 OracleServiceORCL
服务即可;若要使用 PL/SQL Developer 等第三方工具,OracleOraDB12Home1TNSListener
也要开启。
禁止其他非必须开启的Oracle服务可以提升电脑的运行速度。
PDB默认状态
重新启动 Oracle 服务后,PDB 变为 MOUNTED 状态。
参考链接 CDB和PDB ,在 CDB 中创建触发器以实现 PDB 自启动。
PDB连接问题
ORACLE 12C 之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。
Oracle 12C 引入了CDB与PDB的新特性,在 ORACLE 12C 数据库引入的多租用户环境(Multitenant Environment)中,允许一个容器数据库(CDB)承载多个可插拔数据库(PDB),实例与数据库可以是一对多的关系。
默认 TNS 中没有 PDB 的监听,需要手动添加。添加前先确认【全局数据库名】和【服务名】。
1 | # sqlplus登录见下文 |
连接数据库
SQL Plus
SQL Plus 是最基本的Oracle数据库实用程序,具有基本的命令行界面,通常由用户、管理员和程序员使用。
1、开始 –> 运行 –> sqlplus
2、输入: username/password@database
,本地安装两个数据库时,使用 @
选择登录,例如: system/123456789@orcl
登录成功示例:
Sqlplus默认连接CDB
1 | # 登录sys用户 |
计算机管理 > 组 > ora_dba组里的用户,无需输入用户和口令,直接以sysdba的身份登陆数据库。
PL/SQL Developer
是否带域名要看监听程序如何配置
1 | # 连接地址格式 |
JDBC (单实例和RAC)
对于Java程序配置数据源,无需知道数据库是单实例还是 RAC (集群),第一种不行就用第二种。
是否带域名要看监听程序如何配置
1 | # 单实例 |
创建用户
推荐连接:
https://blog.51cto.com/itrunner/4645726
https://docs.oracle.com/en/database/oracle/oracle-database/19/index.html
关于多租户架构:
CDB Common 用户和 CDB Local 用户概述:
CDB Common 用户:CDB Common 用户可以连接到 CDB 中它有足够权限的任何容器。
Application common 用户:Application common 用户只能连接到创建它的 Application Root,或插入到该 Application Root 的 PDB,具体取决于其权限。
Local 用户:CDB 中 的本地用户是不常见的数据库用户,只能在单个 PDB 中操作。
Common 用户和 Local 用户:
创建 PDB Local 用户:
当我们想在数据库中创建 用户的时候,一般是不往ROOT中创建。
要创建本地用户帐户,您必须连接到要在其中创建帐户的 PDB 并具有 CREATE USER
权限。脚本参考: Oracle表空间和用户的建立与删除
TNS
介绍
Oracle中TNS的完整定义:transparence Network Substrate 透明网络底层。
Oracle所有的TNS配置文件的默认路径:%ORACLE_HOME%\network\admin
配置文件
TNS的配置文件包括 服务器端 和 客户端 两部分。
服务器端: listener.ora
、 sqlnet.ora
、 tnsnames.ora
客户端: sqlnet.ora
、 tnsnames.ora
Oracle 12c TNS配置文件的默认路径: D:\oracle12c\product\12.2.0\dbhome_1\network\admin
listener.ora
监听器是用来侦听客户端的连接请求以及建立客户端和服务器端连接通道的一个服务程序。默认情况下Oracle在1521端口上侦听客户端连接请求。
监听器包括两部分:
1、Oracle要监听的地址、端口、通讯协议。HOST参数可以是Oracle服务器主机名称,也可以是相应的IP地址。
2、Oracle要监听的数据库实例(SID_LIST_LISTENER部分)。非RAC环境下,LISTENER只能监听本服务器的地址和实例,RAC环境下,LISTENER还可以监听远程服务器。每个数据库最少要配置一个监听器。(注:RAC 环境,指的是Oracle服务器集群配置的环境:Oracle RAC)
sqlnet.ora
sqlnet.ora 可以控制和管理Oracle连接的属性,根据参数作用的不同决定在客户端配置还是在server端配置。sqlnet.ora 的配置是全局性的,也就说sqlnet.ora的配置是对所有的连接起作用,如果想对某个特殊的连接或服务进行约束或限制,可以在TNS配置相应参数。
tnsnames.ora
配置客户端到服务器端的连接服务,包括客户端要连接到的服务器和数据库的配置信息。
tnsnames.ora 包括两部分
ADDRESS_LIST:包含了Oracle数据库服务器的监听地址信息,也就是要告诉TNS,数据库可通过这个地址和CLIENT进行通讯。
CONNECT_DATA:定义了CLIENT要连接的数据库,以及数据库的连接方式,(专用或共享)。
1 | ORCL = |
配置工具
Net Configuration Assistant(网络配置助手)和 Net Manager(网络管理器)都可以配置监听和TNS,但各有不同。
Net Configuration Assistant :新增监听会添加并启动服务;修改参数会更新并重启服务;
Net Manager :等同于手工修改(用文本编辑器修改)。新增监听不会添加服务;修改参数不会重启服务,需要手动重启。
另:可通过“lsnrctl status”命令查看监听启动情况,“lsnrctl start”(lsnrctl stop)可开启或关闭监听,命令“netca”可启动Net Configuration Assistant
Net Configuration Assistant新增监听
listener.ora 默认配置
1 | listener.ora Network Configuration File: D:\oracle12c\product\12.2.0\dbhome_1\network\admin\listener.ora |
tnsnames.ora 默认配置
1 | tnsnames.ora Network Configuration File: D:\oracle12c\product\12.2.0\dbhome_1\network\admin\tnsnames.ora |
Net Manager新增监听
listener.ora (必须)
安装完成后,默认只有 CDB 的监听,PDB 监听需手动添加。
1 | listener.ora Network Configuration File: D:\oracle12c\product\12.2.0\dbhome_1\NETWORK\ADMIN\listener.ora |
tnsnames.ora (非必须)
1 | tnsnames.ora Network Configuration File: D:\oracle12c\product\12.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora |
sqlnet.ora (默认即可)
1 | sqlnet.ora Network Configuration File: D:\oracle12c\product\12.2.0\dbhome_1\NETWORK\ADMIN\sqlnet.ora |
解决oracle服务占用内存过高(别瞎折腾)
关闭一些开机启动服务
关闭除 OracleServiceORCL
的其他服务。
修改SGA和PGA大小
SGA的大小:一般物理内存20%用作操作系统保留,其他80%用于数据库。
SGA普通数据库可以分配40%-60%之间,PGA可以分配20%-40%之间。
注意:sga_target 不得大于 sga_max_size(一般保持两者相等),否则会导致数据库无法启动。修改后重启数据库生效。
1 | SQL> startup # 启动数据库 |
当 sga_target 和 sga_max_size 设置相等时,最好用记事本检查spfile文件内容,确定二者是否真的相等,亲测不一定。
以dba身份登录:
1 | #************************************ 设置sga开始 ************************************# |
修改SGA导致用户无法登录问题
1 | 请输入用户名: system/123456789 |
1、若没有配置网络服务名,可以通过命令 sqlplus /as sysdba
登录到服务器空闲例程;
1 | 请输入用户名: / as sysdba |
若配置了网络服务名,则在 D:\oracle12c\product\12.2.0\dbhome_1\network\admin
下找到 listener.ora
文件,查看配置的服务名,登录: sqlplus sys/sys@XXX(网络服务名) as sysdba
。
2、通过初始化参数文件(pfile)创建/恢复 spfile 文件到database 目录。
1 | create spfile from pfile='D:\oracle12c\admin\orcl\pfile\init.ora.XXXXXXX'; |
创建 spfile
成功会提示: 文件已创建。
此时重启服务即可登录了。
删除数据库
打开 DBCA ,选择 删除数据库
。
删除全部数据库的数据库软件目录,只需要保留 product
文件夹,其他均可删除:
删除全部数据库所剩服务:
卸载数据库软件
双击文件: D:\oracle12c\product\12.2.0\dbhome_1\deinstall\deinstall.bat