注册
Oracle安装使用
专栏/技术分享/ 文章详情 /

Oracle安装使用

zxw 2026/08/28 120 0 1
摘要

安装Oracle 11g

Oracle 11g-xe的安装

解压
unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip
安装
yum localinstall -y /oracle/Disk1/oracle-xe-11.2.0-1.0.x86_64.rpm
检查是否安装成功
# oracle用户和用户组
id oracle

# Oracle数据目录
ls -ld /u01/app/oracle/product/11.2.0/xe    
配置数据库
APEX HTTP 端口:8080
Oracle Listener 端口:1521
SYS 和 SYSTEM 密码:输入你新设置的强密码
再次输入密码:重复输入
是否开机自动启动:y
如果 oracle 用户存在但家目录缺失
# 创建家目录
mkdir -p /home/oracle

# 设置正确的所有者(假设组是 oinstall)
chown oracle:dba /home/oracle
chmod 755 /home/oracle

# 复制默认的 profile 文件
cp /etc/skel/.bash_profile /home/oracle/
cp /etc/skel/.bashrc /home/oracle/
cp /etc/skel/.bash_logout /home/oracle/

# 设置正确的所有者
chown oracle:dba /home/oracle/.bash*
配置oracle用户环境
# 追加环境变量到 .bash_profile
cat >> /home/oracle/.bash_profile << 'EOF'

# 第三条是把oracle家目录加入系统环境
# 第四天是把$ORACLE_HOME/lib加入到动态链接库查找路径的环境变量
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export ORACLE_SID=XE
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
EOF

# 3. 立即生效
source /home/oracle/.bash_profile

# 4. 验证
echo $ORACLE_HOME
echo $ORACLE_SID
echo $PATH

​ 发现有个问题,这个配置完环境变量后,一切到root用户再切回oracle用户,配置的环境变量就会失效,需要手动再次执行一遍source /home/oracle/.bash_profile才能使用

​ 排查.bash_profile文件,发现su - oracle登录时访问的是oracle家目录下的.bash_profile而不是/home/oracle下的.bash_profile。

# 使用长格式列出文件,当前用户家目录下的.bash_profile文件
[oracle@192 ~]$ ls -l ~/.bash_profile
ls: 无法访问 '/u01/app/oracle/.bash_profile': 没有那个文件或目录

​ 解决办法,修改 oracle 用户 HOME,从/u01/app/oracle改为标准的/home/oracle

# 修改oracle家目录
usermod -d /home/oracle oracle 

# 修改目录权限
chown oracle:dba /home/oracle
启动数据库
# root方式启动
su - root
/etc/init.d/oracle-xe start
/etc/init.d/oracle-xe status

# 以oracle用户验证
su - oracle
sqlplus / as sysdba
建用户建表
sqlplus / as sysdba

create user DMTEST identified by oracle123;
create user sinocore identified by Dameng123;

grant connect, resource to DMTEST;
grant connect, resource to sinocore;

sqlplus DMTEST/oracle123
sqlplus sinocore/Dameng123

create table T1
(
 id number,
 name varchar2(50)
);

insert into T1 values(1,'oracle');
commit;

可能会报错:ORA-12154: TNS:could not resolve the connect identifier specified

意思是Oracle 客户端无法解析你输入的连接标识符 XE,找不到XE服务。

原因是没有配置tnsnames.ora,可以通过这种方法登录

sqlplus DMTEST/oracle123@192.168.56.1:1521/XE

或者去配一下listener.ora和tnsnames.ora

vi /u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS =
        (PROTOCOL = TCP)
        (HOST = 192.168.56.1)
        (PORT = 1521)
      )
    )
  )
  

vi $ORACLE_HOME/network/admin/tnsnames.ora

XE =
  (DESCRIPTION =
    (ADDRESS =
      (PROTOCOL = TCP)
      (HOST = 192.168.5.133)
      (PORT = 1521)
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )
 
# 然后
sqlplus DMTEST/oracle123@XE
Oracle的一些概念和配置文件, listener.ora、tnsnames.ora、service name、SID(Oreacle实例名)、数据库实例之间的关系。
DM数据库
   |
   |
   | 通过OCI连接
   |
   ↓

Oracle客户端(OCI/sqlplus) 
   |
   |
   | 需要知道:
   | 我要连接哪个Oracle服务?
   |
   ↓

tnsnames.ora
(客户端连接配置)
   |
   |
   | 找到:
   | XE = 192.168.56.1:1521/XE
   |
   ↓

TCP连接

   |
   |
   ↓

Oracle Listener监听器
(listener.ora)

   |
   |
   | 根据SERVICE_NAME找到数据库
   |
   ↓

Oracle实例
(XE)

   |
   |
   ↓

Oracle数据库

tnsnames.ora把服务名和ip端口映射之后,就把TCP转交给了listnener

tnsnames.ora知道:

客户端TCP
   |
   |
XE服务

listener知道:

XE服务
   |
   |
Oracle实例(SID)XE

于是:

客户端TCP
    |
listener
    |
Oracle实例(SID) XE
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服