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
# 创建家目录
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*
# 追加环境变量到 .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
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
文章
阅读量
获赞
