Database System Concepts

[TOC]

记录一下数据库学习相关的东西。

使用《Database System Concepts (Sixth Edition) 中文版》。

安装

由于教学使用 Oracle,为了避免各种秃头问题,我用 Docker 安装了。

使用的是 oracleinanutshell/oracle-xe-11g,只有 2G 多一点,比老师提供的 20G 虚拟机小到不知哪里去了。

docker run -d -p 49161:1521 oracleinanutshell/oracle-xe-11g 运行。

使用以下默认设定:

hostname: localhost
port: 49161
sid: xe
username: system
password: oracle

而后在 Sample Tables 处下载 SQL 文件。

docker cp SRC_PATH CONTAINER:DEST_PATH 导入进容器里,注意源文件貌似只能用绝对地址。

在 sqlplus 里用 @ /你存放的目录/×.sql; 导入数据表。

Online SQL interpreter 可以在线使用。

问题

sqlplus 上下左右键乱码

安装 rlwrap 后,运行 rlwrap sqlplus

sqlplus 长得太丑,换行问题

set wrap on #关闭(开启)自动换行
set linesize 100 #设置每行显示100字符 
set pagesize 100 #设置每页显示100行记录

修改 $ORACLE_HOME/sqlplus/admin/glogin.sql

sqlplus 自动补全(弱)

sqlplus 真的过于老旧,网上找了个带补全的版本 rlwrap_ext

这里使用的是 11 版本。

apt install curl
curl http://www.linuxification.at/download/rlwrap-extensions-V11-0.05.tar.gz -o 1.tar.gz
tar zxvf 1.tar.gz -C /usr/share/rlwrap/completions
cp /usr/share/rlwrap/completions/ /usr/local/share/rlwrap/ -r
cp /usr/local/share/rlwrap/completions/sql+  /usr/local/bin/
sql+

以后用 sql+ 代替 sqlplus 就好了。

代替 sqlplus

老师说不建议直接用命令行(观点和我一致,过于丑陋),所以找了个命令行替代品 :smile:。

okcli

因为宿主机没装 Oracle,所以一些库没有,我就在 docker 里头装了。

# 安装 pip3,并升级至最新版本
LC_ALL=C.UTF-8 pip3 install okcli
# 修改本地语言
okcli system/oracle@xe # 最好新建一个新用户
# enjoy it
文章目录