http://zhumeng8337797.blog.163.com/blog/static/10076891420111115104023136/
NLS_LANG SIMPLIFIED CHINESE_CHINA.ZHS16GBK
打开NETCA,配置两个监听器。
LISENTER,默认监听器,一路next,就配置完毕, 监听端口1521。
配置LISENTER2,注意监听端口改为1522,其它和LISENTER一致。
这个时候,LISENTER已经可以使用了。
但是LISENTER2还是不行,因为Oracle只会为第一个默认的监听注册服务。
在$ORACLE_HOME/NETWORK/ADMIN,编辑lisenter.ora文件,如下:
红色字体为需要增加的内容
SID_LIST_LISTENER2 =
(SID_LIST =
(SID_DESC =
(SID_NAME = WWJ)
(ORACLE_HOME = d:\oracle\product\10.2.0\db_1)
(GLOBAL_DBNAME = WWJ)
)
)
LISTENER2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = valen)(PORT = 1522))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = d:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = valen)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
需要解释的是,SID_LIST_<lisenter name> 这里的<lisenter name>要和LISTENER名称一致。
SID_DESC则注册要提供服务的数据库实例名。这样LISTENER2 才能够提供服务。
否则会报TNS-错误。
测试过程,配置local tns name如下:
1522 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522))
)
(CONNECT_DATA =
(SERVICE_NAME = wwj)
)
)
1521 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = wwj)
)
)
local =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522))
)
(CONNECT_DATA =
(SERVICE_NAME = wwj)
)
)
1522和1521分别对应两个监听器,local稍后再解释:
测试:
SQL> conn@1521
已连接。
SQL> conn@1522
已连接。
OK,再看local,
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522))
这里的意思是,该命名对应了两个监听端口,如果一个Crash,会立刻切换到另外一个。
并且如果多个连接,会随机的分配监听。
测试
SQL> conn @local
已连接。
STOP LISENTER,再次连接,这个时候,连接比第一次慢了1秒钟左右
SQL> conn @local
已连接。
成功,这时连接上了LISTENER2
关于Oracle网络服务的资料,在OCP教材的第四章Oracle Net Services有很清晰的说明。
Oracle 版本:11g
运行环境: window XP
远程连接 需要两台电脑,一个是远程服务器端 ;一个是本机客户端。并且要保证在两台电脑上同时安装了Oracle 11g
先假设,你的电脑作为本机客户端,你同事的电脑作为远程服务器端。
具体配置如下:
1 设置远程服务器端的Oracle,即你同事电脑上的Oracle,需要设置 2 个地方:
(1)设置"Database Configuration Assistant",在进行第6步:连接模式 时选择:“共享服务器模式” 。
并且下面的 “共享服务器” 选择 3 以上。然后点击“确定”或“是” 。
(2)服务器端还要设置 net manager:监听程序 | LISTENER | 添加地址,主机填 客户端 电脑的ip,端口是:1521;
(3)设置完成之后,停止服务,然后启动服务。
2 设置本机客户端,即你电脑上的Oracle
(1)设置 "Net Configuration Assistant"
"Net Configuration Assistant" 工具 -> "本地NET服务名配置" -> "添加" -> 选择ORACLE数据库或服务-> 输入服务名(远程服务器端的Oracle的全局数据库名) -> TCP -> 主机名中输入服务端IP地址,端口输入服务端监听程序所监听的端口 -> 是,进行测试 -> 首次测试可能会失败,因为默认的用户名口令不一定和服务端的匹配,点击 更改登录 输入服务端的用户名和口令,确定后如出现"测试成功",说明连接成功
(2)设置完成之后,停止服务,然后启动服务。
(3)按 winkey + R ,弹出“运行”对话框 , 运行cmd ,进入dos界面,输入 sqlplus /nolog 回车。
(4)输入 conn scott/234@//192.168.1.106:1521/orcdb
或者: conn scott/234@192.168.1.106:1521/orcdb
就可以连接到服务器端的Oracle了。
( 注: scott/234 是服务器端的Oracle的用户 ,192.168.1.106 是服务器端的ip ,orcdb 是服务器端的Oracle的全局数据库名 )。
-------------- 至此配置完成! -------------
1、增加一个listener:终端运行: $ORACLE_HOME/bin/netca (必须在图形界面环境下),按照提示增加一个listener。
2、增加listener支持的服务:终端运行: $ORACLE_HOME/bin/netmgr (图形界面下),在: Oracle Net Configuration -> Local -> Listeners -> xxxx (你刚才增加的那个listener),从中选择“Database services”,增加你要服务的database。其中, 注意Global Database Name就是你的对外的服务名字。 然后保存并退出。
3、重启你的listener:终端运行:
$ORACLE_HOME/bin/lsnrctl stop
$ORACLE_HOME/bin/lsnrctl start
最后提示:
Service "XXXX" has 1 instance(s).
The command completed successfully.
好了,到现在服务端的listener配置按成了。
客户端:
1、配置一个“Local Service Name Configuration”:终端运行: $ORACLE_HOME/bin/netca ,选择: Local Service Name Configuration ,按照提示操作。其中, Service Name写和服务器端配置的时候添的那个“Global Database Name”; Host name写服务器IP (如果是在局域网内,也可些服务器名字);最后给这个本地服务起一个名字(例如叫:LSN)。然后保存并退出。
2、通过sqlplus连接到服务器上的数据库:
格式: sqlplus 用户名/密码@本地服务的名字
例子: sqlplus user/password@LSN
到oracle官方下载:
http://www.oracle.com/technology/global/cn/software/tech/oci/instantclient/htdocs/winsoft.html (中文)
http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html下载下列几个压宿文件
http://www.oracle.com/technetwork/cn/topics/winsoft-095945-zhs.html
oracleDBinstantclient-basic-win32-11.1.0.7.0.zip 这是最核心的包
instantclient-jdbc-win32-11.1.0.7.0.zip 包含JDBC Driver的包
instantclient-sqlplus-win32-11.1.0.7.0.zip 最简单的SQLPLUS包
我把文件解压到了d盘,d:\oracleclient11g下面
最后的文件结构应该如下:
2,配置tnsnames.ora,如果本机上没有安装oracle,可以从安装了oracle的机上拷贝一个(tnsnames.ora文件在% ORACLE_HOME%\network\admin下)放在上面的目录d:\oracleclient11g下。
oracledata =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.112)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
3,添加一个环境变量,名为TNS_ADMIN,值为tnsnames.ora文件所在路径(如:d:\oracleclient11g),这是为了能够 找到上面说的tnsnames.ora。如果本机上安装了ORACLE,并且设置了ORACLE_HOME环境变量,那么会自动 在%ORACLE_HOME%/network/admin/位置查找tnsnames.ora文件。
4,设置ORACLE的语言,添加注册表项:“NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK”,位于 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE。如果本机没有安装ORACLE,在H_L_M\SOFTWARE\下是没 有"ORACLE"这一项的,需要手动创建,然后再在ORACLE项下创建键NLS_LANG,键值为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
5,下载并安装PL.SQL.Developer配置应用
配置tools->preferences->connection
找到等号左侧参数填写等号右侧对应的内容
Oracle Home=D:\oracleclient11g
OCI library=D:\oracleclient11g\oci.dll
6,再次打开plsql则会在database中有oracledata 选项输入用户名密码就可以登陆。
Linux上安装oracle,因其过程之繁琐,报错率之高,成为了许多工程师的梦魇。前段时间因工作需要,分别在HP的PC服务器和小型机上装了几次oracle,其间的过程是生不如死啊,简直都快弄出人命了~如果自己没有一套完整的安装流程,光靠临时去百度的话,我想任何人都会有这样的问题:不断报错,不断卡壳,没完没了……最后还很有可能导致不得不重装系统。这些使得我不得不对自己的教训进行了总结,现总结出一份史上最详细的安装教程,供自己备忘,同时也分享给大家。
本教程适用环境为32位的RHEL5系统和oracle11g R2。
1、在安装oracle之前,用命令检查必需的RPM软件包有没有安装
命令如下:
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make numactl-devel sysstat unixODBC unixODBC-devel
如果RPM包安装完全的话会如图所示
如果未安装完全会显示XXX is not installed,这个时候可以通过挂在RHEL5.4的光盘或镜像,在Server文件夹里寻找相应的RPM包安装。
2、建立oracle系统用户和安装目录
创建一个主组oracle和一个副组dba
groupadd oinstall
groupadd dba
创建oracle安装文件夹
mkdir -p /oracle
添加一个oracle用户, 根目录是 /oracle, 主的组是oinstall 副的组是dba
useradd -g oinstall -G dba -d /oracle oracle
拷贝包含环境变量的文件到安装目录下,这个之后会用到
cp /etc/skel/.bash_profile /oracle
cp /etc/skel/.bashrc /oracle
cp /etc/skel/.bash_logout /oracle
为oracle用户设置密码 123456
passwd oracle
设置安装目录用户权限
chown -R oracle:oinstall /oracle
检查 nobody 是否存在
id nobody
缺省存在的,会显示nobody的uid、gid和groups,默认都是99。如果不存在可以输入以下命令
/usr/sbin/useradd -g nobody
3、修改内核参数
vi /etc/sysctl.conf
在sysctl.conf这个文件中加入以下内容,我加在文件的末尾
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
4、设置oracle用户的shell limit
vi /etc/security/limits.conf
在limits.conf中加入以下内容,同样放在末尾,如图所示
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
增加下面的内容到文件 /etc/pam.d/login 中,使shell limit生效
vi /etc/pam.d/login
session required pam_limits.so
5、设置oracle 用户环境变量
首先切换到oracle用户下
su – oracle
vi .bash_profile
在隐藏的.bash_profile文件中,将原有的环境变量删除,加入以下环境变量,注意自己的根目录位置
ORACLE_BASE=/oracle
ORACLE_HOME=$ORACLE_BASE/oracle
ORACLE_SID=DATA
PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
6、将oracle安装包解压后上传到linux中,准备开始安装
Oracle 11g Release 2 linux x86官方的安装包分两个文件,一个1.2G一个900+M,解压缩后会有一个database文件夹,把这个文件夹拷过去就可以了。具体过程不再描述。复制完成后,改变oracle用户访问安装包的权限
chown -R oracle:oinstall /usr/oracle_install/database
注销root用户,改用oracle用户登录,来的database文件夹下,开始安装
./runinstaller
这里注意一下,如果是用root用户通过su切换到oracle用户的话,在“检查监视器”这一项可能无法通过,会显示以下警告
检查监视器: 监视器配置至少必须显示 256 种颜色
>>> 无法使用命令 /usr/bin/xdpyinfo 自动检查显示器颜色。请检查是否设置了 DISPLAY 变量。 未通过 <<<<
未通过某些要求检查。必须先满足这些要求,
然后才能继续安装,那时将重新检查这些要求。
是否继续? (y/n) [n] y
因此注销或重启后用oracle用户登录最为保险。
7、安装过程
这时候不出意外的话会弹出oracle 11g的图形安装界面,现在根据图形界面的提示一步一步安装吧
这一步可填可不填,由于这里是实验,所以就不填了
选择仅安装数据库软件,数据库实例可以放到安装完后再配置
选择单实例数据库安装
语言默认即可
选择安装企业版,也可以根据个人需求来选择
Oracle的安装目录,这里已经在环境变量中设置过了,默认即可
这里会提示要创建一个清单目录,回到命令行下,输入以下命令,否则文件夹不存在会报错。
创建完文件夹后再点击下一步
mkdir /oraInventory
chown -R oracle:oinstall oraInventory
设置不同组的数据库权限
安装程序会检查物理内存和空间大小,由于虚拟机分的内存很小,所以oracle检查会提示失败,不过我们可以忽略它,在右上角打勾即可(真实的服务器内存非常大,一般不会出现此问题)
检查一遍之前的配置,点“完成”开始正式安装
安装完毕, 提示执行两个脚本
./oraInventory/orainstRoot.sh
./oracle/oracle/root.sh
最后点finish,oracle安装完成!
8、开启oracle监听服务
首先在命令行上输入netca,会弹出一个对话框
这里一直默认下一步就可以了,最后点“完成”结束
9、创建oracle数据库
回到命令行,输入dbca,会弹出以下会话框
数据库名称和SID取DATA(注意要和环境变量中设置的SID一样)
为不同用户设置统一口令,后期可以更改
接着下一步,在第九步左右Character Sets 选择 Use Unicode(AL32UTF8)字符集
开始创建数据库,如无意外的话,进度条走完后数据库即创建完成。
10、测试数据库
注意必须使用oracle系统用户登录才能操作数据库,以及开启监听、控制台等功能。
[oracle@localhost ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Sat Dec 24 23:33:57 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn /as sysdba //连接数据库
Connected to an idle instance. //oracle实例未开启
SQL> startup
ORACLE instance started.
Total System Global Area 238530560 bytes
Fixed Size 1335724 bytes
Variable Size 121638484 bytes
Database Buffers 113246208 bytes
Redo Buffers 2310144 bytes
Database mounted.
Database opened.
SQL> conn /as sysdba
Connected.
SQL> create table testUser( id integer,name char(10)); //创建表
Table created.
SQL> insert into testUser values(0,'mike'); //创建记录
1 row created.
SQL> select * from testUser;
ID NAME
---------- ----------
0 mike
关闭数据库
SQL> shutdown immediate
SQL> quit
以上现象说明oracle已经安装成功,也可以通过web页面访问oracle数据库
首先在命令行输入emctl start dbconsole开启控制台服务
在浏览器上输入https://X.X.X.X:1158/em即可访问(X.X.X.X是服务器IP),用户名和口令即创建数据库时创建的用户名(SYS、SYSTEM等)。
至此oracle安装完成,希望通过此教程,我们都能够在安装的过程中少走弯路。呵呵,大家都这么忙,时间耗不起呵~