docker上oracle数据库乱码解决方案

oracle数据库client端字符集修改

win新建环境变量

NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

oracle数据库server端字符集修改

  1. docker进入oracle的命令行
docker exec -it XXXX bash
  1. 将数据库启动到RESTRICTED模式下做字符集更改:
alter system enable restricted session;

如果需要取消

alter system disable restricted session;

需要注意的是RESTRICTED模式以后 除了管理员都不能登录,如果需要非管理员登录,必须

GRANT restricted session to test;
  1. 用sys身份as sysdba连接并修改(注意每条语句都要以 ; 结尾)
SQL> conn sys/oracle@xe as sysdba; 
Connected.
  1. 关闭数据库
SQL> shutdown immediate; 
Database closed. 
Database dismounted. 
ORACLE instance shut down. 
  1. 启动数据库到Mount状态下
SQL> startup mount 
RACLE instance started. 
Total System Global Area  236000356 bytes 
Fixed Size                   451684 bytes 
Variable Size             201326592 bytes 
Database Buffers           33554432 bytes 
Redo Buffers                 667648 bytes 
Database mounted. 
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; 
System altered. 
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; 
System altered. 
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0; 
System altered. 
  1. 启动数据库
SQL> alter database open; 
Database altered. 
  1. 修改字符集
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK; 
Database altered. 

注:

  1. 如果数据库表中有CLOB类型的列,是不允许修改字符集的,解决方法为,先导出这个表的内容,然后删除这个表,修改完后,再导入这个表的内容就可以了。
  2. 旧的字符集必须是新的字符集的子集,否则不能修改。
  1. 修改完后,重启查看一下修改是否成功。
SQL> shutdown immediate; 
Database closed. 
Database dismounted. 
ORACLE instance shut down. 
SQL> startup 
ORACLE instance started. 
Total System Global Area  236000356 bytes 
Fixed Size                   451684 bytes 
Variable Size             201326592 bytes 
Database Buffers           33554432 bytes 
Redo Buffers                 667648 bytes 
Database mounted. 
Database opened. 
SQL> select * from v$nls_parameters; 
略 
19 rows selected. 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用Docker来部署Oracle数据库。以下是步骤和方法: 1. 首先,您需要下载Oracle数据库Docker镜像。根据引用中提到的命令,您可以使用以下命令从阿里云的镜像仓库中获取Oracle XE 11g镜像: ``` docker pull registry.cn-hangzhou.aliyuncs.com/qida/oracle-xe-11g ``` 2. 下载镜像后,您可以使用以下命令在Docker中运行Oracle数据库容器: ``` docker run -d -p 49160:22 -p 49161:1521 -e ORACLE_ALLOW_REMOTE=true --name oracle -v /dockerOracleData:/dockerOracleData registry.cn-hangzhou.aliyuncs.com/qida/oracle-xe-11g ``` 这个命令将在后台运行一个名为"oracle"的容器,并将Oracle数据库的SSH端口映射到主机的49160端口,将Oracle数据库的监听端口映射到主机的49161端口。同时,它还设置了允许远程连接的环境变量。 3. 在容器运行后,您可以使用SSH连接到容器并访问Oracle数据库的命令行。您可以使用如下命令连接到容器: ``` ssh -p 49160 root@localhost ``` 登录密码默认为"root"。 4. 连接到容器后,您可以使用Oracle数据库的命令行工具(如SQL*Plus)来管理和查询数据库。您可以使用如下命令连接到数据库: ``` sqlplus sys/oracle as sysdba ``` 这将使用sys用户登录到数据库,并要求您输入sys用户的密码。 5. 如果您需要在外部连接到Oracle数据库,您可以使用主机的IP地址和映射的端口来连接。默认情况下,容器的1521端口映射到主机的49161端口。您可以使用以下连接字符串来连接数据库: ``` hostname:port:SID ``` 其中,hostname是主机的IP地址,port是映射的端口,SID是数据库的系统标识符。默认情况下,Oracle XE 11g的SID是XE。 请注意,以上步骤和方法仅适用于Docker部署Oracle数据库。更多详细信息和其他配置选项,请参考引用中提供的链接和引用中提供的默认用户名和密码。 参考资料: xe 版Oracle默认的数据库实例是xe(数据库名),用户,密码-------sys/oracle system/oracle 下载慢的话:docker pull registry.cn-hangzhou.aliyuncs.com/qida/oracle-xe-11g docker run -d -p 49160:22 -p 49161:1521 -e ORACLE_ALLOW_REMOTE=true --name oracle -v /dockerOracleData:/dockerOracleData registry.cn-hangzhou.aliyuncs.com/qida/oracle-xe-11g https://blog.csdn.net/edutech_wang/article/details/120176447 https://www.cnblogs.com/MrXiaoAndDong/p/docker_oracle.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值