oracle查看数据库字符编码,oracle 查看、批改字符集编码

本文详细介绍了如何在Oracle数据库中查看和修改字符集,包括遇到错误ORA-12712时的解决方法,通过ALTER DATABASE命令并启用受限模式进行更改。步骤包括检查数据库状态、设置SQL_TRACE、禁用相关进程、修改字符集并验证更改。最后,文章提醒了在受限模式下操作的注意事项和重启数据库的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当前位置:我的异常网» 数据库 » oracle 查看、批改字符集编码

oracle 查看、批改字符集编码

www.myexceptions.net  网友分享于:2013-07-19  浏览:3次

oracle 查看、修改字符集编码

oracle 查看、修改字符集编码

ALTER DATABASE CHARACTER SET ZHS16GBK;

出现了error

ORA-12712: new character set must be a superset of old character set

method :ALTER DATABASE character set INTERNAL_USE ZHS16GBK;

写道

SQL> conn /as sysdba

Connected.

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount

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.

SQL> ALTER SESSION SET SQL_TRACE=TRUE;//语句跟踪

System altered.

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.

SQL> alter database open;

Database altered.

SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;

ALTER DATABASE CHARACTER SET ZHS16GBK

*

ERROR at line 1:

ORA-12712: new character set must be a superset of old character set

提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:

SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;

Database altered.

SQL> select * from v$nls_parameters;

PARAMETER                                                        VALUE

---------------------------- ---------------

NLS_LANGUAGE                                                     AMERICAN

NLS_TERRITORY                                                    AMERICA

NLS_CURRENCY                                                     $

NLS_ISO_CURRENCY                                                 AMERICA

NLS_NUMERIC_CHARACTERS                                           .,

NLS_CALENDAR                                                     GREGORIAN

NLS_DATE_FORMAT                                                  DD-MON-RR

NLS_DATE_LANGUAGE                                                AMERICAN

NLS_CHARACTERSET                                                 ZHS16GBK

NLS_SORT                                                         BINARY

NLS_TIME_FORMAT                                                  HH.MI.SSXFF AM

PARAMETER                                                        VALUE

---------------------------- ---------------

NLS_TIMESTAMP_FORMAT                                             DD-MON-RR HH.MI

NLS_TIME_TZ_FORMAT                                               HH.MI.SSXFF AM

NLS_TIMESTAMP_TZ_FORMAT                                          DD-MON-RR HH.MI

NLS_DUAL_CURRENCY                                                $

NLS_NCHAR_CHARACTERSET                                           UTF8

NLS_COMP                                                         BINARY

NLS_LENGTH_SEMANTICS                                             BYTE

NLS_NCHAR_CONV_EXCP                                              FALSE

19 rows selected.

重启检查是否更改完成:

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;

PARAMETER                                                        VALUE

---------------------------- ---------------

NLS_LANGUAGE                                                     AMERICAN

NLS_TERRITORY                                                    AMERICA

NLS_CURRENCY                                                     $

NLS_ISO_CURRENCY                                                 AMERICA

NLS_NUMERIC_CHARACTERS                                           .,

NLS_CALENDAR                                                     GREGORIAN

NLS_DATE_FORMAT                                                  DD-MON-RR

NLS_DATE_LANGUAGE                                                AMERICAN

NLS_CHARACTERSET                                                 ZHS16GBK

NLS_SORT                                                         BINARY

NLS_TIME_FORMAT                                                  HH.MI.SSXFF AM

PARAMETER                                                        VALUE

---------------------------- ---------------

NLS_TIMESTAMP_FORMAT                                             DD-MON-RR HH.MI

NLS_TIME_TZ_FORMAT                                               HH.MI.SSXFF AM

NLS_TIMESTAMP_TZ_FORMAT                                          DD-MON-RR HH.MI

NLS_DUAL_CURRENCY                                                $

NLS_NCHAR_CHARACTERSET                                           UTF8

NLS_COMP                                                         BINARY

NLS_LENGTH_SEMANTICS                                             BYTE

NLS_NCHAR_CONV_EXCP                                              FALSE

19 rows selected.

其实没有那么麻烦 ,只有一下几步:

1、 将数据库至于restricted mode 否则会报下面的错误

引用

SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;

ALTER DATABASE character set INTERNAL_USE ZHS16GBK

*

ERROR at line 1:

ORA-12719: operation requires database is in RESTRICTED mode

SQL> alter system enable restricted session;

System altered.

SQL> select status,logins from v$instance;

STATUS     LOGINS

------------ ----------

OPEN     RESTRICTED

可以查看当前数据库存储什么状态

SQL> alter system disable restricted session;

System altered.

重启数据库就默认恢复为正常状态,即 allowed。

PS:

引用

RESTRICTED SESSION

The RESTRICTED SESSION clause lets you restrict logon to Oracle Database. You can

use this clause regardless of whether your instance has the database dismounted or mounted, open or closed.

Specify ENABLE to allow only users with RESTRICTED SESSION system privilege to log on to Oracle Database. Existing sessions are not terminated.This clause applies only to the current instance.Therefore, in an Oracle RAC environment, authorized users without the RESTRICTED SESSION system privilege can still access the database by way of other instances. Specify DISABLE to reverse the effect of the ENABLE RESTRICTED SESSION clause, allowing all users with CREATE SESSION system privilege to log on to Oracle Database. This is the default.

2、

SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;

出现了error

ORA-12712: new character set must be a superset of old character set

SQL> alter database character set internal_use zhs16gbk;

Database altered.

文章评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值