yzhj00 2019-06-20
最近在部署一个网页项目,该项目使用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
操作系统还没有面世,需要修改配置信息。
解决步骤:
在database
文件夹中,找到stagecvucvu_prereq.xml
文件
打开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>
保存文件,退出。
预期结果:重启数据库的setup.exe
再次进行安装,没有了错误提示,并且可以继续执行。
测试安装是否成功
方法一:
打开命令行窗口
按照格式sqlplus user/pwd@db [as sysdba]
连接数据库
解释一下命令的含义:
sqlplus -> oracle 数据库使用sqlplus
语言管理数据库
user -> 用户名,数据库默认sys
使用
pwd -> password,在创建数据库时设置。
db -> database,所要连接到哪个数据库
[as sysdba] -> 可选项,是否使用管理员权限登陆
方法二:
打开https://localhost:1158/em/查看Oracle的企业管理页面,如何能看到如下界面则安装成功。
参见文末指导资料
在遭遇并解决了多个导入报错警告和权限错误之后,成功地使用了对应用户TBSTEST
将数据文件test100.dmp
导入到数据库test
的表空间TBS_TEST
中。
知识点:
Oracle
体系中,一个数据库实例包括后台进程/线程以及在服务器分配的共享内存区,并且通过表空间来存储物理表的,一个数据库实例可以有N个表空间,一个表空间下可以有N张表。2
以系统管理员的身份打开系统的命令行
以数据库管理员(DataBase Administrator, DBA)连接到数据库实例test
中:
d:\> sqlplus sys/pwd@test as sysdba
在SQL命令行中,先创建表空间TBS_TEST
:
CREATE TABLESPACE TBS_TEST DATAFILE 'D:\database\oradata\test\TBS_TEST.dbf' -- 指定表空间的存储位置 SIZE 50m AUTOEXTEND ON;
在SQL命令行中,创建用户TBSTEST
:
CREATE USER TBSTEST IDENTIFIED BY PWD -- 指定默认表空间,该用户所有操作都将在这个空间中进行 DEFAULT TABLESPACE TBS_TEST;
退出SQL命令行,并开始导入test100.dmp
的数据:
d:> imp TBSTEST/PWD@test file='d:\test100.dmp' full=y
等待导入操作执行完毕。
预期结果:命令行提示“导入操作成功终止,没有警告”。
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...