1. Oracle环境
1.1. Oracle Server安装
下载 http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
按照默认过程进行安装即可,以下为【桌面类】安装对应步骤的图示:
【服务器类】安装类似,参考以下百度分享:
https://jingyan.baidu.com/article/363872eccfb9266e4aa16f5d.html
1.2. OEM
Oracle Enterprise Manager (EM) Database Control
Enterprise Manager Database Control 提供了一个基于 Web 的界面,您可以使用这个界面来管理 Oracle 实例和数据库。
要从客户端浏览器访问 Oracle Enterprise Manager Database Control,必须启动 dbconsole 进程。
一定要检查OracleDbConsole有没有启动。
OEM的默认管理地址为:https://localhost:1158/em,点击【高级】并继续访问
登录的账号和口令为安装oracle时设置的,连接身份选择【SYSDBA】选项,如下:
登录成功后首页显示如下:
1.3. 配置监听
开始菜单中打开【Oracle-OraDb11g_home1】-【配置和移植工具】-【Net Configuration Assistant】网络配置
选择【监听程序】进行配置
再进行【本地网络服务名】的配置
1.4. 注册监听
配置监听后,还需要进行注册,操作如下:
打开【Net Manager】进行监听程序-添加数据库的配置:
需要注意的是【全局数据库名】和【SID】名称不要写错了,Oracle主目录为:【D:\app\Administrator\product\11.2.0\dbhome_1】(不同安装环境,目录有所差异)
再进行修改服务器上的【tnsnames.ora】和【listener.ora】配置文件:
或者通过【Oracle Net Configuration Assistant】和【Net Manager】进行配置,会同步更新至ora配置文件中。
【tnsnames.ora】配置,将默认主机名localhost或者127.0.0.1全部修改为主机IP地址:
# tnsnames.ora Network Configuration File: D:\app\Administrator\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.123.250)(PORT = 1521))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.123.250)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
【listener.ora】,将默认主机名localhost或者127.0.0.1全部修改为主机IP地址:
# listener.ora Network Configuration File: D:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(GLOBAL_DBNAME = Oracle8)
(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.123.250)(PORT = 1521))
)
)
ADR_BASE_LISTENER = D:\app\Administrator
注意,设置以上更改【OracleServiceORCL】和【OracleOraDb11g_home1TNSListener】服务都需要进行重启!
1.5. 客户端的安装
客户端这里推荐安装32位的版本:【win32_11gR2_client.zip】
在win10安装会有此提示,可以忽略
进行客户端的默认安装
1.6. 客户端SqlPlus连接测试
安装客户端后,首先要进行客户端的tns配置,类似服务端的配置
本地tns配置路径:【E:\app\Administrator\product\11.2.0\client_1\NETWORK\ADMIN\tnsnames.ora】
以上为本地路径,根据客户端安装时选择的不同略有差异
【tnsnames.ora】内容如下,其中ip地址为安装有oracle数据库的服务器地址:
# tnsnames.ora Network Configuration File: E:\app\Administrator\product\11.2.0\client_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.123.250)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
打开命令提示符,进行连接测试,如下:
显示Connected即表明服务端的监听配置和客户端的TNS配置是正确的
conn system/123456@orcl
代码中,system
为数据库默认系统用户名,123456
为安装数据库时设置的密码,@orcl
是数据库的实例名称。
1.7. 表空间和用户
1.7.1. 表空间
SQL Server数据库与Oracle数据库之间最大的区别要属表空间设计。
Oracle数据库开创性地提出了表空间的设计理念,这为Oracle数据库的高性能做出了不可磨灭的贡献。
ORACLE数据库被划分成称作为表空间的逻辑区域——形成ORACLE数据库的逻辑结构。
一个ORACLE数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。
可以这么说,Oracle中很多优化都是基于表空间的设计理念而实现的。
1.7.2. 用户
Oracle安装会自动的生成sys用户和system用户
- sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限
- system用户是管理操作员,权限也很大。具有sysoper角色,没有create database的权限
- 一般讲,对数据库维护,使用system用户登录就可以拉
通常,我们不会将system管理用户交给开发人员使用,需要创建一个普通操作权限的账号进行使用。
1.7.3. OEM创建表空间和用户
以sys管理员账号登录EM,选择【服务器】-【表空间】
选择【创建】进行新建表空间
以上,表空间【FLY】创建完成,并已设置为默认表空间。
接着开始创建用户,选择【服务器】-【用户】
设置用户一般信息(名称、口令、默认表空间等),如下:
选择【角色】标签,进行角色设置:
创建完成后,在客户端进行连接测试,如下:
1.7.4. 命令方式用户操作
做好以上准备后,我们可以针对数据添加用户并授权,以下操作均在服务端进行
打开sqlplus,使用安装Oracle时设置的密码进行登录:
上图中system为默认系统用户,可以用来进行用户的相关操作
以下脚本是用户相关的操作:
-- 查看数据库中所有用户的名称;
select username from dba_users;
-- 新建用户 用户名为【new_user_name】,密码为【new_password】
create user new_user_name identified by new_password;
-- 修改用户密码 将用户【new_user_name】重置为【new_password】
alter user new_user_name identified by new_password;
-- 删除用户
drop user new_user_name;
-- 同时删除与【new_user_name】相关的表;
drop user new_user_name cascade;
//授权
-- 登录授权;
grant connect to new_user_name;
-- scott用户为new_user_name赋予表emp的select权限;
grant select on emp to new_user_name;
-- sys用户为new_user_name赋予表emp的select权限;
grant select on scott.emp to new_user_name;
-- 授予增删改查权限
grant select,insert,delete,update on scott.emp to new_user_name;
-- 授予 CONNECT角色和RESOURCE角色
grant connect,resource to new_user_name;
CONNECT角色: --是授予最终用户的典型权利,最基本的
- ALTER SESSION --修改会话
- CREATE CLUSTER --建立聚簇
- CREATE DATABASE LINK --建立数据库链接
- CREATE SEQUENCE --建立序列
- CREATE SESSION --建立会话
- CREATE SYNONYM --建立同义词
- CREATE VIEW --建立视图
RESOURCE角色: --是授予开发人员的
- CREATE CLUSTER --建立聚簇
- CREATE PROCEDURE --建立过程
- CREATE SEQUENCE --建立序列
- CREATE TABLE --建表
- CREATE TRIGGER --建立触发器
- CREATE TYPE --建立类型
创建用户【fly】,密码为【1】,并授予connect和resource权限
CREATE USER FLY IDENTIFIED BY 1;
GRANT CONNECT,RESOURCE TO FLY;
以上,即基本的用户创建和权限授予操作。
1.8. PL/SQL developer
打开PLSQL Developer,选择Tools -> perference -> Connection,配置其中的Oracle Home和OCI Library项,如下图所示:
Oracle Home:E:\app\Administrator\product\11.2.0\client_1
OCI Library:E:\app\Administrator\product\11.2.0\client_1\oci.dll
tsname.ora配置:
orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.60)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
1.9. 其他操作
1.9.1. 新建实例
如果对于oracle默认的实例名称并不满足,也可以自行创建实例,操作如下:
开始菜单中打开【Oracle-OraDb11g_home1】-【配置和移植工具】-【DataBase Configuration Assistant】数据库配置助手进行新建实例
安装过程较为耗时,正在安装中。。。
安装完成【退出】即可
1.10. 疑难解答
1.10.1. ORA-12541
连接Oracle时报错ORA-12541: TNS: 无监听程序
需要检查服务端的监听程序配置,【Net Configuration Assistant】检查本地网络服务名的配置。
1.10.2. EM相关账户解锁
剧情1:郁闷的开始
使用环境:win8+oracle 11g r2
前言:不知道是何种原因(多种原因),装好的oracle没有EM,那么就需要自己配置一下
PS:配置过程出现各种各样的问题,整整弄了一个晚上,现在分享,希望大家不要再走弯路
基本步骤:
1.设置好监听器, 启动监听:lsnrctl start,查看监听状态:lsnrctl statu
2.删除dbcontrol:emca -deconfig dbcontrol db
3.删除EM资料库:emca -repos drop
4.创建新资料库:emca -repos create
5.重新配置dbcontrol:emca -config dbcontrol db
注意:
1.cmd要使用管理员方式(否则不能备份文件)
2.密码不能太简单,111111即可 (无法对所有EM相关账户解锁)
3.sys的密码 记得加权限 111111 as sysdba
4.第五步之前请确认解锁状态(理论上需要的三个账号都是open状态)
Sql代码
1.--解锁用户
2.alter user scott account unlock;
3.--查询状态
4.select username,account_status from dba_users;
5.--重新赋值密码
6.alter user sys identified by 111111;
--解锁用户
alter user scott account unlock;
--查询状态
select username,account_status from dba_users;
--重新赋值密码
alter user sys identified by 111111;
下面这句话解决“无法对所有 EM 相关帐户解锁” 的问题(这个不知道有没有效果,如果上面方式不行,那么可尝试)
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor" /v "AutoRun" /d "" /f
运行:
1.设置ORACLE_UNQNAME:set ORACLE_UNQNAME=ORCL set ORACLE_SID= ORCL
2.启动:emctl start dbconsole(如果上面的dbcontrol 配置成功应该是已经运行状态)
3.检测运行状态:emctl status dbconsole
4.访问地址:https://127.0.0.1:1158/em (注意证书要确认,或者直接执行)
5.停止:emctl stop dbconsole
剧情2:发现还不行
c:>emctl start dbconsole
OC4J Configuration issue. /u01/app/oracle/product/11.2.0/dbhome_1/oc4j/j2ee/OC4J_DBConsole_test_orcl not found.
再一次
c:>emca -config dbcontrol db
这才ok!
1.10.3. 重装OEM
emca -config dbcontrol db -repos recreate
1.10.4. OEM管理地址
在ORACLE_HOME目录下的install目录中有一个portlist.ini文件
这个文件中就记录着这台数据库Server上所有实例的Enterprise Manager Console HTTP Port和Enterprise Manager Agent Port的内容(还有isqlplus的端口信息)。
如上示例中对应的地址为:【D:\app\Administrator\product\11.2.0\dbhome_1\install\portlist.ini】
Enterprise Manager Console HTTP 端口 (orcl) = 5500
Enterprise Manager 代理端口 (orcl) = 3938
1.10.5. 实例化OC4J配置文件时出错
由于安装包不完整,从官网下载需要解压两个压缩包,完整安装即解决该问题。
1.10.6. 中文乱码
在PLSQL中插入数据时,出现一个问题,PLSQL中的表里无法显示中文,中文无法保存、无法输出,中文在表中显示问号。
可以使用以下语句查看字符编码的设置:
-- 服务端编码
SELECT * FROM SYS.NLS_DATABASE_PARAMETERS;
-- 客户端编码
SELECT * FROM SYS.NLS_SESSION_PARAMETERS;
SELECT USERENV('language') FROM DUAL;
第一步:修改注册表。
开始-运行-输入regedit-回车进入注册表,依次单击HKEY_LOCAL_MACHINE--->SOFTWARE ---> ORACLE--->KEY_OraDb11g_home1(不同版本的Oracle显示的都不太一样,但都会包含home这个单词),找到“NLS_LANG”,查看数值数据是否为:“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”,如果不是就将它设置为“SIMPLIFIED CHINESE_CHINA.ZHS16GBK。”
第二步:修改环境变量。
设置完注册表后,接下来设置我们的环境变量,计算机(右键) --->属性--->高级系统设置--->高级--->环境变量--->新建,个人建议新建用户变量,变量名输入:“NLS_LANG”,变量值输入:“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”。点击确定即可,到此我们就设置完了。
1.10.7. 时间格式
Oracle缺省的时间格式即时间数据的显示形式,与所使用的字符集有关。一般显示年月日,而不显示时分秒。
向表中插入数据时,如果不使用转换函数,则时间字段的格式必须遵从会话环境的时间格式,否则不能插入。
针对windows系列,在服务端添加环境变量,重启服务即可:
我的电脑 属性 高级 环境变量 新建 变量名 NLS_DATE_FORMAT 变量值 YYYY-MM-DD HH24:MI:SS 应用 确定
Linux系列需要修改bash_profile文件(略)。
以上方法仅对客户端的环境变量修改有效,而若要所有客户端在建立会话的时间格式起作用,可以采用创建触发器的方法。
create or replace trigger data_logon_trigger
after logon
ON DATABASE
begin
execute immediate
'alter session set nls_date_format = ''yyyy-mm-dd hh24:mi:ss'' ';
end;
参考引用:
listener.ora/sqlnet.ora/tnsnames.ora配置文件详解
Why doesn't the NLS_DATE_FORMAT in my init.ora work sometimes