oracle 11g change charset on docker

## get docker list

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS                                            NAMES
08d434228dfe        jaspeen/oracle-xe-11g   "/entrypoint.sh "   5 weeks ago         Up 9 days           0.0.0.0:1521->1521/tcp, 0.0.0.0:9000->8080/tcp   db

## get docker list

[root@localhost ~]# docker exec -it db sqlplus

SQL*Plus: Release 11.2.0.2.0 Production on Thu Aug 6 13:15:38 2020

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter user-name: system
Enter password:

Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> SELECT name, value$ FROM sys.props$ WHERE name = 'NLS_CHARACTERSET';
SELECT name, value$ FROM sys.props$ WHERE name = 'NLS_NCHAR_CHARACTERSET';

NAME
------------------------------
VALUE$
--------------------------------------------------------------------------------
NLS_CHARACTERSET
AL32UTF8


SQL>
NAME
------------------------------
VALUE$
--------------------------------------------------------------------------------
NLS_NCHAR_CHARACTERSET
AL16UTF16



## error
SQL> UPDATE sys.props$ SET value$ = 'KO16KSC5601' WHERE name = 'NLS_CHARACTERSET';
UPDATE sys.props$ SET value$ = 'KO16KSC5601' WHERE name = 'NLS_CHARACTERSET'
           *
ERROR at line 1:
ORA-01031: insufficient privileges
## change charset
[root@localhost ~]# docker exec -it db /bin/bash
root@08d434228dfe:/# sqlplus /nolog

SQL*Plus: Release 11.2.0.2.0 Production on Thu Aug 6 13:18:15 2020

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

SQL> conn sys/oracle as sysdba
Connected.
SQL>  UPDATE sys.props$ SET value$ = 'KO16KSC5601' WHERE name = 'NLS_CHARACTERSET';

1 row updated.

SQL> UPDATE sys.props$ SET value$ = 'KO16KSC5601' WHERE name = 'NLS_NCHAR_CHARACTERSET';

1 row updated.

SQL> SELECT name, value$ FROM sys.props$ WHERE name = 'NLS_CHARACTERSET';
SELECT name, value$ FROM sys.props$ WHERE name = 'NLS_NCHAR_CHARACTERSET';

NAME
------------------------------
VALUE$
--------------------------------------------------------------------------------
NLS_CHARACTERSET
KO16KSC5601


SQL>
NAME
------------------------------
VALUE$
--------------------------------------------------------------------------------
NLS_NCHAR_CHARACTERSET
KO16KSC5601


SQL> exit
Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
[root@localhost ~]#


## add...
 SHUTDOWN IMMEDIATE;
   STARTUP MOUNT;
   ALTER SYSTEM ENABLE RESTRICTED SESSION;
   ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
   ALTER SYSTEM SET AQ_TM_PROCESSES=0;
   ALTER DATABASE OPEN;
   COL VALUE NEW_VALUE CHARSET
   SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
   COL VALUE NEW_VALUE NCHARSET
   SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';
   ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
   ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
   SHUTDOWN IMMEDIATE;
   STARTUP;
   -- yes, 2 times startup/shutdown . This is not a typo
   SHUTDOWN IMMEDIATE;
   STARTUP;

root@08d434228dfe:/# sqlplus /nolog

SQL*Plus: Release 11.2.0.2.0 Production on Fri Aug 7 02:42:23 2020

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

SQL> conn sys/oracle as sysdba
Connected.
SQL>  SHUTDOWN IMMEDIATE;
   STARTUP MOUNT;
   ALTER SYSTEM ENABLE RESTRICTED SESSION;
   ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
   ALTER SYSTEM SET AQ_TM_PROCESSES=0;
   ALTER DATABASE OPEN;
   COL VALUE NEW_VALUE CHARSET
   SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
   COL VALUE NEW_VALUE NCHARSET
   SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';
   ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
   ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
   SHUTDOWN IMMEDIATE;
   STARTUP;
   -- yes, 2 times startup/shutdown . This is not a typo
   SHUTDOWN IMMEDIATE;
   STARTUP;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> ORACLE instance started.

Total System Global Area  601272320 bytes
Fixed Size                  2228848 bytes
Variable Size             381685136 bytes
Database Buffers          213909504 bytes
Redo Buffers                3448832 bytes
Database mounted.
SQL>
System altered.

SQL>
System altered.

SQL>
System altered.

SQL>
Database altered.

SQL> SQL>
VALUE
--------------------------------------------------------------------------------
KO16KSC5601

SQL> SQL>
VALUE
--------------------------------------------------------------------------------
KO16KSC5601

SQL> old   1:    ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET
new   1:    ALTER DATABASE CHARACTER SET INTERNAL_USE KO16KSC5601

Database altered.

SQL> old   1:    ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET
new   1:    ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE KO16KSC5601
   ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE KO16KSC5601
*
ERROR at line 1:
ORA-12714: invalid national character set specified


SQL> Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> ORACLE instance started.

Total System Global Area  601272320 bytes
Fixed Size                  2228848 bytes
Variable Size             381685136 bytes
Database Buffers          213909504 bytes
Redo Buffers                3448832 bytes
Database mounted.
Database opened.
SQL> SQL> Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> ORACLE instance started.

Total System Global Area  601272320 bytes
Fixed Size                  2228848 bytes
Variable Size             381685136 bytes
Database Buffers          213909504 bytes
Redo Buffers                3448832 bytes
Database mounted.
Database opened.
SQL>





댓글

이 블로그의 인기 게시물

error You have $NVM_DIR set to "/root/.nvm", but that directory does not exist. Check your profile files and environment.

linux mint install xrdp

centos 6.x yum update problem making ssl connection