`
Everyday都不同
  • 浏览: 713515 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

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> 

  • 大小: 6.1 KB
  • 大小: 5.2 KB
  • 大小: 67.4 KB
  • 大小: 3.3 KB
  • 大小: 16 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics