100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > windows安装Oracle12 (服务端+客户端)

windows安装Oracle12 (服务端+客户端)

时间:2020-07-15 16:45:31

相关推荐

windows安装Oracle12 (服务端+客户端)

目的:

windows 系统下,实现:

1多台机器之间的通信。如有四台机器且在一个子网内,要先把机器连起来,能够互相ping,然后继续后续

2第二件事情,是搭建Oracle服务/客户端环境。为了更加贴近实际场景,选择把服务端和客户端放在不同的机器上(一般的教程可能是会选择放在同一台机器)。

过程

1搞定机器和通信

首先拿到多台计算机,一个路由器,网线/无线网卡若干,把硬件搭好。

以其中一台计算机A为例,CMD --- ipconfig 结果如下:

为了把服务端和客户端放在不同的机器上(后面甚至会是有多台机器上有相同服务器以形成服务器集群的形式),先要实现机器之间的通信。

问题:但是发现连接子网内多台windows 机器(在同一个子网内部)无法ping通。

解决:既然都在一个内网,网线等物理因素都是OK的,那便可能是防火墙的问题,选择关掉。先把所有的机器的网络类型设为专属网络,然后关掉专属网络下计算机的的防火墙,然后测试,发现可以ping通。

网络防火墙设置的详细步骤参考:/article/f3ad7d0f344d6209c3345b05.html

2搭建Oracle服务/客户端

操作系统是win10 64位;

1.1首先装一下java环境(略);

1.2然后去如下官网下载Oracle 12c Release 2(Version12.2.0.1.0,64位) 我下的时候能有几M每秒,挺快的;

/technetwork/database/enterprise-edition/downloads/index.html

(或者这里:http://218.94.103.156:8090/download/oracle/)

1.3然后运行安装,会选择安装位置,口令等(参考/onezg/p/8768597.html前半篇);

1.4然后运行SQL Plus ,以system 用户登进去看下是否装好了, 或者登陆https://localhost:5500/em/login可以看到管理界面;

1.5运行SQL developer ,可以更直观的看到表信息(参考/shootercheng/p/6204531.html)。

1.6这时只有system 用户,我决定创建一个用户,并授予其连接建表等权限。

create user xxx identified by xxx; --后面是密码,前面是name

问题ORA-65096:公用用户名或角色无效

解决:创建用户的时候用户名需要以c##开头,如c##pofile

错误写法: create user xxxidentified by oracle;正确写法: create user c##xxx identified by oracle;

授予权限:

grant connect,resource,dba to c##xxx;grant create session, connect, resource to c##xxx;

1.7SQL developer测试这个新建的用户并执行一个建表语句和插入语句

SQL developer配置新用户同1.5操作。

create table DEMO_USER(USER_ID NUMBER(9,0) not null,USER_NAME VARCHAR2(120) not null,STATE CHAR(1) not null,CREATE_DATE DATE not null,STATE_DATE DATE not null,EMAIL VARCHAR2(120) not null,LOST_FOUND_KEY NUMBER(9,0) not null,constraint PK_DEMO_USER primary key (USER_ID))ALTER TABLE DEMO_USER ADD CONSTRAINT EMAIL UNIQUE (EMAIL); --创建唯一约束select * from DEMO_USER;insert into DEMO_USER(USER_ID,USER_NAME, STATE, CREATE_DATE, STATE_DATE, EMAIL, LOST_FOUND_KEY)values(1,'admin','A', to_date('-06-08 20:20:59','yyyy-mm-dd hh24:mi:ss'),to_date('-06-08 20:20:59','yyyy-mm-dd hh24:mi:ss'), '5461XXXXX@', 14947);

1.8 换一台机器,使用PLSQL连接这个新用户

一些前提的说明:装数据库服务端的机器IP为192.168.1.112, SID是 orcl ,新用户用户名是 c##profile,PLSQL所在机器的IP是 192.168.1.107。

首先,在机器192.168.1.107上,按如下官网地址下一个32位的Oracle客户端,注意选对应数据库的版本,这个下载网速不是很快。

/technetwork/database/database-technologies/instant-client/downloads/index.html

然后,打开PLSQL,点击取消不进行登录,选择“工具”菜单下“首选项”,填写如下。

Oracle主目录名:XXX\instantclient_12_2 --注意是新下的这个32位的Oracle客户端的对应地址,不是PLSQL原来的那个

OCI库:‪XXX\instantclient_12_2\oci.dll,--注意是新下的这个32位的Oracle客户端的对应地址,不是PLSQL原来的那个

然后,设置环境变量如下:

NLS_LANG SIMPLIFIED CHINESE_CHINA.ZHS16GBK

ORACLE_HOME XXX\instantclient_12_2 --注意是新下的这个32位的Oracle客户端的对应地址,不是PLSQL原来的那个

path XXX\instantclient_12_2

TNS_ADMIN XXX\instantclient_12_2 ---环境变量的作用是确定软件字符编码和配置文件tnsnames.ora的读取位置

然后,tnsnames.ora的正确写法如下(放哪里都无所谓,根据环境变量写的位置去放即可):

host写成服务器所在机器的静态IP,service_name写SID,默认的是orcl,我一开始以为是新建的用户名,这样会报解析不了或者找不到对应服务的错误。

然后,直接连可能会报监听服务不存在!这时说明服务端的监听服务没打开或者没配好,回到192.168.1.112机器,

xxx\product\12.2.0\dbhome_1\network\admin目录下会有listener.ora 文件和tnsnames.ora 文件,需要修改并重启下监听服务,或者重启下电脑也行。

# listener.ora Network Configuration File: C:\AFile\progam\Oracle\oracle12\product\12.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 = C:\AFile\progam\Oracle\oracle12\product\12.2.0\dbhome_1)(PROGRAM = extproc)(ENVS = "EXTPROC_DLLS=ONLY:C:\AFile\progam\Oracle\oracle12\product\12.2.0\dbhome_1\bin\oraclr12.dll")))(SID_DESC =(GLOBAL_DBNAME = ORCL)(ORACLE_HOME = C:\AFile\progam\Oracle\oracle12\product\12.2.0\dbhome_1)(SID_NAME = ORCL)))LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.112)(PORT = 1521))(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))))

# tnsnames.ora Network Configuration File: C:\AFile\progam\Oracle\oracle12\product\12.2.0\dbhome_1\network\admin\tnsnames.ora# Generated by Oracle configuration tools.LISTENER_ORCL =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.112)(PORT = 1521))ORACLR_CONNECTION_DATA =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)))(CONNECT_DATA =(SID = CLRExtProc)(PRESENTATION = RO)))ORCL =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.112)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))

----------------------------------------------------------------------

OK 换了台机器,IP都换了,记录下过程:

首先改下上文的几处服务器IP

启java应用,需要改DB配置文件,这时报了:

Oracle12c连接问题ORA-28040:没有匹配的验证协议

在oracle服务端的找到如下文件:

$ORACLE_HOME/network/admin/sqlnet.ora

加入如下:

SQLNET.ALLOWED_LOGON_VERSION=8

然后报了:

oracle 12c ORA-01017: 用户名/口令无效; 登录被拒绝

改一下密码,改成纯数字;

alter user XXX identified by XXX

最后,回到PLSQL所在机器,输入新用户和口令,发现可以成功登陆上去。

Conclusion

第一个,关于机器通信,主要是防火墙导致的,较为简单。

第二个。关于oracle客户端和服务端,服务端的SID是orcl,这个我目前不清楚为什么默认是这个。要想在其他机器上使用客户端连到数据库用户,首先要更改部分设置,使用32位的客户端。然后要正确配置PLSQL的tnsnames.ora配置文件。然后要保证数据库服务端的监听程序正常配置和打开,也就是配置服务端的listener.ora 文件和tnsnames.ora。这样即可实现!

本文记录了操作步骤,和一些配置的方法以及一些错误。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。