사일런트 모드로 스크립트 생성

사일런트 모드로 스크립트 생성

generateScripts는 데이터베이스를 생성하는 데 사용할 수 있는 스크립트를 생성하는 명령이다. 사용할 수 있는 인수는 다음과 같다.

[oracle@enp0s3 templates]$ dbca -silent -generateScripts [INS-04008] 명령행에서 부적합한 조합의 인수가 전달되었습니다. -generateScripts 인수에 대해 하나 이상의 필수 종속 인수가 전달되지 않았습니다. -generateScripts - 데이터베이스를 생성하는 데 사용할 수 있는 스크립트를 생성하는 명령입니다. -gdbName <전역 데이터베이스 이름> -templateName [-useWalletForDBCredentials 전자 지갑에서 데이터베이스 인증서를 로드하려면 true를 지정하십시오.] -dbCredentialsWalletLocation <전자 지갑 파일이 포함된 디렉토리의 경로> [-dbCredentialsWalletPassword <자동 로그인이 사용 안함으로 설정된 전자 지갑을 열기 위한 비밀번호>] [-characterSet <데이터베이스의 문자 집합>] [-dvConfiguration Database Vault를 구성하고 사용으로 설정하려면 true를 지정합니다.] -dvUserName -dvUserPassword [-dvAccountManagerPassword ] [-dvAccountManagerName <별도의 Database Vault 계정 관리자 지정>] [-scriptDest <모든 스크립트 파일에 대한 대상>] [-datafileDestination <모든 데이터베이스 파일에 대한 대상 디렉토리>] [-datafileJarLocation <데이터베이스 생성 시 데이터 파일 백업의 절대 경로 전달, 템플리트 생성 시 압축 형식으로 데이터 파일을 저장할 디렉토리 전달>] [-runCVUChecks ] [-sid <데이터베이스 시스템 식별자>] [-redoLogFileSize <각 리두 로그 파일의 크기(MB)>] [-registerWithDirService ] -dirServiceUserName <디렉토리 서비스에 대한 사용자 이름> [-databaseCN <데이터베이스 공통 이름>] [-dirServiceCertificatePath <데이터베이스와 디렉토리 서비스 간에 SSL을 구성할 때 사용할 인증서 파일의 경로>] [-dirServicePassword <디렉토리 서비스에 대한 비밀번호>] [-dirServiceUser ] [-ldapDirectoryAccessType ] [-useSYSAuthForLDAPAccess ] [-walletPassword <데이터베이스 전자 지갑에 대한 비밀번호>] [-systemPassword ] [-nodelist <콤마로 구분된 데이터베이스 노드 이름>] [-sysPassword ] [-enableArchive 아카이브를 사용으로 설정하려면 true를 지정합니다.] [-archiveLogMode ] [-archiveLogDest <콤마로 구분된 아카이브 로그 대상을 지정하십시오. 아카이브 로그 대상이 지정되지 않은 경우 아카이브 로그 파일에 빠른 복구 영역 위치가 사용됩니다.>] [-memoryMgmtType ] [-responseFile - <응답 파일의 전체 경로>] [-variables <위치 변수에 대한 콤마로 구분된 이름=값 쌍 목록>] [-listeners <데이터베이스를 구성할 때 사용할 수 있는 리스너의 콤마로 구분된 목록>] [-olsConfiguration Oracle Label Security를 구성하고 사용으로 설정하려면 true를 지정합니다.] [-configureWithOID 이 플래그는 OID와 함께 Oracle Label Security를 구성합니다.] [-createAsContainerDatabase ] [-pdbName <플러그인할 수 있는 데이터베이스 이름>] [-numberOfPDBs <생성될 플러그인할 수 있는 데이터베이스 수입니다. 기본값은 0입니다.>] [-pdbStorageMAXSizeInMB ] [-pdbStorageMAXTempSizeInMB ] [-useLocalUndoForPDBs PDB에 대한 로컬 실행 취소 테이블스페이스를 사용 안함으로 설정하려면 false를 지정합니다.] [-pdbAdminPassword ] [-pdbOptions <사용/사용 안함으로 설정할 데이터베이스 옵션과 함께 콤마로 구분된 이름:값 쌍 목록입니다. 예: JSERVER:true,DV:false>] [-recoveryAreaDestination <모든 복구 파일의 대상 디렉토리입니다. 빠른 복구 영역을 사용 안함으로 설정하려면 "NONE"을 지정하십시오.>] [-recoveryAreaSize <빠른 복구 영역 크기(MB)>] [-createListener <데이터베이스를 등록할 새 리스너를 생성하십시오. LISTENER_NAME:PORT 형식으로 지정하십시오.>] [-useOMF Oracle-Managed Files를 사용하려면 true를 지정하십시오.] [-memoryPercentage | -totalMemory] [-memoryPercentage ] [-totalMemory ] [-sampleSchema ] [-variablesFile <템플리트의 위치 변수에 대한 이름=값 쌍의 파일 이름>] [-customScripts ] [-databaseType ] [-initParams <콤마로 구분된 이름=값 쌍 목록>] [-initParamsEscapeChar <특정 initParam에 값이 여러 개인 경우 콤마에 대한 이스케이프 문자를 지정합니다. 이스케이프 문자를 지정하지 않으면 백슬래시가 기본 이스케이프 문자로 사용됩니다.>] [-policyManaged | -adminManaged] [-policyManaged <정책 관리 데이터베이스로. 기본 옵션은 관리자 관리 데이터베이스입니다.>] -serverPoolName <서버 풀 생성의 경우 단일 서버 풀 이름을 지정하고, 기존 서버 풀의 경우 콤마로 구분된 목록을 지정하십시오.> [-pqPoolName ] [-createServerPool <데이터베이스에서 사용할 새 서버 풀을 생성합니다.>] [-pqPoolName ] [-forceServerPoolCreation <사용 가능한 적절한 서버가 없는 경우 강제로 서버 풀을 생성합니다. 이로 인해 이미 실행 모드인 데이터베이스가 영향을 받을 수 있습니다.>] [-pqCardinality ] [-cardinality <생성될 새 서버 풀의 기수를 지정합니다. 기본값은 정규화 노드 수입니다.>] [-adminManaged <관리자 관리 데이터베이스로. 기본 옵션입니다.>] [-nationalCharacterSet <데이터베이스의 국가별 문자 집합>] [-storageType < FS | ASM >] -datafileDestination <모든 데이터베이스 파일에 대한 대상 디렉토리> [-asmsnmpPassword ] [-databaseConfigType ] [-RACOneNodeServiceName ] [-emConfiguration ] [-dbsnmpPassword ] [-emPassword ] [-emUser <대상을 추가하거나 수정하기 위한 EM 관리 사용자 이름>] [-emExpressPort ] [-omsHost ] [-omsPort ] [-emExpressPortAsGlobalPort ]

위 커맨드에서 -gdbName 옵션은 (새로) 생성할 SID명을 입력한다. 그리고 -templateName은 시스템에 이미 존재하는 템플릿을 (사용을 위해) 입력한다. 예시를 위해 지금 사용할 템플릿은 다음과 같이 구성했다.

false AL32UTF8 AL16UTF16 false {ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/pfile/init.ora {ORACLE_HOME}/dbs/spfile{SID}.ora 100 16 3 292 8 SYSAUX false true 0 520 true true 10240 32767 SYSTEM false true 0 900 true true 10240 32767 TEMP true true 0 32 true true 640 32767 UNDOTBS1 false true 0 335 true true 5120 32767 USERS false true 0 5 true true 1280 32767 false false false true 8192 1 -1 64 0 0 1 2147483645 64 true false 0 true false false false false true 8192 1 -1 64 0 0 1 2147483645 64 true false 0 false false true true false true 8192 2 1024 1024 1024 0 1 -1 1024 false false 0 false false false false true true 8192 1 -1 64 0 0 1 2147483645 64 true false 0 false false false false false true 8192 1 -1 64 0 0 1 2147483645 64 true false 0 true false false 204800 1 false 204800 1 false 204800 1

그 후 다음과 같은 명령으로 스크립트를 생성했는데, 이 때 /dev/shm 볼륨에 여유 공간이 없으면 자동 메모리 관리 옵션을 적용할 수 없어 스크립트 생성이 되지 않아 주의가 필요하다.

[oracle@enp0s3 templates]$ dbca -silent -generateScripts -gdbName orcl -templateName My_New_Template.dbt DB 작업 준비 4% 완료 Oracle 인스턴스 생성 및 시작 중 5% 완료 8% 완료 데이터베이스 파일 생성 중 12% 완료 데이터 딕셔너리 뷰 생성 중 13% 완료 15% 완료 17% 완료 18% 완료 20% 완료 23% 완료 Oracle JVM 29% 완료 35% 완료 40% 완료 42% 완료 Oracle Text 43% 완료 45% 완료 46% 완료 Oracle Multimedia 58% 완료 Oracle OLAP 62% 완료 Oracle Spatial 69% 완료 Oracle Label Security 77% 완료 Oracle Database Vault 85% 완료 데이터베이스 생성 완료 중 86% 완료 87% 완료 88% 완료 사후 구성 작업 실행 중 100% 완료 스크립트 "/u01/app/oracle/admin/orcl/scripts" 생성을 성공했습니다. 자세한 내용은 로그 파일 "/u01/app/oracle/cfgtoollogs/dbca/orcl/orcl4.log"을(를) 참조하십시오.

스크립트 생성 결과로 데이터베이스를 생성하는 데 필요한 스크립트와 .sql 파일이 생성되는데 목록은 다음과 같다.

[oracle@enp0s3 templates]$ ls -la /u01/app/oracle/admin/orcl/scripts 합계 68 drwxr-x---. 2 oracle oinstall 4096 11월 18 11:21 . drwxr-x---. 3 oracle oinstall 21 11월 18 11:21 .. -rw-r-----. 1 oracle oinstall 1243 11월 18 11:21 CreateDB.sql -rw-r-----. 1 oracle oinstall 824 11월 18 11:21 CreateDBCatalog.sql -rw-r-----. 1 oracle oinstall 412 11월 18 11:21 CreateDBFiles.sql -rw-r-----. 1 oracle oinstall 504 11월 18 11:21 JServer.sql -rw-r-----. 1 oracle oinstall 556 11월 18 11:21 context.sql -rw-r-----. 1 oracle oinstall 211 11월 18 11:21 cwmlite.sql -rw-r-----. 1 oracle oinstall 325 11월 18 11:21 datavault.sql -rw-r-----. 1 oracle oinstall 1799 11월 18 11:21 init.ora -rw-r-----. 1 oracle oinstall 206 11월 18 11:21 interMedia.sql -rw-r-----. 1 oracle oinstall 208 11월 18 11:21 labelSecurity.sql -rw-r-----. 1 oracle oinstall 831 11월 18 11:21 lockAccount.sql -rwxr-xr-x. 1 oracle oinstall 735 11월 18 11:21 orcl.sh -rwxr-xr-x. 1 oracle oinstall 949 11월 18 11:21 orcl.sql -rw-r-----. 1 oracle oinstall 215 11월 18 11:21 ordinst.sql -rw-r-----. 1 oracle oinstall 721 11월 18 11:21 postDBCreation.sql -rw-r-----. 1 oracle oinstall 199 11월 18 11:21 spatial.sql

아래는 그 중 orcl.sh 파일 내용이다.

#!/bin/sh OLD_UMASK=`umask` umask 0027 mkdir -p /u01/app/oracle mkdir -p /u01/app/oracle/admin/orcl/adump mkdir -p /u01/app/oracle/admin/orcl/dpdump mkdir -p /u01/app/oracle/admin/orcl/pfile mkdir -p /u01/app/oracle/audit mkdir -p /u01/app/oracle/cfgtoollogs/dbca/orcl mkdir -p /u01/app/oracle/oradata/ORCL mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1/dbs umask ${OLD_UMASK} PERL5LIB=$ORACLE_HOME/rdbms/admin:$PERL5LIB; export PERL5LIB ORACLE_SID=orcl; export ORACLE_SID PATH=$ORACLE_HOME/bin:$ORACLE_HOME/perl/bin:$PATH; export PATH echo /etc/oratab에 추가해야 할 항목: orcl:/u01/app/oracle/product/19.0.0/dbhome_1:Y /u01/app/oracle/product/19.0.0/dbhome_1/bin/sqlplus /nolog @/u01/app/oracle/admin/orcl/scripts/orcl.sql

아래는 그 중 orcl.sql 파일 내용이다.

set verify off ACCEPT sysPassword CHAR PROMPT 'Enter new password for SYS: ' HIDE ACCEPT systemPassword CHAR PROMPT 'Enter new password for SYSTEM: ' HIDE host /u01/app/oracle/product/19.0.0/dbhome_1/bin/orapwd file=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/orapworcl force=y format=12 @/u01/app/oracle/admin/orcl/scripts/CreateDB.sql @/u01/app/oracle/admin/orcl/scripts/CreateDBFiles.sql @/u01/app/oracle/admin/orcl/scripts/CreateDBCatalog.sql @/u01/app/oracle/admin/orcl/scripts/JServer.sql @/u01/app/oracle/admin/orcl/scripts/context.sql @/u01/app/oracle/admin/orcl/scripts/ordinst.sql @/u01/app/oracle/admin/orcl/scripts/interMedia.sql @/u01/app/oracle/admin/orcl/scripts/cwmlite.sql @/u01/app/oracle/admin/orcl/scripts/spatial.sql @/u01/app/oracle/admin/orcl/scripts/labelSecurity.sql @/u01/app/oracle/admin/orcl/scripts/datavault.sql @/u01/app/oracle/admin/orcl/scripts/lockAccount.sql @/u01/app/oracle/admin/orcl/scripts/postDBCreation.sql

그래서 $ ./orcl.sh라 이름 붙인 스크립트를 실행하면 필수 디렉토리를 생성하고 orcl.sql을 실행한다. 그리고 orcl.sql은 다시 CreateDB.sql을 포함한 여러 sql 스크립트를 실행하여 데이터베이스를 생성한다. 이 때 커맨드 라인에 생성과 관련된 수많은 프롬프트가 출력되고, 생성이 완료된 후 동일한 디렉토리에 각각의 sql 스크립트에 대한 로그 파일이 생성되어 출력되었던 내용을 확인할 수 있게 된다.

다음은 CreateDB.sql 파일 내용이다.

SET VERIFY OFF connect "SYS"/"&&sysPassword;" as SYSDBA set echo on spool /u01/app/oracle/admin/orcl/scripts/CreateDB.log append startup nomount pfile="/u01/app/oracle/admin/orcl/scripts/init.ora"; CREATE DATABASE "orcl" MAXINSTANCES 8 MAXLOGHISTORY 292 MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 DATAFILE '/u01/app/oracle/oradata/ORCL/system01.dbf' SIZE 900M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE 32767M EXTENT MANAGEMENT LOCAL SYSAUX DATAFILE '/u01/app/oracle/oradata/ORCL/sysaux01.dbf' SIZE 520M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE 32767M SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/u01/app/oracle/oradata/ORCL/temp01.dbf' SIZE 32M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE 32767M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1024K SMALLFILE UNDO TABLESPACE "UNDOTBS1" DATAFILE '/u01/app/oracle/oradata/ORCL/undotbs01.dbf' SIZE 335M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE 32767M CHARACTER SET AL32UTF8 NATIONAL CHARACTER SET AL16UTF16 LOGFILE GROUP 1 ('/u01/app/oracle/oradata/ORCL/redo01.log') SIZE 200M, GROUP 2 ('/u01/app/oracle/oradata/ORCL/redo02.log') SIZE 200M, GROUP 3 ('/u01/app/oracle/oradata/ORCL/redo03.log') SIZE 200M USER SYS IDENTIFIED BY "&&sysPassword;" USER SYSTEM IDENTIFIED BY "&&systemPassword;"; spool off

여기 파라미터 파일인 pfile에 대한 부분이 있는데, 해당 파일인 init.ora 내용은 다음과 같다.

############################################################################## # Copyright (c) 1991, 2013 by Oracle Corporation ############################################################################## ########################################### # NLS ########################################### nls_language="AMERICAN" nls_territory="KOREA" ########################################### # Shared Server ########################################### dispatchers="(PROTOCOL=TCP) (SERVICE=orclXDB)" ########################################### # Miscellaneous ########################################### compatible=19.0.0 diagnostic_dest=/u01/app/oracle memory_target=1207959552 ########################################### # Database Identification ########################################### db_name="orcl" ########################################### # Security and Auditing ########################################### audit_file_dest="/u01/app/oracle/admin/orcl/adump" audit_trail=DB remote_login_passwordfile=EXCLUSIVE ########################################### # System Managed Undo and Rollback Segments ########################################### undo_tablespace=UNDOTBS1 ########################################### # Cache and I/O ########################################### db_block_size=8192 ########################################### # Cursors and Library Cache ########################################### open_cursors=300 ########################################### # File Configuration ########################################### control_files=("/u01/app/oracle/oradata/ORCL/control01.ctl", "/u01/app/oracle/oradata/ORCL/control02.ctl") ########################################### # Processes and Sessions ########################################### processes=300

from http://xjhx.tistory.com/46 by ccl(A) rewrite - 2021-11-25 15:26:25