gpt4 book ai didi

oracle - 如何使用 UTF8 作为国家字符集在 docker 中创建 Oracle 数据库?

转载 作者:行者123 更新时间:2023-12-05 07:05:32 29 4
gpt4 key购买 nike

我创建了一个 docker 容器,其中包含一个带有容器数据库和可插拔数据库的 Oracle 18 XE 实例。我想用这个可插入数据库测试的应用程序要求数据库具有国家字符集 UTF8。我不能改变这个,这只是一个要求。

(空)数据库已创建并启动并运行。然而,字符集是 AL16UTF16。我尝试了几种方法来更改容器数据库和可插拔数据库的国家字符集,但都没有成功。

描述了我遵循的程序 here .我从 github 下载的 docker 镜像,以及来自 Oracle 的 Oracle 18c Express Edition 安装程序.

我尝试将参数添加到 docker run 命令:-e ORACLE_NLS_NCHAR_CHARACTERSET=UTF8,没有成功。

在创建 docker 镜像之前,我尝试将设置 NLS_NCHAR_CHARACTERSET=UTF8 添加到配置文件 oracle-xe-18c.conf,但没有成功。

我尝试了 this site 中的说明, 没有成功。当数据库为空时,尝试更改国家字符集会导致消息 ORA-12717:当 NCLOB、NCHAR 或 NVARCHAR2 数据存在时无法发出 ALTER DATABASE NATIONAL CHARACTER SET。我使用 select owner, table_name, column_name from dba_tab_columns where (data_type = 'NCHAR' or data_type = 'NVARCHAR2' or data_type = 'NCLOB') and owner != 'SYS' 检查了受国家字符集更改影响的列和 owner != 'SYSTEM';,然后在找到的所有列上执行 select *。它们都不包含任何数据。

如何使用国家字符集 UTF8 在 docker 中创建 Oracle 数据库?

最佳答案

您的 Oracle 版本是 18 directly supports通过环境变量设置默认字符集。我没有尝试过,但我想只需调用 docker run -e ORACLE_CHARACTERSET=AL32UTF8 ... 就足够了。

我在 11g 上使用 ALTER DATABASE CHARACTER SET INTERNAL_USE ... 解决了这个问题。此命令必须在受限模式下在 db 上运行(参见 original answer ,我在 docker scripts 上的应用在注释中,它应该也适用于 Oracle 18)。

关于oracle - 如何使用 UTF8 作为国家字符集在 docker 中创建 Oracle 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62699711/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com