将Linux中安装了Docker,并打算使用Oracle数据库。
一开始只是直接下载镜像使用,但由于无法连接账户,重新下载了一次。
版本是oracle-12c
- 登录Docker
$ docker login -u <用户名> -p <密码>
或
$ docker login
username: [dockerid]
password: [dockerPassword]
请填写您的Docker账号和密码,有Docker账号吧?
尽管会提示密码未加密,但可以忽略。
- 拉取Oracle镜像
docker pull wvbirder/database-enterprise:12.2.0.1-slim
拉取后,通过docker images
命令确认镜像是否下载成功。
- 运行Oracle容器
docker run -dit --name local_db -p 1521:1521 wvbirder/database-enterprise:12.2.0.1-slim
运行后,请使用docker ps
命令再次确认进程是否正常启动。
- 检查Docker运行日志并等待完成
docker logs -f local_db
以下是一些日志示例:
Setup Oracle Database
Oracle Database 12.2.0.1 Setup
...
Database opened.
...
DONE!
Remove password info
Docker DB configuration is complete!
当看到日志中提示ALTER SYSTEM SET encrypt_new_tablespaces='DDL' SCOPE=BOTH;
,表示配置完成。
- 创建用户
执行以下命令进入Oracle容器:
docker exec -it local_db bash -c "source /home/oracle/.bashrc; sqlplus sys/Oradoc_db1@ORCLCDB as sysdba"
创建用户并授予权限:
SQL> alter session set "_ORACLE_SCRIPT"=true;
SQL> create user test identified by password;
SQL> grant connect, resource, dba to test;
SQL> commit;
设置字符集以适应中国时区和中文:
update sys.props$ set value$='AL32UTF8' where name='NLS_CHARACTERSET';
update sys.props$ set value$='AL32UTF8' where name='NLS_NCHAR_CHARACTERSET';
update sys.props$ set value$='AMERICAN_AMERICA.AL32UTF8' where name='NLS_LANGUAGE';
commit;
重启数据库:
shutdown immediate;
之前使用MySQL时,由于使用了sysdate
等功能,显示的都是美国时间,花了很长时间才修改成功。尽管资料很多,但修改起来总是出问题。
现在需要确认Oracle连接是否正常。
通常我使用HeidiSQL连接MySQL或MariaDB,但对于Oracle,我使用DBeaver。
点击红色按钮,会出现以下窗口:
如果是本机,Host填写localhost;如果是其他服务器,填写服务器IP。
Database可以通过以下命令查询,且在Database旁边的SID必须设置:
select name from v$database;
填写用户名和密码,然后点击左下角的“Test Connection”按钮即可。完成!
注意事项
实际测试,只改上面的字符集是不够的,还需要修改其他表,具体操作参考ORA-06552错误的解决-CSDN博客