Oracle 12c数据库应用与开发
上QQ阅读APP看书,第一时间看更新

2.3 操作CDB数据库

CDB数据库的启动分为三步:启动数据库例程、装载数据库、打开数据库。这三个步骤有顺序要求。关闭数据库的过程与此相反,先关闭数据库,再卸载数据库,最后关闭数据库例程。数据库启动和关闭顺序的示意如图2-7所示。对于PDB数据库同样也遵循图2-7的启动和关闭顺序步骤。

图2-7 数据库启动与关闭顺序示意

启动CDB数据库demo的操作过程如下。

① 启动监听服务。

        $lsnrctl
        LSNRCTL>start

系统提示服务已经启动。

② 启动数据库服务,CDB数据库名为demo,对应的数据库服务名是OracleServicedemo。

        $oradim  -startup  -sid  demo

系统提示该服务已经启动。用户也可以在Windows操作系统的控制面板打开服务程序进行手工操作。

Oracle 12c安装完毕后,以上两个服务默认是自动启动,如果这两个服务已经启动,那么就不需要这两步操作。

启动数据库

在命令提示符SQL>下,DBA用户可以对Oracle 12c数据库做以下的启动。

① 启动数据库例程,不装载数据库。

            SQL>STARTUP NOMOUNT

启动例程,常用来创建数据库,创建控制文件。

② 启动数据库例程,装载数据库。

            SQL>STARTUP MOUNT

③ 打开控制文件(常用来改变日志模式,重命名文件,数据库恢复等),装载数据库强制启动数据库。

            SQL> STARTUP FORCE

执行该命令时,数据库首先强制关闭当前正在运行的数据库,然后再执行打开数据库例程、装载数据库和打开数据库操作,因此,这条命令能够直接打开数据库。

在打开了数据库例程并装载了数据库后,要打开数据库可使用命令:

            SQL>ALTER DATABASE OPEN;

例2-1:以sys身份连接数据库,密码是Oracle12c,输入以下命令连接数据库。

① 连接数据库。

            SQL>CONNECT  sys/ Oracle12c  as sysdba

系统提示“已经连接到空闲例程”。

② 装载数据库。

            SQL> STARTUP MOUNT

程序打印出Oracle数据库系统参数,这些参数包括Total System Global Area、Fixed Size、Variable Size、Database Buffers和Redo Buffers,并提示“数据库装载完毕”。

③ 打开数据库。

            SQL>ALTER DATABASE OPEN;

系统提示“数据库已更改”。

关闭CDB数据库

在sqlplus中要关闭CDB数据库,需要先关闭PDB数据库pdborcl,如果有多个PDB数据库,就应逐个关闭PDB数据库,只有PDB都关闭后才能关闭CDB。无论关闭PDB数据库还是关闭CDB数据库都必须是sys用户。

关闭CDB数据库中的PDB数据库pdborcl的语句如下。

            SQL>ALTER PLUGGABLE DATABASE pdborcl CLOSE;

关闭PDB数据库后就可以关闭CDB数据库,关闭CDB数据库有以下几种方法。

• 正常关闭。

            SQL>SHUTDOWN NORMAL

• 立即关闭。

            SQL> SHUTDOWN IMMEDIATE

该命令包括关闭数据库、卸载数据库、关闭例程。

• 中止关闭。

            SQL> SHUTDOWN ABORT

• 事务方式关闭。

            SQL> SHUTDOWN TRANSACTIONAL

这四种关闭模式与数据库活动的关系见表2-3所列。

表2-3 4种关闭模式与数据库活动的关系

CDB是Oracle 12c的基础与核心,没有CDB就不存在PDB,因此CDB是多租户(Multitenant)的基础。当Oracle 12c多租户系统启动后,每一个租户对应一个实例,每一个租户对应一个PDB, PDB的运行必须要由其插入的CDB运行为前提,如果一个多租户系统没有CDB的运行,那么该多租户中的每一个PDB都不能运行。

如果CDB中没有安装具体的应用,即CDB中没有创建具体的数据库对象(例如数据表和视图等),那么对于CDB数据库的操作主要是对其进行启动操作,只有启动了CDB数据库,才能够操作PDB数据库。

当然,CDB中也可以建立具体的应用,即用户可以在CDB数据库中创建表空间、数据表、视图等,如果在CDB中创建了具体的应用,操作CDB与操作PDB类似,但是Oracle 12c强烈推荐不要在CDB上建立具体应用,应该将具体应用建立在PDB上。

在Oracle 12c中,CDB与PDB是密不可分的,因此,CDB和PDB的启动与关闭也存在着密切的关系,由于PDB数据库是建立在CDB数据库基础上的,因此要启动、打开PDB数据库就必须先启动和打开CDB数据库;而关闭CDB数据库时,则必须先关闭所有的PDB数据库,打开和关闭CDB、PDB数据库的操作流程如图2-8所示,由于Oracle 12c规定一个CDB中最多可以包含250个PDB,因此,图中的i的最大值等于250。

图2-8 打开和关闭CDB、PDB数据库的操作流程

2.3.1 使用SQL PLUS远程连接CDB数据库

① 先打开SQL PLUS。

        $SQLPLUS / NOLOG

② 以SYS的身份连接CDB数据库demo,密码是Oracle12c, sys是Oracle 12c的超级用户,因此后面要加as sysdba选项;112.223.36.3是服务器IP地址;1521是服务器默认端口号。

        SQL> CONN conn sys/Oracle12c@112.223.36.3:1521/demo as sysdba

系统提示“已连接”。

2.3.2 使用SQL Developer远程连接CDB数据库

打开SQL developer程序,需要先配置一个连接,程序界面如图2-9所示。在该界面图中,如果用户名填写SYS,连接角色就要选择SYSDBA,主机名填写IP地址或者计算机名,SID填写CDB数据库的ID。由于是连接CDB数据库,选择【服务名(E)】选项也正确。测试成功后,点击【连接】即可。

图2-9 在SQL Developer中配置CDB连接

打开CDB数据库demo后,用户就可以操作CDB数据库下的PDB数据库,查询当前CDB数据库信息。

        SQL>SELECT name, cdb
            FROM v$database;