Oracle Database 11g 快捷版 (Oracle Database XE) 是一款基于 Oracle Database 11g 第 2 版代码库的小型入门级数据库,它具备以下优点:免费开发、部署和分发;下载速度快;并且管理简单。
相较于oracle database 标准版与企业版动则 2、3G的大小。XE版总共才三百多兆,它定位的是免费入门级数据库,最适合初学者进行oracle数据库的学习。
目前最新版本为Oracle Database XE 11g,前往官方下载rpm安装包
一、在Linux中增加swap空间
将下载后的oracle压缩包解压到Linux系统下(我本机放在:/alidata/tmp/oracle-xe-11.2.0-1.0.x86_64.rpm),利用root用户权限指令操作:
[root@CentOS-A tmp]# rpm -ivh ./oracle-xe-11.2.0-1.0.x86_64.rpm
会有以下报错:
This system does not meet the minimum requirements for swap space. Based on
the amount of physical memory available on the system, Oracle Database 11g
Express Edition requires 2048 MB of swap space. This system has 2042 MB
of swap space. Configure more swap space on the system and retry the
installation.
这是由于在安装Linux的时候,不知道swap空间分配多少比较好,所以会随便分配一个,而安装Oracle11g会要求很大的swap空间,所以swap空间不够用,所以需要增加swap空间大小。
以下的操作都要在root用户下进行,首先先建立一个分区,采用dd命令比如:
dd if=/dev/zero of=/alidata/data/swap bs=1024 count=3072000
这样就会创建 /alidata/data/swap 这么一个分区文件。文件的大小是3072000个block,一般情况下1个block为1K,所以这里空间是3G。接着再把这个分区变成swap分区。
/sbin/mkswap /alidata/data/swap
再接着使用这个swap分区。使其成为有效状态。
/sbin/swapon /alidata/data/swap
现在再用 free -m 命令查看一下内存和swap分区大小,就发现增加了3G的空间了。不过当计算机重启了以后,发现swap还是原来那么大,新的swap没有自动启动,还要手动启动。那我们需要修改 vim /etc/fstab 文件,增加如下一行:
/alidata/data/swap swap swap defaults 0 0
你就会发现你的机器自动启动以后swap空间也增大了。
二、创建 oracle 用户 及 用户组
(1) 创建安装oracle 所需的组和用户
groupadd oinstall groupadd dba useradd -m -g oinstall -G dba oracle
(2) 检查一下oracle 是否属于组 oinstall 和 dba (#id oracle):
[root@CentOS-A tmp]# id oracle uid=507(oracle) gid=504(oinstall) groups=504(oinstall),503(dba)
(3) 设置 oracle 用户密码
passwd oracle #输入两次密码
三、把 主机名 加入到 /etc/hosts 文件中
(1) 查看主机名,为 CentOS-A
[root@CentOS-A tmp]# vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=CentOS-A
(2) 在 /etc/hosts 文件中追加如下内容
127.0.0.1 CentOS-A
四、安装 Oracle
[root@CentOS-A tmp]# cd /alidata/tmp/ [root@CentOS-A tmp]# rpm -ivh ./oracle-xe-11.2.0-1.0.x86_64.rpm
输出:
Executing post-install steps...
You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.
按提示输入:
[root@CentOS-A tmp]# /etc/init.d/oracle-xe configure
根据提示设置 8080、1521 端口,还有 sys 和 system 的密码(我设置为:crazyjava2018 ),开机是否启动等。
最后输出:
Starting Oracle Net Listener...Done
Configuring database...Done
Starting Oracle Database 11g Express Edition instance...Done
Installation completed successfully.
说明安装成功。
五、设置环境变量
修改 /etc/profile 文件,添加如下内容:
# Oracle Settings TMP=/tmp; export TMP TMPDIR=$TMP; export TMPDIR ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/11.2.0/xe; export ORACLE_HOME ORACLE_SID=XE; export ORACLE_SID ORACLE_TERM=xterm; export ORACLE_TERM PATH=/usr/sbin:$PATH; export PATH PATH=$ORACLE_HOME/bin:$PATH; export PATH TNS_ADMIN=$ORACLE_HOME/network/admin LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
注意,以下几点:
XE版本里只能有一个instance, 我将SID修改了以后貌似会报错,所以SID就不用修改了。
BASE 和 HOME 两个变量后尽量不要加斜线 '/' ,有可能会报错,虽然不知到为什么。。。同时,TNS_ADMIN 这个变量一定要有。
修改完后使用命令 source /etc/profile 重新加载改文件。
输入 echo $ORACLE_BASE 修改是否成功。
[root@CentOS-A tmp]# echo $ORACLE_BASE /u01/app/oracle
六、初始化数据库
(1) 切换至 oracle 用户
su oracle
(2) 修改 init.ora
cd /u01/app/oracle/product/11.2.0/xe/dbs/ cp init.ora initXE.ora vim initXE.ora
将该文件修改成如下内容:
db_name='XE' memory_target=1G processes = 150 audit_file_dest='/u01/app/oracle/admin/orcl/adump' audit_trail ='db' db_block_size=8192 db_domain='' db_recovery_file_dest='/u01/app/oracle/fast_recovery_area' db_recovery_file_dest_size=2G diagnostic_dest='/u01/app/oracle' dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)' open_cursors=300 remote_login_passwordfile='EXCLUSIVE' undo_tablespace='UNDOTBS1' # You may want to ensure that control files are created on separate physical # devices control_files = ('/u01/app/oracle/oradata/', '/u01/app/oracle/oradata/') compatible ='11.2.0'
(3) 继续在 oracle 用户下,使用 sqlplus 链接数据库
sqlplus /nolog
(4) 进入sqlplus控制台
SQL> connect as sysdba
提示输入用户名密码: 使用sys/password登录,用户名:sys,密码:crazyjava2018 (安装时设置的密码)
(5) 启动并装载数据库
SQL> startup mount
(6) 11g xe版本已经内置了一个设置好的数据库 XE, 因此不许要手动创建数据库,但是需要初始化数据库结构,运行一下两行代码:
SQL> @?/rdbms/admin/catalog.sql SQL> @?/rdbms/admin/catproc.sql
等待出现提示complete之后,进行下一步。
如果运行过程中出现 database didn‘t open,则需要重新启动并装载数据库(即 执行命令:startup mount )。
(7) 接下来创建用户,初始数据库中应当已经存在users表,因此直接插入数据就可以了:
SQL> create user myaccount identified by "mypassword" default tablespace users;
授权用户:
SQL> grant dba to myaccount;
之后可以exit,然后用该 用户登录。
(8) 插表测试:
SQL> create table test_table (txt varchar2(100) not null); SQL> insert into test_table values('Hello world !');
插入数据成功后查询
SQL> select * from test_table;
如果查询成功,那么恭喜你,大功告成了!
七、oracle 的 启动 与 关闭
(1) 启动监听与数据库(注:先切换到 oracle 用户)
$ su oracle bash-4.1$ lsnrctl start
(2) 启动数据库
$ su oracle bash-4.1$ sqlplus /nolog
以sysdba登陆,并执行命令startup
SQL> conn /as sysdba Connected to an idle instance. SQL> startup
(3) 关闭数据库
SQL> shutdown immediate
(4) 退出sqlplus
SQL> exit bash-4.1$ lsnrctl stop // oracle用户下执行
八、其他 命令行 和 工具
web界面:http://127.0.0.1:8080/apex
手工 启动 和 关闭Oracle XE 的命令是
/etc/init.d/oracle-xe start # 启动 /etc/init.d/oracle-xe stop # 关闭
注:在Linux的应用程序菜单中有oracle的一些选项,可进行图形化的操作
九、开启 远程登录访问
默认只能本机访问,若开启远程访问,需要做以下处理:
(1) 查看主机名,为 CentOS-A
[root@CentOS-A tmp]# vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=CentOS-A
(2) 在 /etc/hosts 文件中
把如下先前的这条配置中的 127.0.0.1 改为 服务器的 公网IP(149.196.94.35)
127.0.0.1 CentOS-A
改为
149.196.94.35 CentOS-A
(3) 修改以下网络配置文件中的 HOST 值为 主机名(即 CentOS-A )
vim /u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora vim /u01/app/oracle/product/11.2.0/xe/network/admin/tnsnames.ora
(4) 重启一下实例
/etc/init.d/oracle-xe stop # 关闭 /etc/init.d/oracle-xe start # 启动
(5) 用oracle客户端软件 Navicat Premium,远程登录一下:
参考:
Linux下安装Oracle Database 11g Express Edition
oracle-11g-xe-installation-not-working-create-controlfile-failed
ORACLE 11g 切换到oracle账号显示bash 4.1的问题解决方案
Linux切换oracle用户报错-bash-4.1$ 解决办法