环境配置 开发工具 SQL Ubuntu 安装 Oracle 11g 数据库以及 CRUD lololowe 2024-08-25 2024-09-12
以下所有操作已在 Ubuntu 20.04 和 22.04 上成功复现,对于其他 Debian 系统的适用性,请自行测试。
1. 安装Oracle 11g 1.1 获取安装包 由于Oracle 11g已不受官方维护,并且官网删除了下载链接,因此需要从第三方渠道下载。经网上检索,在stackoverflow上面找到了网友分享的安装包:
Oracle 11g R2 XE 的下载地址为:https://www.iea-software.com/ftp/emeraldv5/linux/ora/oracle-xe-11.2.0-1.0.x86_64.rpm.zip
1.2 转换rpm包为deb包 由于我个人习惯使用Ubuntu 22.04 LTS,而Oracle 11g又只支持RedHat系Linux,因此在安装前需要使用alien工具将rpm包转换为deb包。以下是相关操作的命令:
1 2 3 4 5 wget https://www.iea-software.com/ftp/emeraldv5/linux/ora/oracle-xe-11.2.0-1.0.x86_64.rpm.zip unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip cd Disk1 sudo apt install alien sudo alien --scripts -d oracle-xe-11.2.0-1.0.x86_64.rpm
转换完成后得到 oracle-xe_11.2.0-2_amd64.deb 软件包:
1.3 安装依赖及配置环境变量 安装依赖包:
1 sudo apt install -y libaio1 unixodbc
设置系统环境变量, vim 编辑 /etc/profile
文件,添加以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 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
添加 Oracle 11g 的服务, 使用 vim 编辑 /sbin/chkconfig
文件,添加以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #!/bin/bash file=/etc/init.d/oracle-xe if [[ ! `tail -n1 $file | grep INIT` ]]; then echo >> $file echo '### BEGIN INIT INFO' >> $file echo '# Provides: OracleXE' >> $file echo '# Required-Start: $remote_fs $syslog' >> $file echo '# Required-Stop: $remote_fs $syslog' >> $file echo '# Default-Start: 2 3 4 5' >> $file echo '# Default-Stop: 0 1 6' >> $file echo '# Short-Description: Oracle 11g Express Edition' >> $file echo '### END INIT INFO' >> $file fi update-rc.d oracle-xe defaults 80 01
设置权限:
1 sudo chmod 755 /sbin/chkconfig
设置内核参数以满足 Oracle 11g 的安装和运行要求:
1 2 3 4 5 6 7 8 9 sudo sh -c 'cat >> /etc/sysctl.d/60-oracle.conf << EOF # Oracle 11g XE kernel parameters fs.file-max=6815744 net.ipv4.ip_local_port_range=9000 65000 kernel.sem=250 32000 100 128 kernel.shmmax=536870912 EOF' sudo service procps start sudo sysctl -q fs.file-max
设置挂载点以提供共享内存区域, 使用vim编辑 /etc/rc2.d/S01shm_load
文件,添加以下内容:
1 2 3 4 5 6 7 8 9 10 #!/bin/sh case "$1 " in start) mkdir /var/lock/subsys 2>/dev/null touch /var/lock/subsys/listener rm /dev/shm 2>/dev/null mkdir /dev/shm 2>/dev/null mount -t tmpfs shmfs -o size=2048m /dev/shm ;; *) echo error exit 1 ;; esac
设置权限并重启系统使设置生效:
1 2 sudo chmod 755 /etc/rc2.d/S01shm_load reboot
1.4 安装 Oracle 11g 使用以下命令安装 Oracle 11g:
1 sudo apt install ./oracle-xe_11.2.0-2_amd64.deb
初始化配置 Oracle 11g:
1 sudo /etc/init.d/oracle-xe configure
如果需要修改初始化信息,依次执行: sudo systemctl stop oracle-xe
, sudo rm /etc/default/oracle-xe
, sudo /etc/init.d/oracle-xe configure
运行 Oracle 11g 并查看运行状态:
1 2 sudo systemctl start oracle-xe sudo systemctl status oracle-xe
2. 测试 Oracle 11g 2.1 连接 Oracle 11g 使用 SQL Plus 工具以 system 用户身份连接数据库:
如果提示sqlplus命令未找到,依次执行export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
,export PATH=$ORACLE_HOME/bin:$PATH
, sqlplus system
2.2 增删改查 在进行CRUD操作前,可以调整 SQL Plus 中的列格式来让输出更加整齐:
1 2 3 COLUMN id FORMAT 99999 ; COLUMN name FORMAT A20; COLUMN age FORMAT 999 ;
2.2.1 创建表
Oracle 数据库在创建表的时候,并不需要提前创建数据库。
1 2 3 4 5 6 CREATE TABLE test_table ( id NUMBER(10 ) PRIMARY KEY, name VARCHAR2(50 ), age NUMBER(3 ) ); DESC test_table;
2.2.2 插入数据 1 2 3 4 INSERT INTO test_table (id, name, age) VALUES (1 , 'tsj' , 21 ); INSERT INTO test_table (id, name, age) VALUES (2 , 'mkbk' , 3 ); INSERT INTO test_table (id, name, age) VALUES (3 , 'ygyg' , 3 ); SELECT * FROM test_table;
2.2.3 更新数据 1 2 3 UPDATE test_table SET name = 'sj' WHERE id = 1 ; UPDATE test_table SET age = 6 WHERE id = 2 ; SELECT * FROM test_table;
2.2.4 删除数据 1 2 3 DELETE FROM test_table WHERE id = 3 ; DELETE FROM test_table WHERE age < 18 ; SELECT * FROM test_table;
2.2.5 查询数据 查询所有记录:
1 2 3 4 5 INSERT INTO test_table (id, name, age) VALUES (2 , 'mkbk' , 8 );INSERT INTO test_table (id, name, age) VALUES (3 , 'ygyg' , 17 );SELECT * FROM test_table;
查询特定字段:
1 SELECT name, age FROM test_table;
使用条件过滤查询:
1 SELECT id, name FROM test_table WHERE age > 18 ;
排序查询结果:
1 2 SELECT * FROM test_table ORDER BY age DESC ; SELECT * FROM test_table ORDER BY age ASC ;
使用函数查询:
1 2 3 4 5 6 7 8 9 SELECT COUNT (* ) AS total_count FROM test_table; SELECT AVG (age) AS average_age FROM test_table; SELECT MAX (age) AS max_age FROM test_table; SELECT MIN (age) AS min_age FROM test_table; SELECT SUM (age) AS total_age FROM test_table; SELECT name, LENGTH(name) AS name_length FROM test_table; SELECT UPPER (name) AS upper_name FROM test_table; SELECT LOWER (name) AS lower_name FROM test_table; SELECT age, COUNT (* ) AS count_per_age FROM test_table GROUP BY age;
2.2.6 删除表 1 2 DROP TABLE test_table PURGE; SELECT * FROM test_table;
参考
https://stackoverflow.com/questions/60690876/how-to-download-and-install-oracle-xe-11-2-0-1-0-x86-64-rpm-zip https://blog.csdn.net/gmaaa123/article/details/138282019