VARCHAR2/NVARCHAR2의 최대 길이는 4000 바이트이고, RAW는 최대 2000바이트인데, 이 제한을 확장한다. 이 설정은 오라클 데이터베이스 12c 이후부터 된다. MAX_STRING_SIZE를 STANDARD에서 EXTENDED로 변경한다. 한번 EXTENDED로 변경하면 재설치하지 않는 이상 STANDARD로 되돌릴 수 없다.
-- CDB 에서 CDB와 그 안에 있는 모든 PDB의 설정을 변경하는 방법
-- 1. 관리자 권한으로 cdb 로그인
sqlplus cdb as sysdba
-- 2. 루트에서 MAX_STRING_SIZE를 EXTENDED로 설정
ALTER SESSION SET CONTAINER=CDB$ROOT;
ALTER SYSTEM SET max_string_size=extended SCOPE=SPFILE;
-- 3. 데이터베이스 종료
shutdown immediate;
-- 4. 데이터베이스 upgrade모드로 재시작
startup upgrade;
-- 5. 모든 PDB를 마이그레이트 모드로 연 다음 데이터베이스를 종료시킨다
ALTER PLUGGABLE DATABASE ALL OPEN UPGRADE;
EXIT;
-- 6. catcon.pl 스크립트를 사용하여 rdbms/admin/utl32k.sql을 실행한다.
-- 루트와 CDB 안의 모든 PDB들의 VARCHAR2, NVARCHAR2, RAW 사이즈를 확장시키는 sql.
-- (코드는 윈도우 기준)
cd %ORACLE_HOME%/rdbms/admin
mkdir \scratch\mydir\utl32k_cdb_pdbs_output
%ORACLE_HOME%/perl/bin/perl %ORACLE_HOME%/rdbms/admin/catcon.pl -u SYS -l C:\scratch\mydir\utl32k_cdb_pdbs_output -d %ORACLE_HOME%/rdbms/admin -b utl32k_cdb_pdbs_output utl32k.sql
-- 7. 관리자 권한으로 cdb 로그인 후 데이터베이스 종료
sqlplus cdb as sysdba
shutdown immediate;
-- 8. 데이터베이스 일반 모드로 재시작
startup;
-- 9. CDB 안에 모든 PDB를 열기
ALTER PLUGGABLE DATABASE ALL OPEN READ WRITE;
-- 10. catcon.pl 스크립트를 사용하여 rdbms/admin/utlrp.sql을 실행한다.
-- 루트의 검증되지 않은 객체와 CDB 안의 모든 PDB를 다시 컴파일하는 스크립트.
-- (코드는 윈도우 기준)
cd %ORACLE_HOME%/rdbms/admin
mkdir \scratch\mydir\utlrp_cdb_pdbs_output
%ORACLE_HOME%/perl/bin/perl %ORACLE_HOME%/rdbms/admin/catcon.pl -u SYS -d %ORACLE_HOME%/rdbms/admin -l C:\scratch\mydir\utlrp_cdb_pdbs_output -b utlrp_cdb_pdbs_output utlrp.sql
-- PDB$SEED 변경
-- 1. Shut down the PDB.
shutdown immediate;
-- 2. Reopen the PDB in migrate mode.
startup mount;
alter database open migrate;
alter session set container=PDB$SEED;
-- 3. Change the setting of MAX_STRING_SIZE in the PDB to EXTENDED.
alter system set max_string_size = EXTENDED;
-- 4. Run the rdbms/admin/utl32k.sql script in the PDB. You must be connected AS SYSDBA to run the utl32k.sql script.
@?/rdbms/admin/utl32k.sql
conn / as sysdba
-- 5. Reopen the PDB in NORMAL mode.
shutdown immediate
-- 나머지 PDB 변경
startup upgrade;
select con_id, name, open_mode from v$pdbs;
alter session set container=XEPDB1;
-- 업그레이드 모드로 플러그
ALTER PLUGGABLE DATABASE XEPDB1 OPEN UPGRADE;
alter system set max_string_size = EXTENDED;
@?/rdbms/admin/utl32k.sql
conn / as sysdba;
shutdown immediate;
startup;
만약 SYSDBA만 되고, 일반 계정은 되지 않는다면 show conn_name; 명령어로 현재 계정이 CDB에 있는지 PDB에 있는지 확인한 후, tnsnames.ora를 수정하고 리스너를 재시작해 pdb로 연결시켜주어야 한다.
'프로그래밍 > 프로젝트' 카테고리의 다른 글
[Oracle 12c] 다른 사용자에게 테이블 접속 권한 부여, 취소 (0) | 2020.10.24 |
---|---|
AMD 프로세서에서 Docker Toolbox 오류 발생시 (0) | 2020.09.11 |
[데이터베이스] 바인드 변수 (Bind Variables) (0) | 2020.08.14 |