06 使用NetCA配置 oracle监听服务
- NetCA,即Net Configuration Assistant,可以配置oracle监听服务;
- 同runInstaller一样,NetCA即支持 GUI 互动模式的配置,也支持SILENT静默模式的配置,静默模式下需要使用配置文件$oracle_home/assistants/netca/netca.rsp;
- 由于监听服务比较简单,笔者在这里使用了默认配置,未做该配置文件做任何修改;
- 可以使用以下命令安装,此时其实是非静默安装方式:./netca
以下是详细配置过程。
- 通过 netca 静默式配置监听服务:netca -silent -responseFile $ORACLE_HOME/assistants/netca/netca.rsp
- 使用命令 lsnrctl status 检查监听状态
可以对比下,没有通过 netca 配置监听服务前,lsnrctl status的输出:
07 使用 DBCA 创建 Oracle 数据库实例
- DBCA ,即Database Configuration Assistant ,可以用来创建 Oracle 数据库实例;
- DBCA 即支持 GUI 互动模式,也支持SILENT静默模式;
- 静默模式下需要更改配置文件 $oracle_home/assistants/dbca/dbca.rsp;
以下是详细创建过程。
- 配置静默安装配置文件 $oracle_home/assistants/dbca/dbca.rsp,改动前最好备份,重点修改项如下:
gdbName=ORA19C.dbaora.com sid=ORA19C createAsContainerDatabase=true numberOfPDBs=1 pdbName=PORA19C1 pdbAdminPassword=hundsun templateName=General_Purpose.dbc sysPassword=hundsun systemPassword= dbsnmpPassword=hundsun datafileDestination=/u02/oradata recoveryAreaDestination=/u02/flash_recovery_area characterSet=AL32UTF8 nationalCharacterSet=AL16UTF16 listeners=LISTENER sampleSchema=true databaseType=OLTP
- 通过dbca命令静默式创建数据库:dbca -silent -createDatabase -responseFile $ORACLE_HOME/assistants/dbca/dbca.rsp
- 安装完成的提示如下:
重点说明:
- Oracle12c 引进了multitenant database architecture, 在该多租户机制下,一个 Container Databases (CDB) 可以包含多个Pluggable Databases (PDB);
- oracle 将CDB看成一个容器,用来存放数据库,在CDB中可以有多个PDB,其中存在一个root根容器(PDB)、一个种子容器(����)、一个种子容器(���SEED)和多个PDBS;
- 可以在dbca配置文件dbca.rsp 中通过配置项 createAsContainerDatabase=true,numberOfPDBs=1,pdbName=PORA19C1 来指定创建PDB,创建的PDB的个数,及PDB的名字;(当然也可以指定不创建PDB);
- dbca 配置文件 dbca.rsp 中的配置项 sid=ORA19C 和 pdbName=PORA19C1,和上文环境变量辅助脚本 setEnv 中的配置项 ORACLE_SID=ORA19C 和 PDB_NAME=PORA19C1,是一一呼应的;
- 创建数据库实例时,也可以使用以下命令,此时其实是非静默安装方式:./dbca;
- Dbca也可以用来删除数据库,实例命令如下:dbca -silent -deleteDatabase -sourceDB cdb2 -sysDBAUserName sys -sysDBAPassword OraPasswd1
- 创建数据库实例时,也可以不更改配置文件 dbca.rsp 或只更改该配置文件中部分配置项,然后在执行dbca命令时在命令行指定配置项,实例如下;
dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname ${ORACLE_SID} -sid ${ORACLE_SID} -responseFile NO_VALUE -characterSet AL32UTF8 -sysPassword SysPassword1 -systemPassword SysPassword1 -createAsContainerDatabase true -numberOfPDBs 1 -pdbName ${PDB_NAME} -pdbAdminPassword PdbPassword1 -databaseType MULTIPURPOSE -memoryMgmtType auto_sga -totalMemory 2000 -storageType FS -datafileDestination "${DATA_DIR}" -redoLogFileSize 50 -emConfiguration NONE -ignorePreReqs
- 数据库创建完成后,使用lsnrctl status验证下监听状态:
- 数据库创建完成后,通过sqlplus尝试登录验证下:
- 上述命令 “sqlplus sys/hundsun@ORA19C as sysdba” 中使用的 ORA19C 是配置文件 dbca.rsp 中指定的 sid=ORA19C,是 oracle数据库的System identifier (SID),;
- 上述命令执行成功后,登录的是根容器 CDB$ROOT,若要切换到某个可插拔数据库 pdb,可以使用命令 alter session set container=pdbName;。
08 Oracle 数据库创建完毕后的必要设置
- 配置监听:如果使用 dbca 创建数据库时创建了可插拔数据库 pdb,则需要更改配置文件 tnsnames.ora,添加对可插拔数据库实例的监听;
- 配置完毕的 tnsname.ora 内容如下,可见添加了对可插拔数据库实例 PORA19C1的监听配置(PORA19C1是通过配置文件dbca.rsp的配置项pdbName=PORA19C1指定的):
- 配置文件 listener.ora 在使用netca配置网络监听时就配置好了,一般可以不修改,其内容如下:
- 可以使用命令 tnsping 验证对可插拔数据库pdb的监听配置是否正确:
- 配置自启动:配置可插拔数据库随容器数据库的启动而自动启动
- 在启动数据库的时候,可插拔数据库 PDB 并不会随着容器数据库 CDB的启动而自动启动
- 我们可以通过创建一个触发器让 PDB 随CDB启动
- 触发器内容如下:
CREATE OR REPLACE TRIGGER open_pdbs AFTER STARTUP ON DATABASE BEGIN EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN'; END open_pdbs;
- 配置自启动:配置数据库实例的自启动
- 当使用/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart 和 /u01/app/oracle/product/19.0.0/dbhome_1/bin/dbshut dbstart对oracle数据库进行启停管理时,某个数据库实例是否会自动启停,是通过配置文件 /etc/oratab 指定的;
- /etc/oratab 配置文件中各个配置项的格式为 ���������:ORACLE_HOME:<N|Y>,其中第一部分为数据库实例的 SID 即 system identifier,第二部分为数据库实例的 home目录,第三部分指定通过命令 dbstart启动数据库时,该数据库实例是否自动启动;
- 通过设置第三部分的 restart flag 为 'Y',即可实现该数据库实例随oracle系统启动的自启动:
4. 最后,上文还提供了封装的oracle数据库系统的启停脚本 /home/oracle/scripts/start_all.sh 和 /home/oracle/scripts/stop_all.sh,如果需要的话,还可以配置oracle数据库系统随 linux 操作系统的启动而自动启动,在此不再赘述。
09 Oracle 数据库创建完毕后的日常使用
在此总结提供下,Oracle 数据库创建完毕后的日常使用命令
登录本地ORACLE数据库: sqlplus / as sysdba 查询某容器是否是CDB: select name,cdb,open_mode,con_id from v$database; 查看当前容器数据库:show con_name; 查看所创建的容器数据库:show pdbs; 创建一个新的容器数据库PDB:create pluggable database pdb1 admin user pdb1 identified by pdb1 file_name_convert=('/u01/app/oracle/oradata/orcl/pdbseed/','/u01/app/oracle/oradata/orcl/pdb1/'); 启动一个创建好的PDB:alter pluggable database pdb1 open; 切换使用一个启动了的PDB: alter session set container=pdb1; 创建表空间:create tablespace ts01 datafile '/u02/oradata/ORA19C/PORA19C1/ts01.dbf' size 1024M; 查看表空间大小:select tablespace_name, file_id, sum(bytes)/1024/1024"(M)" from dba_data_files group by tablespace_name, file_id ORDER BY file_id; 创建 oracle 数据库的用户:create user hs_liming identified by hundsun default tablespace ts01; 为 oracle 数据库用户赋权:grant connect,resource,dba to hs_liming; 创建 oracle表:create table hs_liming.student( name varchar2(16) primary key, sex number(1), age number(3), class number(2), address varchar2(64) )tablespace ts01; 正常时候用oralce表:insert into hs_liming.student values ('michael',1,35,1,'china'); 正常时候用oralce表:SELECT * FROM hs_liming.student; 删除非空表空间(包含物理文件):drop tablespace data_space_hhh including contents and datafiles; 关闭一个创建好的PDB: alter pluggable database pdb1 close; 也可以使用传统的 startup和shutdown 命令来启动和关闭PDB: alter session set container= PORA19C1; startup; shutdown immediate; alter session set container=CDB$ROOT;