目录
背景
用于开发环境
oracle 11g(11.2.0)所在操作系统:ubuntu 23.04,用的是docker方式安装
plsql所在操作系统为windows10
oracle安装及设置
启动容器
#用这个国内的image
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
#启动image,ORACLE_SID不用改,作测试而已
# ORACLE_HOME是docker容器内的路径不用改,不是宿主机的路径
docker run -d -p 1521:1521 -p 8089:8080 \
--name oracle_11g \
-e ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2 \
-e ORACLE_SID=helowin \
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
配置容器
# 1. 切换至root用户(默认是oracle用户),密码为helowin
su root
# 2. 创建软链接,ORACLE_HOME就是在启动容器设置的
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
# 3.切换回oracle用户
su oracle
# 3.1 在/etc/profile中设置环境变量,否则在sqlplus中显示中文乱码
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
# 4. 登录sql plus
sqlplus /nolog
conn /as sysdba
## 4.1 修改system用户密码为system
alter user system identified by system;
## 4.2 修改sys用户密码为system
alter user sys identified by system;
## 4.3 新增一个测试用户(用户名:test,密码:test123);
create user test identified by test123;
## 4.4 将dba权限给内部管理员账号和密码
grant connect,resource,dba to test;
## 4.5 修改密码策略规则为:密码永不过期
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
## 4.6 修改数据库最大连接数;
alter system set processes=1000 scope=spfile;
## 4.7 最后重启数据库;
shutdown immediate;
startup;
# 5.退出
exit
修改字符集(可选)
SQL>conn / as sysdba
若此时数据库服务器已启动,则先执行 SHUTDOWN IMMEDIATE 命令关闭数据库服务器,
然后执行以下命令:
SQL>shutdown immediate
SQL>STARTUP MOUNT
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
# 使用INTERNAL_USE可以跳过超集的检查,但字符集变成AMERICAN_AMERICA.ZHS16GBK?
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
# !!也有人改成utf8的字符集
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE utf8
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP
sql文件导入数据
由于这个sql文件有些方言,navicat导入报错,应该是用sqlplus导出来的,用sqlpus来导入
# 将sql文件传到docker容器中
dokcer cp hfpc.sql 14:/home/oracle/
#静默登录,这具hfpc和sql文件中的保持一致
sqlplus -S hfpc/test123;
# docker容器中的全路径
@/home/oracle/hfpc.sql
涉及语句
在解决乱码过程,以表注释作为一个观测点,如果表的注释没有乱码,说明其他的如字段的内容为中文也不会乱码
---查看表的注释
select * from user_tab_comments where Table_Name='DATAELEMENT';
--添加表注释
COMMENT ON TABLE DATAELEMENT IS '学生信息表';
COMMENT ON TABLE DATAELEMENT IS 'godman';
PLSQL
安装
主要是将instantclient(适用于oracle11g)解压到plsql的安装目录,再加个NETWORK/ADMIN下的tnsnames.ora文件
安装完成,如下:
在windows上设置环境变量
必须设置环境变量,不然中文乱码
plsql上用sqlplus
在comman window下
#在command window的界面执行,必须用 @ 开头
@{windows下sql的全路径}