【翻译自mos文章】怎么startup/shutdown PDB?

怎么startup/shutdown PDB?
来源于:
12c: How to Startup/Shutdown PDB's? (文档 ID 1592247.1)

适用于:
Oracle Database - Enterprise Edition - Version 12.1.0.1 and later
Information in this document applies to any platform.

目标:
startup/shutdown PDB的方法。

解决方案:
在12c之前,传统的startup/shutdown 命令是:
Shutdown Command
SHUTDOWN NORMAL
SHUTDOWN IMMEDIATE
SHUTDOWN ABORT

Startup Command
STARTUP
STARTUP NOMOUNT
STARTUP MOUNT

在CDB中执行SHUTDOWN IMMEDIATE 会发生什么?


如果我们在container database (CDB)级别使用传统的shutdown命令,那么我们会把CDB和其下所有的PDB全部关闭。
[oracle@rhel59 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sat Feb 13 03:45:42 2016

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

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> select instance_name from v$instance;


INSTANCE_NAME
----------------
orcl


SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> alter session set container=pn1;
alter session set container=pn1
*
ERROR at line 1:
ORA-01034: ORACLE not available
Process ID: 0
Session ID: 0 Serial number: 0

SQL> 

从上面我们能确认:在container database (CDB)级别使用SHUTDOWN IMMEDIATE命令会把CDB和其下所有的PDB全部关闭

怎么关闭个别的PDB?
[oracle@rhel59 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sat Feb 13 05:37:18 2016

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

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL>  SELECT NAME,OPEN_MODE from v$PDBS;

NAME			       OPEN_MODE
------------------------------ ----------
PDB$SEED		       READ ONLY
PN1			       READ WRITE
PN2			       MOUNTED

SQL> ALTER SESSION SET CONTAINER=pn1; ------------->>>>关键点

Session altered.

SQL>  SHUTDOWN IMMEDIATE;
Pluggable Database closed.
SQL> SELECT NAME,OPEN_MODE from v$PDBS;

NAME			       OPEN_MODE
------------------------------ ----------
PN1			       MOUNTED

SQL> 

或者:
[oracle@rhel59 ~]$ sqlplus / as sysdba


SQL*Plus: Release 12.1.0.2.0 Production on Sat Feb 13 05:40:10 2016


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




Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options


SQL> SELECT NAME,OPEN_MODE from v$PDBS;


NAME			       OPEN_MODE
------------------------------ ----------
PDB$SEED		       READ ONLY
PN1			       READ WRITE
PN2			       MOUNTED


SQL> alter pluggable database pn1 close;---->>关键点


Pluggable database altered.


SQL> SELECT NAME,OPEN_MODE from v$PDBS;


NAME			       OPEN_MODE
------------------------------ ----------
PDB$SEED		       READ ONLY
PN1			       MOUNTED
PN2			       MOUNTED


SQL> 

也可以这么写:SQL> alter pluggable database pn1 close immediate;
一旦我们执行了shutdown命令,pdb总是停留在mount状态


怎么根据需要启动某一个PDB?
有两种不同的方式来启动PDB
SQL> select con_id, name, open_mode from v$pdbs;


    CON_ID NAME 			  OPEN_MODE
---------- ------------------------------ ----------
	 2 PDB$SEED			  READ ONLY
	 3 PN1				  MOUNTED
	 4 PN2				  MOUNTED


SQL> alter pluggable database pn1 open;


Pluggable database altered.


SQL> select con_id, name, open_mode from v$pdbs;


    CON_ID NAME 			  OPEN_MODE
---------- ------------------------------ ----------
	 2 PDB$SEED			  READ ONLY
	 3 PN1				  READ WRITE
	 4 PN2				  MOUNTED


SQL> select con_id, name, open_mode,RESTRICTED from v$PDBS;


    CON_ID NAME 			  OPEN_MODE  RES
---------- ------------------------------ ---------- ---
	 2 PDB$SEED			  READ ONLY  NO
	 3 PN1				  READ WRITE NO
	 4 PN2				  MOUNTED


SQL> 



Open PDB in restricted mode
SQL> alter pluggable database PN1 open restricted;


Pluggable database altered.


SQL> SELECT NAME,OPEN_MODE,RESTRICTED from v$PDBS;


NAME                           OPEN_MODE  RES
------------------------------ ---------- ---
PN1                        READ WRITE YES

Open PDB with force option
SQL> alter pluggable database PN1 open FORCE;


Pluggable database altered.


SQL> SELECT NAME,OPEN_MODE,RESTRICTED from v$PDBS;


NAME                           OPEN_MODE  RES
------------------------------ ---------- ---
PN1                        READ WRITE NO

也可以把PDB open到upgrade模式
SQL> alter pluggable database PN1 open UPGRADE;
注意,本文也适用于rac,只需要把v$换成GV$
### 关于dmServer启动/关闭脚本定位失败的问题 在处理 `dmServer` 启动/关闭脚本定位失败的问题时,可能涉及配置文件设置不当或默认状态未正确初始化的情况。以下是对此问题的分析以及解决方案。 #### 配置文件与命令的影响 根据已知的信息,在Samba套件中提到的配置文件 `smb.conf` 是其核心配置文件[^2]。虽然此引用并未直接提及 `dmServer` 的相关内容,但它提示我们应关注服务器的配置文件及其默认行为。此外,默认状态下新窗口的行为可以通过 `defgr state` 命令调整[^1]。这表明某些服务的状态可能会受到全局默认值的影响。 对于 `dmServer` 脚本无法被正确定位的问题,可以考虑以下几个方面: 1. **路径验证** 确认 `dmServer` 的启动和关闭脚本是否存在于预期目录下。通常情况下,这些脚本会位于 `/etc/init.d/`, `/usr/local/bin/` 或其他指定的服务管理路径中。如果路径不匹配,则可能导致脚本无法找到。 2. **环境变量检查** 如果脚本依赖特定的环境变量(如 `$PATH`),则需确保它们已被正确加载。例如,可以在 shell 中运行以下命令来测试: ```bash echo $PATH which dmServer_startup_script.sh ``` 3. **权限校验** 检查脚本是否有执行权限。如果没有适当权限,即使脚本存在也可能无法正常调用。可使用以下命令修复权限: ```bash chmod +x /path/to/dmServer_startup_script.sh ``` 4. **版本兼容性** 提到的是 `1.0 family version` 版本中的问题。不同版本之间可能存在接口变化或者功能差异。建议查阅该版本的具体文档以确认是否存在已知缺陷或更新日志说明此类问题。 5. **日志排查** 查看系统日志 (`syslog`) 和应用程序自身的错误记录,寻找更详细的报错信息。通过这些线索往往能够更快锁定根本原因。 ```bash tail -f /var/log/syslog grep "dmServer" /var/log/*.log ``` #### 示例修正方法 假设问题是由于路径缺失引起,下面是一个简单的 Bash 函数用于动态查找并执行相应的脚本: ```bash find_dmserver_scripts() { local script_name="$1" for dir in "/etc/init.d/" "/usr/local/bin/" "$HOME/scripts"; do if [[ -f "${dir}/${script_name}" ]]; then echo "Found ${script_name} at: ${dir}" return 0 fi done echo "Script not found!" return 1 } # 使用函数尝试定位启动脚本 if find_dmserver_scripts "dmServer_start.sh"; then ./$(find_dmserver_scripts "dmServer_start.sh") start else echo "Startup script missing." fi ``` 以上代码片段展示了如何遍历多个潜在位置去发现目标脚本,并有条件地触发它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值