win10环境安装与配置Oracle11g数据库,以及一些常见的sqlplus命令与问题解决方案...

最近在部署一个网页项目,该项目使用oracle 11g,原本打算在linux环境进行部署,但是因为各种问题最后转战到了win10操作系统下面进行oracle 11g安装与配置,总结一些心得。

知识点: oracle 11g是甲骨文(Oracle)公司旗下的一款数据库产品,其中版本号的g代表的是此版本使用了网格(grid)技术。类似的,在更新的版本12c中的c代表的是云(cloud)技术,就版本9i中的i代表的是因特网(Internet)技术1

阅读须知

在撰写此文时,文主对读者进行以下假设:

  • 理解并赞同"代码即英文的一种表达"的观点

    • 由此文主不再对文中简单的代码进行注释或解释

  • 了解xml语言和其文件的结构

  • 第一次接触Oracle database产品

  • 了解sql语言,但不了解sqlplus语言

在这篇文章中,你将了解到:

  • 一部分在windows环境配置oracle 11g可能会遇到的问题,及解决的方案

你将不会了解到:

  • 具体的oracle 11g数据库的安装步骤

  • 具体的使用oracle 11g数据库DBCA来进行数据库创建与删除

考虑到有读者是第一次接触Oracle的产品,文中附有参考链接,其版权归原作者所有

操作环境

Windows 10 professional x64

安装篇

安装环境条件

  • 已经安装了java

  • 下载了oracle 11g的两个文件包(下载页面点这里,需要oracle账户并接受条款),并将其解压到同一个文件夹中。

    • 解压后将得到一个database文件夹,用于安装的课执行文件setup.exe就在文件夹中。

流程

请先阅读这篇文章

注意细节:

  • 启动的时候可能会遇到了INS-13001 环境不满足最低要求的错误
    原因:在Oracle 11g版本发布的时候win10操作系统还没有面世,需要修改配置信息。
    解决步骤:

    1. database文件夹中,找到stagecvucvu_prereq.xml文件

    2. 打开cvu_prereq.xml,在<CERTIFIED_SYSTEMS>标签中,添加如下信息:

          <OPERATING_SYSTEM RELEASE="6.2">
              <VERSION VALUE="3"/>
              <ARCHITECTURE VALUE="64-bit"/>
              <NAME VALUE="Windows 10"/>
              <ENV_VAR_LIST>
                  <ENV_VAR NAME="PATH" MAX_LENGTH="1023" />
              </ENV_VAR_LIST>
          </OPERATING_SYSTEM>
      
    3. 保存文件,退出。

    预期结果:重启数据库的setup.exe再次进行安装,没有了错误提示,并且可以继续执行。

  • 测试安装是否成功
    方法一:

    1. 打开命令行窗口

    2. 按照格式sqlplus user/[email protected] [as sysdba]连接数据库
      解释一下命令的含义:

      • sqlplus -> oracle 数据库使用sqlplus语言管理数据库

      • user -> 用户名,数据库默认sys使用

      • pwd -> password,在创建数据库时设置。

      • db -> database,所要连接到哪个数据库

      • [as sysdba] -> 可选项,是否使用管理员权限登陆

    方法二:
    打开https://localhost:1158/em/查看Oracle的企业管理页面,如何能看到如下界面则安装成功。
    win10环境安装与配置Oracle11g数据库,以及一些常见的sqlplus命令与问题解决方案...

配置篇

使用DBCA创建/删除数据库

参见文末指导资料

SQLPLUS 常用命令(以导入数据为例)

在遭遇并解决了多个导入报错警告和权限错误之后,成功地使用了对应用户TBSTEST将数据文件test100.dmp导入到数据库test的表空间TBS_TEST中。

知识点: oracle体系中,一个数据库实例包括后台进程/线程以及在服务器分配的共享内存区,并且通过表空间来存储物理表的,一个数据库实例可以有N个表空间,一个表空间下可以有N张表2

正确的操作步骤

  1. 以系统管理员的身份打开系统的命令行

  2. 以数据库管理员(DataBase Administrator, DBA)连接到数据库实例test中:

        d:\> sqlplus sys/[email protected] as sysdba
    
  3. 在SQL命令行中,先创建表空间TBS_TEST

        CREATE TABLESPACE TBS_TEST
        DATAFILE 'D:\database\oradata\test\TBS_TEST.dbf'  -- 指定表空间的存储位置
        SIZE 50m
        AUTOEXTEND ON;
    
  4. 在SQL命令行中,创建用户TBSTEST:

        CREATE USER TBSTEST
        IDENTIFIED BY PWD
        -- 指定默认表空间,该用户所有操作都将在这个空间中进行
        DEFAULT TABLESPACE TBS_TEST;
    
  5. 退出SQL命令行,并开始导入test100.dmp的数据:

        d:> imp TBSTEST/[email protected] file='d:\test100.dmp' full=y
    
  6. 等待导入操作执行完毕。

预期结果:命令行提示“导入操作成功终止,没有警告”。

可能遇到的错误

  • ORA-01031: insufficient privileges

    原因:若使用`sys`账户登录时遇到,可以肯定是控制单元没有给予账户足够的权限;或者说是OS没有予以`oracle DBMS`系统特殊文件的操作权限。  
    解决方案:(墙外)请查看[此视频](https://www.youtube.com/watch?v=bnVRODAflo8),给电脑的用户开放权限。  
    注意: 视频中给所有用户甚至是访客用户也增加了操作权限,造成数据安全风险,请谨慎处理。  
  • ORA-000959: tablespace 'TBS_TEST' does not exist

    正如上文提及,Oracle需要表空间存储物理表,而导入的时候没有创建表空间`TBS_TEST`而使用默认的`TMP`表空间则会出现此错误。  
    解决方法: 如上文创建对应的表空间即可。
  • ORA-12899: 列 "tablespace"."table"."attribute"的值太大(实际值:xxx, 最大值: xxx)

    原因:导入数据集的原字符集与被导入数据库的字符集不一致  
    解决方案:修改数据集原字符集或是被导入数据库的字符集,使其一致,通常修改后者。
    

如果有疏漏之处,欢迎读者补充说明。

完整指导资料

[Oracle 11gr2 软件安装和数据库创建步骤详解
](https://blogs.oracle.com/Data...


  1. Oracle 9i和Oracle 11g中的 i 和 g 分别是什么意思?
  2. Oracle - 数据库的实例、表空间、用户、表之间关系