凝思操作系统6.0.80 安装Oracle 21c
1.准备工作
1.1 所需安装包
oracle-database-ee-21c_1.0-2_amd64.deb
1.2 系统要求
1.2.1 内存要求
Oracle 21c 对内存的最低要求如下:
最小内存:2 GB
推荐内存:4 GB 及以上
1.2.2磁盘空间要求
Oracle 21c 安装的磁盘空间需求:
临时磁盘空间:安装 Oracle 21c 时需要至少 10 GB 的临时空间用于交换和安装文件。
软件安装空间:需要大约 12 GB 的空间用于 Oracle 软件安装。
数据库文件存储空间:根据数据库大小和需求,需要额外的磁盘空间来存储数据库文件。
1.3 配置软件源
vim /etc/apt/sources.list
在文件末尾中加上
deb [trusted=yes] http://mirrors.linx-info.com/mirrors/mirrors-6.0.80/base jessie main
deb-src [trusted=yes] http://mirrors.linx-info.com/mirrors/mirrors-6.0.80/base jessie main
保存后更新源
apt-get update
2.开始安装(root 用户操作)
2.1 安装所需依赖项
sudo apt-get install libaio1 libelf-dev unixodbc libc6 ksh gcc g++
2.2 创建 oracle
用户和组
sudo groupadd oinstall
sudo groupadd dba
sudo useradd -g oinstall -G dba oracle
sudo passwd oracle
2.3 准备安装目录
sudo mkdir -p /home/oracle
sudo chown -R oracle:oinstall /home/oracle
sudo chmod 755 /home/oracle
2.4 安装 软件包(切换到安装包所在的路径)
sudo dpkg -i oracle-database-ee-21c_1.0-2_amd64.deb
可能遇到的问题:
root@ikun:~/Desktop# dpkg -i oracle-database-ee-21c_1.0-2_amd64.deb
正在选中未选择的软件包 oracle-database-ee-21c。
(正在读取数据库 ... 系统当前共安装有 226123 个文件和目录。)
正准备解包 oracle-database-ee-21c_1.0-2_amd64.deb ...
ln: 无法创建符号链接"/bin/awk": 文件已存在
口令:
原因及解决方法
原因:
Oracle 尝试创建 /bin/awk 的符号链接,但该文件已经存在。
解决方法:
Ctrl+D 终止解压过程
备份原来的符号链接
sudo mv /bin/awk /bin/awk.bak
重新运行安装命令
sudo dpkg -i oracle-database-ee-21c_1.0-2_amd64.deb
口令是root用户的密码
运行成功的状态
root@localhost:~/Desktop# sudo mv /bin/awk /bin/awk.bak
root@localhost:~/Desktop# sudo dpkg -i oracle-database-ee-21c_1.0-2_amd64.deb
(正在读取数据库 ... 系统当前共安装有 225748 个文件和目录。)
正准备解包 oracle-database-ee-21c_1.0-2_amd64.deb ...
口令:
正在解包 oracle-database-ee-21c (1.0-2) ...
正在设置 oracle-database-ee-21c (1.0-2) ...
口令:
[INFO] Executing post installation scripts...
口令:
口令:
[INFO] Oracle home installed successfully and ready to be configured.
To configure a sample Oracle Database you can execute the following service configuration script as root: /etc/init.d/oracledb_ORCLCDB-21c configure
正在处理用于 systemd (215-17+deb8u7-linx8) 的触发器 ...
2.5 运行配置文件,自动进行配置
sudo /etc/init.d/oracledb_ORCLCDB-21c configure
可能遇到的问题:
root@localhost:~/Desktop# sudo /etc/init.d/oracledb_ORCLCDB-21c configure
Configuring Oracle Database ORCLCDB.
口令:
[FATAL] [DBT-50000] 无法检查可用的系统内存。
原因: 检查内核参数时出现异常错误。
*ADDITIONAL INFORMATION:*
Exception details
- PRVG-13702 : 节点 "localhost" 上的 RPM Package Manager 数据库文件已损坏。 PRVG-2043 : 命令 "/bin/rpm --quiet -qa " 在节点 "localhost" 上失败, 并生成以下输出: sh: /bin/rpm: No such file or directory
Database configuration failed.
原因:
Oracle 数据库在配置过程中依赖于 rpm 命令来检查系统的内核参数和包管理器的状态。然而,系统提示 /bin/rpm 文件不存在,可能是由于以下原因:
系统缺少 rpm 工具:凝思默认使用 dpkg,而没有安装 rpm 工具。
rpm 命令的路径错误或已被移除:Oracle 数据库安装脚本需要调用 rpm 命令,但找不到该命令。
解决方法:
1. 安装 rpm 工具
sudo apt-get install rpm
2.检查 rpm 路径
which rpm
如果命令存在于其他路径,例如 /usr/bin/rpm,你可以为其创建一个符号链接,使 Oracle 可以找到它:
sudo ln -s /usr/bin/rpm /bin/rpm
运行成功的状态
root@localhost:~/Desktop# sudo /etc/init.d/oracledb_ORCLCDB-21c configure
Configuring Oracle Database ORCLCDB.
口令:
准备执行数据库操作
已完成 8%
复制数据库文件
已完成 31%
正在创建并启动 Oracle 实例
已完成 32%
已完成 36%
已完成 40%
已完成 43%
已完成 46%
正在进行数据库创建
已完成 51%
已完成 54%
正在创建插接式数据库
已完成 58%
已完成 77%
执行配置后操作
已完成 100%
数据库创建完成。有关详细信息, 请查看以下位置的日志文件:
/opt/oracle/cfgtoollogs/dbca/ORCLCDB。
数据库信息:
全局数据库名:ORCLCDB
系统标识符 (SID):ORCLCDB
有关详细信息, 请参阅日志文件 "/opt/oracle/cfgtoollogs/dbca/ORCLCDB/ORCLCDB.log"。
Database configuration completed successfully. The passwords were auto generated, you must change them by connecting to the database using 'sqlplus / as sysdba' as the oracle user.
3.配置环境变量
root 用户
打开环境变量文件
vim ~/.bashrc
在配置文件中添加以下内容:
export ORACLE_HOME=/opt/oracle/product/21c/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export TNS_ADMIN=/opt/oracle/homes/OraDBHome21cEE/network/admin
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export ORACLE_SID=ORCLCDB
切换到oracle 用户
su oracle
打开环境变量文件
vim ~/.bashrc
在文件中添加以下内容:
export ORACLE_HOME=/opt/oracle/product/21c/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export TNS_ADMIN=/opt/oracle/homes/OraDBHome21cEE/network/admin
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export ORACLE_SID=ORCLCDB
4.管理数据库(oracle 用户)
1.进入数据库管理界面
sqlplus / as sysdba
2.查询 Oracle 多租户容器数据库(CDB)中所有可插拔数据库(PDB)的信息
SELECT name, open_mode FROM v$pdbs;
注意:
确认输出中含有 PDB 数据库
SQL> SELECT name, open_mode FROM v$pdbs;
NAME
--------------------------------------------------------------------------------
OPEN_MODE
----------
PDB$SEED
READ ONLY
ORCLPDB1
READ WRITE
3.设置数据库实例CDB打开后自动打开它管理的所有PDB数据库(对于后面设计开机自启动很重要)
ALTER PLUGGABLE DATABASE ALL SAVE STATE;
4.退出
exit;
5.设置开机自启动(root 用户)
创建 oracle-listener.service
文件
sudo vim /etc/systemd/system/oracle-listener.service
添加内容:
[Unit]
Description=Oracle Listener Service
After=network.target
[Service]
User=oracle
Group=oinstall
Type=forking
Environment="ORACLE_HOME=/opt/oracle/product/21c/dbhome_1"
Environment="ORACLE_BASE=/opt/oracle"
Environment="PATH=/opt/oracle/product/21c/dbhome_1/bin:/usr/local/bin:/usr/bin:/bin"
Environment="TNS_ADMIN=/opt/oracle/homes/OraDBHome21cEE/network/admin"
Environment="LD_LIBRARY_PATH=/opt/oracle/product/21c/dbhome_1/lib:/lib:/usr/lib"
ExecStart=/opt/oracle/product/21c/dbhome_1/bin/lsnrctl start
ExecStop=/opt/oracle/product/21c/dbhome_1/bin/lsnrctl stop
Restart=on-failure
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
创建 oracle.service
文件
sudo vim /etc/systemd/system/oracle.service
添加内容:
[Unit]
Description=Oracle Database 21c Service
After=network.target
[Service]
User=oracle
Group=oinstall
Type=forking
Environment="ORACLE_HOME=/opt/oracle/product/21c/dbhome_1"
Environment="ORACLE_SID=ORCLCDB"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$ORACLE_HOME/bin"
Environment="TNS_ADMIN=/opt/oracle/homes/OraDBHome21cEE/network/admin"
Environment="LD_LIBRARY_PATH=/opt/oracle/product/21c/dbhome_1/lib:/lib:/usr/lib"
ExecStart=/opt/oracle/product/21c/dbhome_1/bin/dbstart /opt/oracle/product/21c/dbhome_1
ExecStop=/opt/oracle/product/21c/dbhome_1/bin/dbshut /opt/oracle/product/21c/dbhome_1
Restart=on-failure
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
修改/etc/oratab
文件:
sudo vim /etc/oratab
ORCLCDB:/opt/oracle/product/21c/dbhome_1:Y
oradism
工具的权限配置
oradism
是 Oracle 用来管理系统资源的一个工具,通常在启动数据库实例时需要有适当的权限才能正确执行。
chown root:root /opt/oracle/product/21c/dbhome_1/bin/oradism
chmod 4750 /opt/oracle/product/21c/dbhome_1/bin/oradism
重新加载systemd 守护进程
注意:在进行这一步以前确保 oracle 监听服务 和 oracle 实例都是关闭状态。
否则运行自启动脚本时会产生冲突。
查看 oracle 监听服务
lsnrctl status
关闭 oracle 监听服务
lsnrctl stop
切换到oracle 用户
sqlplus / as sysdba
关闭数据库实例
SHUTDOWN;
exit;
切换到root 用户
重新加载 systemd 守护进程以识别新的服务文件:
sudo systemctl daemon-reload
启动 Oracle 数据库服务:
sudo systemctl start oracle-listener.service
sudo systemctl start oracle.service
启用 Oracle 数据库服务,使其在系统启动时自动启动:
sudo systemctl enable oracle-listener.service
sudo systemctl enable oracle.service
检查服务的状态,确保服务正确启动:
sudo systemctl status oracle-listener.service
sudo systemctl status oracle.service
成功状态:
root@localhost:~/Desktop# sudo systemctl status oracle-listener.service
● oracle-listener.service - Oracle Listener Service
Loaded: loaded (/etc/systemd/system/oracle-listener.service; enabled)
Active: active (running) since 三 2024-10-23 16:24:04 CST; 34s ago
Main PID: 10750 (tnslsnr)
CGroup: /system.slice/oracle-listener.service
└─10750 /opt/oracle/product/21c/dbhome_1/bin/tnslsnr LISTENER -inh...
root@localhost:~/Desktop# sudo systemctl status oracle.service
● oracle.service - Oracle Database 21c Service
Loaded: loaded (/etc/systemd/system/oracle.service; enabled)
Active: active (running) since 三 2024-10-23 16:24:13 CST; 31s ago
CGroup: /system.slice/oracle.service
重启测试:
测试数据库监听服务是否打开
lsnrctl status
切换到Oracle 用户
登录数据库
sqlplus / as sysdba
用于查询数据库实例名称和当前状态
SELECT INSTANCE_NAME, STATUS FROM V$INSTANCE;
查看容器数据库 (CDB) 中管理的所有可插拔数据库 (PDB) 的状态
SELECT NAME, OPEN_MODE FROM V$PDBS;
成功状态:
SQL> SELECT INSTANCE_NAME, STATUS FROM V$INSTANCE;
INSTANCE_NAME STATUS
---------------- ------------
ORCLCDB OPEN
SQL> SELECT NAME, OPEN_MODE FROM V$PDBS;
NAME
--------------------------------------------------------------------------------
OPEN_MODE
----------
PDB$SEED
READ ONLY
ORCLPDB1
READ WRITE
附录1:Oracle 数据库管理常用操作
登录数据库
sqlplus / as sysdba
查看数据库实例名称和状态
SELECT INSTANCE_NAME, STATUS FROM V$INSTANCE;
查看 CDB 管理的 PDB 状态
SELECT NAME, OPEN_MODE FROM V$PDBS;
OPEN_MODE
的值可以是:
READ WRITE
: PDB 已打开,允许读写操作。READ ONLY
: PDB 已打开,但只能进行只读操作。MOUNTED
: PDB 已挂载,但尚未打开。
打开所有 PDB
ALTER PLUGGABLE DATABASE ALL OPEN;
关闭特定 PDB
ALTER PLUGGABLE DATABASE PDB_NAME CLOSE IMMEDIATE;
关闭所有 PDB
ALTER PLUGGABLE DATABASE ALL CLOSE IMMEDIATE;
查询当前用户
SELECT USER FROM DUAL;
修改用户密码
ALTER USER username IDENTIFIED BY new_password;
附录2: 解决sqlplus / as sysdba 方向键乱码
在使用 SQL*Plus
登录 Oracle 数据库时,发现方向键(例如,使用上下箭头历史记录时)出现乱码,这是因为 SQL*Plus
作为一个非常基础的终端工具,不支持像 bash
或其他现代 shell 那样的命令行编辑功能,例如命令历史、方向键等。
解决方法:
rlwrap
是一个 Linux 工具,它为那些不支持命令历史和编辑的终端工具(如 SQL*Plus
)提供行编辑功能。
安装 rlwrap
:
sudo apt-get install rlwrap
使用 rlwrap
启动 SQL*Plus
rlwrap sqlplus / as sysdba
rlwrap
会为 SQL*Plus
提供命令行历史和命令编辑功能,就可以使用方向键进行命令导航而不会出现乱码。