Oracle11g For Win7安装过程的痛苦总结
入行以来,最害怕之一就是Oracle了。。前段时间在Linux上静默安装它,现在又在Windows下安装它,而且过程也是充满艰辛。。整个人就是被折磨过无数遍濒临崩溃状态,我觉得能成功安装它是一个讲究幸运的事情,好了,下面开始记录一些东西。或许以后还是可以参考一下!
==============================以上是抱怨的分割线==================================
1、先从完全卸载Oracle说起
之所以先讲它是因为我重复了10+遍了有。。完全卸载oracle才能再次尝试安装时有成功的可能。
1)计算机->管理->服务和应用程序->服务: 停止所有Oracle有关的服务;
2)开始->程序 里查找Universal Installer里卸载除dbhome_1(也许还有dbhome_2/dbhome_3)之外所有的组件;
3)找到dbhome_1所在的目录,删除;
4)注册表删除
删除HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE目录。
删除HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services中所有以oracle或OraWeb为开头的键。
删除HKEY_LOCAL_MACHINE/SYSETM/CurrentControlSet/Services/Eventlog/application中所有以oracle开头的键。
删除HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services中所有以oracle或OraWeb为开头的键。
删除HKEY_LOCAL_MACHINE/SYSETM/ControlSet001/Services/Eventlog/application中所有以oracle开头的键。
删除HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services中所有以oracle或OraWeb为开头的键。
删除HKEY_LOCAL_MACHINE/SYSETM/ControlSet002/Services/Eventlog/application中所有以oracle开头的键。
删除HKEY_CLASSES_ROOT目录下所有以Ora、Oracle、Orcl或EnumOra为前缀的键。
删除HKEY_CURRENT_USER/SOFTWARE/Microsoft/windows/CurrentVersion/Explorer/MenuOrder/Start Menu/Programs中所有以oracle 开头的键。
删除HKDY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI中除Microsoft ODBC for Oracle注册表键以外的所有含有Oracle的键。
5)删除所有与Oracle相关的目录
c:\Program file\Oracle目录、 ORACLE_HOME目录、c:\Documents and Settings\系统用户名、C:\Users\xxxx\Oracle(xxxx为用户名)、C:\Windows\System32\config\systemprofile\Oracle
6)开始->程序里所有的与oracle相关的快捷启动方式
确保以上全部删除,重启电脑即可。
2、安装Oracle
2.1 安装Oracle Database
1)首先需要注意的是,解压包如下:
请同时选中这2个压缩包再解压,如果你只选择一个解压后再把另一个解压到同目录,会很容易出现目录的错乱。
2)解压后的setup.exe请最好「以管理员身份」运行,经验之谈,不然会被各种权限的问题给搞死。。
3)步骤2的安装选项最好是「仅安装数据库软件」,这样可以把Oracle Database配置工作与安装过程解耦。这样做是因为在Oracle Database配置工作时很容易出错,如果你忽略或中止,整个安装过程没有成功完成就会退出,下次你再安装又会创建一个dbhome,造成紊乱;
4)步骤3选择「单实例数据库安装」,步骤6的安装目录可以自己指定,但基目录后面的目录结构最好不要修改。字符什么的最好用默认的即可~
5)安装完成Oracle数据库产品后,我们就开始着手数据库实例的安装与配置工作。
2.2 数据库实例安装与配置
6)开始->程序->Oracle->配置和移植工具:选择Database Configuration Assistant(最好以管理员身份运行,否则安装过程可能会提示:insufficient privilege权限不足)开始实例安装工作。
7)安装过程到Oracle Database Configuration Assistant时可能会出现如下错:
解决办法:开始->程序->Oracle->配置和移植工具:选择Net Manager->本地->概要文件->Oracle安全特性->所选方法中去掉NTS
等待安装过程完成即可。安装后的「口令管理」千万别忘了,解锁被锁的所有用户并为sys和system用户设置你自己的密码~
(PS:安装成功真的要靠运气……)
3、使用PL/SQL Developer
好了,如果足够幸运成功安装Oracle,那么我接下来使用PL/SQL developer(以下简称PL/SQL)又是一顿折腾。
PL/SQL的使用要特别注意位数(bite)的概念,如果你的PL/SQL是32位的话,是无法加载64位的oci.dll的。
要注意以下概念:
“如果我plsql是32位的,说明它无法支持64位的oci.dll所以我就需要“曲线救国”,手动再安装一个32位的客户端供32位的plsql连接(32位的instant_client或win32_11gR2_client.zip),这时候我本地就相当于安装了2个oracle客户端,一个32位一个64位”
——你在安装oracle的时候客户端也一并安装的,但由于我安装的是64位的,如果PL/SQL不是64位的就麻烦了。。正确安装位数对应的PL/SQL很重要!!!
正确安装好位数对应的PL/SQL后,不要登录,先配置:
这样,你在tnsnames.ora里面配置的数据库别名就可以直接被使用了。如:
E:\app\xxxxxx\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora:
#ORCL为数据库别名 ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )
这样,你在登录PL/SQL时,Database那一项就会有你已经配置好的数据库别名选项,而无需你自己输入IP和端口之类的参数了。
4、创建表空间和用户
创建表空间是需要最高权限的,一般是sys用户,我们先在dos里面登入:
注意。sqlplus可能碰上中文乱码问题,别忘了设置环境变量:
或者用PL/SQL登录,只不过Connect as选择SYSDBA罢了。
1)表空间和用户、表的关系:
一个表只能属于一个表空间。一个用户可以拥有多个表空间。 一个表空间可以有多个表。
一般情况下,一个用户对应一个表空间。
表空间分为:临时表空间和永久表空间。我们可以命名不同的永久表空间,把功能相似的表放在同一个表空间下。表空间相当于一个“盛放表的容器”。
所以有这种语法:create(select) table 用户名.表名……
2)创建表空间、用户的步骤如下:
/*创建临时表空间 ,可以不做*/
create temporary tablespace 临时表空间名(如:soacloud_temp)
tempfile 'E:\oracle\oradata\XE\临时表空间名.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
/*创建数据表空间(dbf文件由你自己指定,无需事先创建,运行该语句后会自动生成) */
create tablespace 表空间名 logging
datafile 'F:\app\oracle\oradata\orcl\pdborcl3\表空间名.dbf'
size 300m
autoextend on
next 100m maxsize 20480m
extent management local;
/*创建用户并指定表空间 */
create user 用户名 identified by 密码
default tablespace 表空间名
temporary tablespace 临时表空间名;
/*第4步:给用户授予权限 */
grant connect,resource,dba to 用户名; (dab权限慎给)
3)sys用户和system用户
system是数据库内置的一个普通管理员,你手工创建的任何用户在被授予dba角色后都跟这个用户差不多。
sys用数据库的超级用户,数据库内很多重要的东西(数据字典表、内置包、静态数据字典视图等)都属于这个用户,sys用户必须以sysdba身份登录。
查看所有的用户:select username from dba_users;
5、service_name和sid
service_name:是这个数据库对外宣称的名字,外面的人要想连接我这个数据库,你就在客户端的连接串里写上service_name;
sid:一个数据库可以有多个实例(如RAC),SID是用来标识这个数据库内部每个实例的名字
windows环境查看oracle的sid和services_name
1)查看sid:
方法一:打开注册表(win+R输入regedit)->HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->KEY_OraDb11g_home1->ORACLE_SID
方法二:sys用户登录,运行sql语句select instance_name from v$instance;
2)查看某数据库的service_name:
方法一:E:\app\用户名\product\11.2.0\dbhome_1\NETWORK\tnsnames.ora里面的指定数据库的SERVICE_NAME对应的内容
方法二:sys用户登录,运行sql语句
show parameter service_names
所以一个数据库对应一个service_name,多个数据库实例。
一般情况下,一个数据库对应一个实例。windows下可以通过DBCA(Database Configuration Assistant工具)来创建一个instance实例。
jdbc的url用service_name和sid连接的不同方式
jdbc:oracle:thin:@<host>:<port>:<SID>
jdbc:oracle:thin:@//<host>:<port>/<service_name>
上一篇: ORACLE RMAN备份及还原
下一篇: 单一用户的ACL权限设定
推荐阅读