<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>imxcai</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://www.imxcai.com/</id>
  <link href="https://www.imxcai.com/" rel="alternate"/>
  <link href="https://www.imxcai.com/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, imxcai</rights>
  <subtitle>认真生活，坦然幸福</subtitle>
  <title>小菜园</title>
  <updated>2026-10-02T09:35:57.742Z</updated>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="Kubernetes" scheme="https://www.imxcai.com/category/k8s/"/>
    <category term="Kubernetes" scheme="https://www.imxcai.com/tag/kubernetes/"/>
    <content>
      <![CDATA[<p>将 Pod 约束在特定的节点上可以使用 <code>nodeSelect</code> 对节点进行标签选择。<br>但是调度器通常会合理的调度 Pod 到合适的节点，所以除了使用 <code>nodeSelect</code> 进行强制约束外，还可以使用亲和性和反亲和性以及污点和容忍度进行指派 Pod。</p><span id="more"></span><h1 id="nodeSelect"><a href="#nodeSelect" class="headerlink" title="nodeSelect"></a>nodeSelect</h1><p><code>nodeSelect</code> 依赖于节点标签，所以首先需要对节点添加上标签。</p><p>查看集群节点上所有的标签：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">[vagrant@master01 ~]$ kubectl get nodes --show-labels</span><br><span class="line">NAME                   STATUS   ROLES           AGE   VERSION   LABELS</span><br><span class="line">master01.example.com   Ready    control-plane   41d   v1<span class="number">.29</span><span class="number">.1</span>   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master01.example.com,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node.kubernetes.io/exclude-<span class="keyword">from</span>-external-load-balancers=,role=ceph</span><br><span class="line">worker01.example.com   Ready    edge            40d   v1<span class="number">.29</span><span class="number">.1</span>   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=worker01.example.com,kubernetes.io/os=linux,node-role.kubernetes.io/edge=,role=ceph</span><br><span class="line">worker02.example.com   Ready    &lt;none&gt;          40d   v1<span class="number">.29</span><span class="number">.1</span>   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=worker02.example.com,kubernetes.io/os=linux,role=ceph</span><br></pre></td></tr></table></figure><p>为特定的节点添加标签：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">[vagrant@master01 ~]$ kubectl label nodes worker01.example.com env=qa</span><br><span class="line">node/worker01.example.com labeled</span><br><span class="line">[vagrant@master01 ~]$ kubectl get nodes -l env=qa</span><br><span class="line">NAME                   STATUS   ROLES   AGE   VERSION</span><br><span class="line">worker01.example.com   Ready    edge    40d   v1<span class="number">.29</span><span class="number">.1</span></span><br></pre></td></tr></table></figure><p>移除 label：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">[vagrant@master01 ~]$ kubectl label node worker01.example.com env-</span><br><span class="line">node/worker01.example.com unlabeled</span><br><span class="line">[vagrant@master01 ~]$ kubectl get nodes -l env=qa</span><br><span class="line">No resources found</span><br></pre></td></tr></table></figure><p>将 Pod 调度到指定的标签的节点上：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">apiVersion: v1</span><br><span class="line">kind: Pod</span><br><span class="line">metadata:</span><br><span class="line">  name: nginx</span><br><span class="line">  labels:</span><br><span class="line">    env: test</span><br><span class="line">spec:</span><br><span class="line">  containers:</span><br><span class="line">  - name: nginx</span><br><span class="line">    image: nginx</span><br><span class="line">    imagePullPolicy: IfNotPresent</span><br><span class="line">  nodeSelector:</span><br><span class="line">    env: qa</span><br></pre></td></tr></table></figure><p>验证 Pod 已经调度到了 <code>worker01</code> :</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">[vagrant@master01 ~]$ kubectl get pods/nginx -o wide</span><br><span class="line">NAME    READY   STATUS    RESTARTS   AGE   IP              NODE                   NOMINATED NODE   READINESS GATES</span><br><span class="line">nginx   <span class="number">1</span>/<span class="number">1</span>     Running   <span class="number">0</span>          59s   <span class="number">10.244</span><span class="number">.95</span><span class="number">.132</span>   worker01.example.com   &lt;none&gt;           &lt;none&gt;</span><br><span class="line"></span><br><span class="line">[vagrant@master01 ~]$ kubectl get nodes -l env=qa</span><br><span class="line">NAME                   STATUS   ROLES   AGE   VERSION</span><br><span class="line">worker01.example.com   Ready    edge    40d   v1<span class="number">.29</span><span class="number">.1</span></span><br></pre></td></tr></table></figure><h1 id="亲和性和反亲和性"><a href="#亲和性和反亲和性" class="headerlink" title="亲和性和反亲和性"></a>亲和性和反亲和性</h1><p>亲和性和反亲和性分为两种：节点亲和性 Pod 之间的亲和性和反亲和性。</p><h2 id="节点亲和性"><a href="#节点亲和性" class="headerlink" title="节点亲和性"></a>节点亲和性</h2><p><code>nodeSelector</code> 只能选择拥有所指定标签的节点，可以标明规则是偏好或者软需求，在调度器无法找到匹配的节点时，仍然能够调度该 Pod（nodeSelector 就不行）。</p><p>节点亲和性有两种：</p><ul><li><code>requiredDuringSchedulingIgnoredDuringExecution</code>：调度器只有满足规则时才能执行调度。</li><li><code>preferredDuringSchedulingIgnoredDuringExecution</code>：调度器首先寻找满足规则的节点，如果找不到，调度器仍然会执行调度。</li></ul><p><code>IgnoredDuringExecution</code> 代表 Pod 调度到节点后，节点的标签发生了变化，Pod 依旧运行在该节点上。</p><p>首先为节点添加标签：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">[vagrant@master01 ~]$ kubectl label node worker02.example.com node-role.kubernetes.io/worker=</span><br><span class="line">node/worker02.example.com labeled</span><br><span class="line">[vagrant@master01 ~]$ kubectl get nodes</span><br><span class="line">NAME                   STATUS   ROLES           AGE   VERSION</span><br><span class="line">master01.example.com   Ready    control-plane   41d   v1<span class="number">.29</span><span class="number">.1</span></span><br><span class="line">worker01.example.com   Ready    edge            40d   v1<span class="number">.29</span><span class="number">.1</span></span><br><span class="line">worker02.example.com   Ready    worker          40d   v1<span class="number">.29</span><span class="number">.1</span></span><br></pre></td></tr></table></figure><p>部署 Pod，并使用亲和性约束：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line">apiVersion: v1</span><br><span class="line">kind: Pod</span><br><span class="line">metadata:</span><br><span class="line">  name: <span class="keyword">with</span>-node-affinity</span><br><span class="line">spec:</span><br><span class="line">  affinity:</span><br><span class="line">    nodeAffinity:</span><br><span class="line">      requiredDuringSchedulingIgnoredDuringExecution:</span><br><span class="line">        nodeSelectorTerms:</span><br><span class="line">        - matchExpressions:</span><br><span class="line">          - key: node-role.kubernetes.io/worker</span><br><span class="line">            operator: Exists</span><br><span class="line">      preferredDuringSchedulingIgnoredDuringExecution:</span><br><span class="line">      - weight: <span class="number">1</span></span><br><span class="line">        preference:</span><br><span class="line">          matchExpressions:</span><br><span class="line">          - key: env</span><br><span class="line">            operator: In</span><br><span class="line">            values:</span><br><span class="line">            - prod</span><br><span class="line">  containers:</span><br><span class="line">  - name: <span class="keyword">with</span>-node-affinity</span><br><span class="line">    image: registry.k8s.io/pause:<span class="number">2.0</span></span><br></pre></td></tr></table></figure><p>验证：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[vagrant@master01 ~]$ kubectl get pods -o wide | grep <span class="keyword">with</span>-node-affinity</span><br><span class="line"><span class="keyword">with</span>-node-affinity   <span class="number">1</span>/<span class="number">1</span>     Running   <span class="number">0</span>          32s   <span class="number">10.244</span><span class="number">.45</span><span class="number">.238</span>   worker02.example.com   &lt;none&gt;           &lt;none&gt;</span><br></pre></td></tr></table></figure><p>虽然 worker02 上没有 <code>env=prod</code> 标签，但还是调度在该节点上了：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">[vagrant@master01 ~]$ kubectl get nodes -l node-role.kubernetes.io/worker</span><br><span class="line">NAME                   STATUS   ROLES    AGE   VERSION</span><br><span class="line">worker02.example.com   Ready    worker   40d   v1<span class="number">.29</span><span class="number">.1</span></span><br><span class="line">[vagrant@master01 ~]$ kubectl get nodes -l env=prod</span><br><span class="line">No resources found</span><br></pre></td></tr></table></figure><p><code>operator</code> 除了使用 <code>Exists</code> 来验证是否存在的逻辑之外，还可以使用 <code>In</code> 、<code>NotIn</code> 、<code>DoesNotExist</code> 、<code>Gt</code> 和 <code>Lt</code> 之一作为逻辑操作符。<br>如果使用非 <code>Exist</code> ，需要提供 <code>values</code> 字段来提供逻辑判断的值，例如：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">preference:</span><br><span class="line">          matchExpressions:</span><br><span class="line">          - key: another-node-label-key</span><br><span class="line">            operator: In</span><br><span class="line">            values:</span><br><span class="line">            - another-node-label-value</span><br></pre></td></tr></table></figure><p>节点亲和性可以通过 <code>weight</code> 来定义权重，这个适用于多个规则进行筛选时，满足规则且权重高的节点将被调度。</p><h2 id="Pod-间亲和性和反亲和性"><a href="#Pod-间亲和性和反亲和性" class="headerlink" title="Pod 间亲和性和反亲和性"></a>Pod 间亲和性和反亲和性</h2><p>调度器在调度 Pod 时，除了有节点的亲和性，还有 Pod 间亲和性和反亲和性。</p><p>节点亲和性是基于节点的标签，Pod 间的亲和性和反亲和性是基于当前运行在节点上的 Pod 的标签。</p><p>Pod 的亲和性和反亲和性也有两种类型：</p><ul><li><code>requiredDuringSchedulingIgnoredDuringExecution</code></li><li><code>preferredDuringSchedulingIgnoredDuringExecution</code></li></ul><p>在 Pod 亲和性中可以使用 <code>requiredDuringSchedulingIgnoredDuringExecution</code> 来约束两个服务的 Pod 应该放到同一位置，可能是因为它们通信非常频繁。<br>在 Pod 反亲和性中可以使用 <code>preferredDuringSchedulingIgnoredDuringExecution</code> 来阻止同一个服务的 Pod 放置在同一个位置，避免出现单点故障。</p><p>Pod 间亲和性和反亲和性的规则格式为：如果 X 上已经运行了一个或多个满足规则 Y 的 Pod，则这个 Pod 应该运行在 X 上（反亲和性的话就是不应该）。<br>X 可以是节点、机架、云提供商可用区等类似的拓扑愈，Y 是 Kubernetes 尝试满足的规则。</p><p>Pod 亲和性使用 <code>.affinity.podAffinity</code> 字段，Pod 反亲和性使用 <code>.affinity.podAntiAffinity</code> 字段。</p><p>参考示例：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line">apiVersion: v1</span><br><span class="line">kind: Pod</span><br><span class="line">metadata:</span><br><span class="line">  name: <span class="keyword">with</span>-pod-affinity</span><br><span class="line">spec:</span><br><span class="line">  affinity:</span><br><span class="line">    podAffinity:</span><br><span class="line">      requiredDuringSchedulingIgnoredDuringExecution:</span><br><span class="line">      - labelSelector:</span><br><span class="line">          matchExpressions:</span><br><span class="line">          - key: security</span><br><span class="line">            operator: In</span><br><span class="line">            values:</span><br><span class="line">            - S1</span><br><span class="line">        topologyKey: topology.kubernetes.io/zone</span><br><span class="line">    podAntiAffinity:</span><br><span class="line">      preferredDuringSchedulingIgnoredDuringExecution:</span><br><span class="line">      - weight: <span class="number">100</span></span><br><span class="line">        podAffinityTerm:</span><br><span class="line">          labelSelector:</span><br><span class="line">            matchExpressions:</span><br><span class="line">            - key: security</span><br><span class="line">              operator: In</span><br><span class="line">              values:</span><br><span class="line">              - S2</span><br><span class="line">          topologyKey: topology.kubernetes.io/zone</span><br><span class="line">  containers:</span><br><span class="line">  - name: <span class="keyword">with</span>-pod-affinity</span><br><span class="line">    image: registry.k8s.io/pause:<span class="number">2.0</span></span><br></pre></td></tr></table></figure><p>上述例子中，调度器首先会找到有 <code>zone</code> 标签的节点，因为没有指定 <code>zone</code> 的值，所以只判断是否存在该标签，如果该节点上运行了一个带有 <code>security=S1</code> 的标签的 Pod，则会调度到该节点，如果该节点上运行了一个带有 <code>security=s2</code> 的标签，则不会调度到该节点。</p><p>测试一下，首先需要在 node 上打上标签：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">[vagrant@master01 ~]$ kubectl label node worker01.example.com zone=cn-<span class="number">1</span></span><br><span class="line">node/worker01.example.com labeled</span><br><span class="line">[vagrant@master01 ~]$ kubectl label node worker02.example.com zone=cn-<span class="number">2</span></span><br><span class="line">node/worker02.example.com labeled</span><br><span class="line">[vagrant@master01 ~]$ kubectl get nodes -l zone</span><br><span class="line">NAME                   STATUS   ROLES    AGE   VERSION</span><br><span class="line">worker01.example.com   Ready    edge     41d   v1<span class="number">.29</span><span class="number">.1</span></span><br><span class="line">worker02.example.com   Ready    worker   41d   v1<span class="number">.29</span><span class="number">.1</span></span><br></pre></td></tr></table></figure><p>接下来运行一个带有 <code>security=S1</code> 标签的 Pod：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">apiVersion: v1</span><br><span class="line">kind: Pod</span><br><span class="line">metadata:</span><br><span class="line">  name: nginxsecuritys1</span><br><span class="line">  labels:</span><br><span class="line">    security: S1</span><br><span class="line">spec:</span><br><span class="line">  containers:</span><br><span class="line">  - name: nginx</span><br><span class="line">    image: nginx</span><br><span class="line">    imagePullPolicy: IfNotPresent</span><br></pre></td></tr></table></figure><p>检查调度到的节点：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[vagrant@master01 ~]$ kubectl get pod -o wide | grep nginxsecuritys1</span><br><span class="line">nginxsecuritys1      <span class="number">1</span>/<span class="number">1</span>     Running   <span class="number">0</span>          22s   <span class="number">10.244</span><span class="number">.45</span><span class="number">.215</span>   worker02.example.com   &lt;none&gt;           &lt;none&gt;</span><br></pre></td></tr></table></figure><p>使用 Pod 亲和性将第二个 Pod 调度到跟 <code>nginxsecuritys1</code> 相同的节点上：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line">apiVersion: v1</span><br><span class="line">kind: Pod</span><br><span class="line">metadata:</span><br><span class="line">  name: nginxsecuritys2</span><br><span class="line">spec:</span><br><span class="line">  affinity:</span><br><span class="line">    podAffinity:</span><br><span class="line">      requiredDuringSchedulingIgnoredDuringExecution:</span><br><span class="line">        - labelSelector:</span><br><span class="line">            matchExpressions:</span><br><span class="line">              - key: security</span><br><span class="line">                operator: In</span><br><span class="line">                values:</span><br><span class="line">                  - S1</span><br><span class="line">          topologyKey: zone</span><br><span class="line">  containers:</span><br><span class="line">  - name: nginx</span><br><span class="line">    image: nginx</span><br><span class="line">    imagePullPolicy: IfNotPresent</span><br></pre></td></tr></table></figure><p>验证：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">[vagrant@master01 ~]$ kubectl get pods -o wide | grep security</span><br><span class="line">nginxsecuritys1      <span class="number">1</span>/<span class="number">1</span>     Running   <span class="number">0</span>          37m     <span class="number">10.244</span><span class="number">.45</span><span class="number">.215</span>   worker02.example.com   &lt;none&gt;           &lt;none&gt;</span><br><span class="line">nginxsecuritys2      <span class="number">1</span>/<span class="number">1</span>     Running   <span class="number">0</span>          10m     <span class="number">10.244</span><span class="number">.45</span><span class="number">.219</span>   worker02.example.com   &lt;none&gt;           &lt;none&gt;</span><br></pre></td></tr></table></figure><p>定义 Pod 反亲和性规则：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line">apiVersion: v1</span><br><span class="line">kind: Pod</span><br><span class="line">metadata:</span><br><span class="line">  name: nginxsecuritys3</span><br><span class="line">spec:</span><br><span class="line">  affinity:</span><br><span class="line">    podAntiAffinity:</span><br><span class="line">      preferredDuringSchedulingIgnoredDuringExecution:</span><br><span class="line">        - weight: <span class="number">100</span></span><br><span class="line">          podAffinityTerm:</span><br><span class="line">            labelSelector:</span><br><span class="line">              matchExpressions:</span><br><span class="line">                - key: security</span><br><span class="line">                  operator: In</span><br><span class="line">                  values:</span><br><span class="line">                    - S1</span><br><span class="line">            topologyKey: zone</span><br><span class="line">  containers:</span><br><span class="line">  - name: nginx</span><br><span class="line">    image: nginx</span><br><span class="line">    imagePullPolicy: IfNotPresent</span><br></pre></td></tr></table></figure><p>验证：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">[vagrant@master01 ~]$ kubectl get pods -o wide | grep security</span><br><span class="line">nginxsecuritys1      <span class="number">1</span>/<span class="number">1</span>     Running   <span class="number">0</span>          37m     <span class="number">10.244</span><span class="number">.45</span><span class="number">.215</span>   worker02.example.com   &lt;none&gt;           &lt;none&gt;</span><br><span class="line">nginxsecuritys2      <span class="number">1</span>/<span class="number">1</span>     Running   <span class="number">0</span>          10m     <span class="number">10.244</span><span class="number">.45</span><span class="number">.219</span>   worker02.example.com   &lt;none&gt;           &lt;none&gt;</span><br><span class="line">nginxsecuritys3      <span class="number">1</span>/<span class="number">1</span>     Running   <span class="number">0</span>          3m41s   <span class="number">10.244</span><span class="number">.95</span><span class="number">.133</span>   worker01.example.com   &lt;none&gt;           &lt;none&gt;</span><br></pre></td></tr></table></figure><h1 id="nodeName"><a href="#nodeName" class="headerlink" title="nodeName"></a>nodeName</h1><p>使用 <code>nodeName</code> 优先级将高于 <code>nodeSelector</code> 和亲和性规则。<br>示例：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">apiVersion: v1</span><br><span class="line">kind: Pod</span><br><span class="line">metadata:</span><br><span class="line">  name: nginxnodenameonworker1</span><br><span class="line">spec:</span><br><span class="line">  nodeName: worker01.example.com</span><br><span class="line">  containers:</span><br><span class="line">  - name: nginx</span><br><span class="line">    image: nginx</span><br><span class="line">    imagePullPolicy: IfNotPresent</span><br></pre></td></tr></table></figure><p>验证：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">[vagrant@master01 ~]$ kubectl get pod/nginxnodenameonworker1 -o wide</span><br><span class="line">NAME                     READY   STATUS    RESTARTS   AGE   IP              NODE                   NOMINATED NODE   READINESS GATES</span><br><span class="line">nginxnodenameonworker1   <span class="number">1</span>/<span class="number">1</span>     Running   <span class="number">0</span>          12s   <span class="number">10.244</span><span class="number">.95</span><span class="number">.156</span>   worker01.example.com   &lt;none&gt;           &lt;none&gt;</span><br></pre></td></tr></table></figure><h1 id="污点和容忍度"><a href="#污点和容忍度" class="headerlink" title="污点和容忍度"></a>污点和容忍度</h1><p>节点亲和性使 Pod 被吸引到一类特定的节点。污点(Taint) 相反，污点应用于节点上使节点排斥一类特定的 Pod 。</p><p>容忍度（Toleration）是应用于 Pod 上的。容忍度允许调度器调度带有对应污点的 Pod。容忍度允许调度但不保证调度。</p><p>污点和容忍度的相互配合可以避免 Pod 被分配到不合适的节点上。<br>每个节点上可以应用多个污点，不能容忍这些污点的 Pod 是不会调度到该节点上。</p><p>使用 <code>kubectl taint</code> 给节点添加一个污点：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">kubectl taint nodes worker01 key1=value1:NoSchedule</span><br></pre></td></tr></table></figure><p>删除污点：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">kubectl taint nodes worker01 key1=value1:NoSchedule-</span><br></pre></td></tr></table></figure><p>上述的 <code>NoSchedule</code> 对应的是效果，表示只拥有和这个污点想匹配的容忍度的 Pod 才能后被调度到该节点。除此之外 effect 有以下类型：</p><ul><li><code>NoExecute</code>：会影响已在节点上运行的 Pod，如果 Pod 不能容忍这类污点，会马上驱逐。</li><li><code>NoSchedule</code>：需要具有匹配的容忍度 Pod 才会被调度，当前正在节点上运行的 Pod 不会被驱逐。</li><li><code>PreferNoSchedule</code>：软性的 <code>NoSchedule</code>，尝试避免将不能容忍的 Pod 调度到节点上，但不保证完全避免。 在 Pod 上使用容忍度的例子：</li></ul><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">apiVersion: v1</span><br><span class="line">kind: Pod</span><br><span class="line">metadata:</span><br><span class="line">  name: nginx</span><br><span class="line">  labels:</span><br><span class="line">    env: test</span><br><span class="line">spec:</span><br><span class="line">  containers:</span><br><span class="line">  - name: nginx</span><br><span class="line">    image: nginx</span><br><span class="line">    imagePullPolicy: IfNotPresent</span><br><span class="line">  tolerations:</span><br><span class="line">  - key: <span class="string">&quot;example-key&quot;</span></span><br><span class="line">    operator: <span class="string">&quot;Exists&quot;</span></span><br><span class="line">    effect: <span class="string">&quot;NoSchedule&quot;</span></span><br></pre></td></tr></table></figure><p>Pod 容忍度也有 <code>operator</code> 参数：</p><ul><li>Equal：如果键、值和效果参数匹配，则容忍度和污点匹配，这是默认的行为</li><li>Exists：如果键和效果参数匹配，则容忍度和污点匹配，必须将值参数留空</li></ul>]]>
    </content>
    <id>https://www.imxcai.com/k8s/scheduler_pod_to_special_node.html</id>
    <link href="https://www.imxcai.com/k8s/scheduler_pod_to_special_node.html"/>
    <published>2025-06-11T08:20:32.000Z</published>
    <summary>nodeSelector，亲和性和反亲和性，污点容忍度</summary>
    <title>Pod 指派运行的节点</title>
    <updated>2026-10-02T09:35:57.742Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="读书" scheme="https://www.imxcai.com/category/reading/"/>
    <category term="Book" scheme="https://www.imxcai.com/tag/book/"/>
    <content>
      <![CDATA[<blockquote><p>人为什么会常常感到不幸福？表面看是因为我们的身体总受到束缚，精神也不能自主，我们受到了客观条件的种种限制。实际上，我们之所以受到客观条件的限制，是因为我们和外物产生了对立。我们所以和外物产生对立，是因为我们总是以自己的标准来衡量外物，于是，就有了是非好恶之情。当我们对外物有了是非好恶之情，就是给外物贴上是非善恶的标签。一旦你给它们贴上标签，它们就有了生命，反过来干扰你。也就是说，我们被客观条件所限制，全是我们自己搞出来的。</p></blockquote><span id="more"></span><p><img src="https://img2.doubanio.com/view/subject/l/public/s27311101.jpg"></p><p>没想到自己的家乡与王阳明的联系这么密切，读完这本书才对王阳明有了初步的了解。</p>]]>
    </content>
    <id>https://www.imxcai.com/reading/%E7%9F%A5%E8%A1%8C%E5%90%88%E4%B8%80%E7%8E%8B%E9%98%B3%E6%98%8E.html</id>
    <link href="https://www.imxcai.com/reading/%E7%9F%A5%E8%A1%8C%E5%90%88%E4%B8%80%E7%8E%8B%E9%98%B3%E6%98%8E.html"/>
    <published>2025-05-19T01:52:59.000Z</published>
    <summary>知是行之始，行是知之成</summary>
    <title>知行合一王阳明</title>
    <updated>2025-05-19T01:53:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="Linux" scheme="https://www.imxcai.com/category/linux/"/>
    <content>
      <![CDATA[<p>当前使用的系统版本为 Fedora41 Sway，Fcitx5 的版本为 5.1.12，Obsidian 版本为 1.8.9<br>解决办法，在启动命令中添加<code>--enable-wayland-ime --wayland-text-input-version=3</code><br>可以运行以下命令进行测试：  </p><span id="more"></span><p><code>flatpak run md.obsidian.Obsidian --enable-wayland-ime --wayland-text-input-version=3   </code><br>如果可以正常切换出并能输入中文，则可以编写.desktop文件进行持久设置：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">[Desktop Entry]</span><br><span class="line">Name=Obsidian</span><br><span class="line">Exec=/usr/<span class="built_in">bin</span>/flatpak run --branch=stable --arch=x86_64 --command=obsidian.sh --file-forwarding md.obsidian.Obsidian @@u %U @@ --enable-wayland-ime --wayland-text-<span class="built_in">input</span>-version=<span class="number">3</span></span><br><span class="line">Terminal=false</span><br><span class="line"><span class="type">Type</span>=Application</span><br><span class="line">Icon=md.obsidian.Obsidian</span><br><span class="line">StartupWMClass=obsidian</span><br><span class="line">Comment=Obsidian</span><br><span class="line">MimeType=x-scheme-handler/obsidian;</span><br><span class="line">Categories=Office;</span><br><span class="line">X-Flatpak-Tags=proprietary;</span><br><span class="line">X-Flatpak=md.obsidian.Obsidian</span><br></pre></td></tr></table></figure><p><img src="https://image.imxcai.com/wp-content/uploads/2025/04/2025-04-13T2107326818360100800.png"></p><p>如果要对 google-chrome 启用 Wayland 并使 Fcitx5 生效可以使用一下启动命令：</p><p><code>google-chrome --enable-features=TouchpadOverscrollHistoryNavigation,WaylandWindowDecorations --enable-wayland-ime --ozone-platform=wayland --wayland-per-window-scaling --wayland-text-input-version=3</code></p>]]>
    </content>
    <id>https://www.imxcai.com/linux/flatpak-obsidian-%E5%9C%A8-wayland-%E7%8E%AF%E5%A2%83%E4%B8%8B%E4%BD%BF%E7%94%A8-fcitx5-%E8%BF%9B%E8%A1%8C%E4%B8%AD%E6%96%87%E8%BE%93%E5%85%A5.html</id>
    <link href="https://www.imxcai.com/linux/flatpak-obsidian-%E5%9C%A8-wayland-%E7%8E%AF%E5%A2%83%E4%B8%8B%E4%BD%BF%E7%94%A8-fcitx5-%E8%BF%9B%E8%A1%8C%E4%B8%AD%E6%96%87%E8%BE%93%E5%85%A5.html"/>
    <published>2025-04-13T13:26:28.000Z</published>
    <summary>Obsidian 在 Wayland 下使用 Fcitx5</summary>
    <title>Flatpak Obsidian 在 Wayland 环境下使用 fcitx5 进行中文输入</title>
    <updated>2025-04-14T15:47:26.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="读书" scheme="https://www.imxcai.com/category/reading/"/>
    <content>
      <![CDATA[<p><img src="https://image.imxcai.com/wp-content/uploads/2025/04/image.png"></p><p>我个人觉得开篇的《无处收留：吴三桂》和《意志力的化身：曾国藩》这两篇不错，尤其是第一篇给了一个不同的视角来看待这些历史人物，书的前后写了太多个人相关的内容，看到最后直接略过了。</p>]]>
    </content>
    <id>https://www.imxcai.com/reading/%E5%8D%83%E5%B9%B4%E6%82%96%E8%AE%BA-%E4%BA%BA%E6%80%A7%E7%9A%84%E5%8E%86%E5%8F%B2%E5%AE%9E%E9%AA%8C%E7%BA%AA%E5%BE%8B.html</id>
    <link href="https://www.imxcai.com/reading/%E5%8D%83%E5%B9%B4%E6%82%96%E8%AE%BA-%E4%BA%BA%E6%80%A7%E7%9A%84%E5%8E%86%E5%8F%B2%E5%AE%9E%E9%AA%8C%E7%BA%AA%E5%BE%8B.html"/>
    <published>2025-04-04T06:26:42.000Z</published>
    <summary>看一个家庭的优劣，不是看是否贫穷，而是看是否有奋发的气象。</summary>
    <title>千年悖论——人性的历史实验纪律</title>
    <updated>2026-10-02T09:35:57.742Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="Database" scheme="https://www.imxcai.com/category/database/"/>
    <category term="Oracle" scheme="https://www.imxcai.com/category/database/oracle/"/>
    <category term="Oracle 19C" scheme="https://www.imxcai.com/tag/oracle-19c/"/>
    <content>
      <![CDATA[<h2 id="Oracle-体系结构"><a href="#Oracle-体系结构" class="headerlink" title="Oracle 体系结构"></a>Oracle 体系结构</h2><p>Oracle 数据库的整个体系结构是非常复杂的，以下是其体系结构的概览：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/04/Oracle-%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84-1-1024x429.png"></p><p>Database Instance and Database Files:</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/04/Pasted-image-20250402141225.png"></p><p>Database Instance:</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/04/Pasted-image-20250402141318.png"></p><p>实例由两部分组成：</p><ul><li>内存结构</li><li>进程结构</li></ul><span id="more"></span><p>SGA 的组成：共享池、大池、流池、Java 池、重做日志缓冲区、数据告诉缓冲区、in-memory 区。</p><p>物理存储数据库组成：</p><ul><li>数据文件 data file</li><li>控制文件 control files</li><li>联机在线重做日志文件 online redo log file</li></ul><p>逻辑存储结构数据库：</p><ul><li>表空间</li><li>段</li><li>区</li><li>块</li></ul><h2 id="内存结构"><a href="#内存结构" class="headerlink" title="内存结构"></a>内存结构</h2><p>内存中有什么信息？</p><ul><li>程序代码</li><li>每个已连接会话的信息</li><li>程序执行过程中所需的信息</li><li>进程之间共享和通信的信息</li><li>缓存数据</li></ul><p>Oracle 数据库内存结构包括：</p><ul><li>系统全局区域（SGA）：是一组共享内存结构，包含一个 Oracle 数据库实例的数据和控制信息，也包括缓存的数据块和共享的 SQL、重做记录的数据</li><li>程序全局区域（PGA）：是非共享内存区域，专门供 Oracle 进程使用的数据和控制信息，当 Oracle 启动时，PGA 由 Oracle 数据库创建</li><li>用户全局区域（UGA）：存储的是与用户会话关联的数据信息</li><li>软件代码区：用于存储正在运行或可以运行的代码</li></ul><h3 id="Oracle-数据库内存管理"><a href="#Oracle-数据库内存管理" class="headerlink" title="Oracle 数据库内存管理"></a>Oracle 数据库内存管理</h3><p>为满足数据库的需求，通过内存管理来维护 Oracle 实例内存结构的最优大小。<br>Oracle 数据库基于内存相关的初始化参数设置来管理内存。</p><p>自动内存管理(Automatic memory management)指定实例内存的目标大小。数据库实例自动优化到这个目标内存大小，根据需要在 SGA 和 PGA 实例之间重新分配内存。</p><p>自动共享内存管理(Automatic shared memory management)是部分自动化的。设置一个 SGA 的目标大小，然后设置 PGA 总目标大小，或单独管理 PGA 的各个工作区。</p><p>手工内存管理(Manual memory management)不用设置总的内存大小，但需要设置很多初始化参数，以单独管理 SGA 和 PGA 实例中的各个组件。</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/04/Pasted-image-20250402144715.png"></p><p>Oracle DB 内存参数</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/04/Pasted-image-20250402144751-1024x624.png"></p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/04/Pasted-image-20250402145233-1024x914.png"></p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/04/Pasted-image-20250402145259-1024x948.png"></p><p>查看内存分配情况：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; select COMPONENT,<span class="built_in">sum</span>(CURRENT_SIZE/<span class="number">1024</span>/<span class="number">1024</span>) mb <span class="keyword">from</span> v$memory_dynamic_components group by COMPONENT;</span><br><span class="line"></span><br><span class="line">COMPONENT                                                                MB</span><br><span class="line">---------------------------------------------------------------- ----------</span><br><span class="line">shared pool                                                             <span class="number">384</span></span><br><span class="line">java pool                                                                <span class="number">16</span></span><br><span class="line">streams pool                                                             <span class="number">16</span></span><br><span class="line">DEFAULT 8K buffer cache                                                   <span class="number">0</span></span><br><span class="line">In Memory RW Extension Area                                               <span class="number">0</span></span><br><span class="line">DEFAULT 16K buffer cache                                                  <span class="number">0</span></span><br><span class="line">unified pga pool                                                          <span class="number">0</span></span><br><span class="line">Shared IO Pool                                                           <span class="number">48</span></span><br><span class="line">SGA Target                                                              <span class="number">944</span></span><br><span class="line">DEFAULT buffer cache                                                    <span class="number">448</span></span><br><span class="line">DEFAULT 2K buffer cache                                                   <span class="number">0</span></span><br><span class="line"></span><br><span class="line">COMPONENT                                                                MB</span><br><span class="line">---------------------------------------------------------------- ----------</span><br><span class="line">Data Transfer Cache                                                       <span class="number">0</span></span><br><span class="line">PGA Target                                                              <span class="number">640</span></span><br><span class="line">KEEP buffer cache                                                         <span class="number">0</span></span><br><span class="line">RECYCLE buffer cache                                                      <span class="number">0</span></span><br><span class="line">DEFAULT 4K buffer cache                                                   <span class="number">0</span></span><br><span class="line">In-Memory Area                                                            <span class="number">0</span></span><br><span class="line">large pool                                                               <span class="number">16</span></span><br><span class="line">DEFAULT 32K buffer cache                                                  <span class="number">0</span></span><br><span class="line">In Memory RO Extension Area                                               <span class="number">0</span></span><br><span class="line">memoptimize buffer cache                                                  <span class="number">0</span></span><br><span class="line">ASM Buffer Cache                                                          <span class="number">0</span></span><br><span class="line"></span><br><span class="line"><span class="number">22</span> rows selected.</span><br></pre></td></tr></table></figure><p>监控 SGA 和 PGA：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; select COMPONENT,CURRENT_SIZE/<span class="number">1024</span>/<span class="number">1024</span> CURRENT_SIZE <span class="keyword">from</span> v$memory_dynamic_components where COMPONENT <span class="keyword">in</span>(<span class="string">&#x27;PGA Target&#x27;</span>,<span class="string">&#x27;SGA Target&#x27;</span>);</span><br><span class="line"></span><br><span class="line">COMPONENT                                                        CURRENT_SIZE</span><br><span class="line">---------------------------------------------------------------</span><br><span class="line">SGA Target                                                  <span class="number">944</span></span><br><span class="line">PGA Target                                                  <span class="number">640</span></span><br></pre></td></tr></table></figure><p>Oracle 会根据当前 SGA 内存使用情况自动设置 SGA_TARGET<br>当 <code>memory_target</code> 设置为 <code>0</code> ，将根据 AMM 所设置的 <code>sga_target</code> 和 <code>pga_aggregate_target</code> 的值来设置 ASMM 的 <code>sga_target</code> 和 <code>pga_aggregate_target</code> ，Oracle 会自动调整 SGA 组件</p><p>从 AMM 到 ASMM：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">alter system <span class="built_in">set</span> memory_target=<span class="number">0</span>;</span><br></pre></td></tr></table></figure><p>从 ASMM 到 AMM：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">alter system <span class="built_in">set</span> memory_target=896M;</span><br><span class="line">alter system <span class="built_in">set</span> sga_target=<span class="number">0</span>;</span><br><span class="line">alter system <span class="built_in">set</span> pga_aggregate_target=<span class="number">0</span>;</span><br></pre></td></tr></table></figure><p>从 ASMM 到手动：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">alter system <span class="built_in">set</span> sga_target=<span class="number">0</span>;</span><br></pre></td></tr></table></figure><p>然后基于当前值计算 SGA_TARGET 值：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; select ((select <span class="built_in">sum</span>(value) <span class="keyword">from</span> v$sga)-(select current_size <span class="keyword">from</span></span><br><span class="line">v$sga_dynamic_free_memory)) <span class="string">&quot;sga_target&quot;</span> <span class="keyword">from</span> dual;</span><br></pre></td></tr></table></figure><p>设置 SGA_TARGET ：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">alter system <span class="built_in">set</span> sga_target=<span class="number">989853080</span>;</span><br></pre></td></tr></table></figure><p>将 SGA 组件初始化参数设置为 <code>0</code>：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">alter system <span class="built_in">set</span> streams_pool_size=<span class="number">0</span>;</span><br><span class="line">alter system <span class="built_in">set</span> shared_pool_size=<span class="number">0</span>;</span><br><span class="line">alter system <span class="built_in">set</span> large_pool_size=<span class="number">0</span>;</span><br><span class="line">alter system <span class="built_in">set</span> java_pool_size=<span class="number">0</span>;</span><br><span class="line">alter system <span class="built_in">set</span> db_cache_size=<span class="number">0</span>;</span><br></pre></td></tr></table></figure><p>Oracle Database Memory Structures</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/04/Pasted-image-20250402151937.png"></p><p>专用服务器：UGA 位于 PGA<br>共享服务器：UGA 位于 Large Pool</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/04/Pasted-image-20250402152146.png"></p><p>PGA Contents：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/04/Pasted-image-20250402152215.png"></p><p>PGA 的组成：</p><ul><li>SQL 工作区</li><li>会话内存</li><li>私有 SQL 区</li></ul><p>SGA 组件：</p><ul><li>Database Buffer Cache：存储的是从数据文件读取的数据块副本，即数据缓存。数据文件存储在物理磁盘中，Oracle 数据库的数据保存在数据文件中，由服务器进程将数据文件中的数据读入到数据库高速缓存中，利用 LRU 算法</li><li>Redo Log Buffer：存储的是数据库所做的更改的条目信息。包含 DML 或 DDL 操作对数据库所做的给你个给信息，主要用于实现数据库恢复</li></ul><p>Redo Log Buffer：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/04/Pasted-image-20250402152548.png"></p><ul><li>Shared Pool：缓存各种类型的程序数据。例如，存储已解析的 SQL、PL&#x2F;SQL 代码，系统参数和数据字典信息</li></ul><p>Shared Pool：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/04/Pasted-image-20250402152722.png"></p><ul><li>Large Pool：是 SGA 的可选区域，对于备份和恢复以及具有大量排序工作的 SQL 语句等特定的数据库操作需要使用大池</li><li>Java Pool：用于存储 JVM 内所有会话特定的 Java 代码和数据</li><li>Streams Pool：存储的是缓冲队列中的消息和 Oracle 数据流数据</li><li>Fixed SGA：有关数据库和实例状态的常规信息，后台进程需要访问这些信息，进程之间传递的信息</li></ul><p>相关内存参数：<br>memory_max_target<br>memory_target<br>sga_max_size<br>sga_min_size<br>sga_target<br>pga_aggregate_targetdb_16k_cache_size<br>db_2k_cache_size<br>db_32k_cache_size<br>db_4k_cache_size<br>db_8k_cache_size<br>db_cache_size<br>db_keep_cache_size<br>db_recycle_cache_size<br>log_buffer<br>java_pool_size<br>large_pool_size<br>shared_pool_size<br>streams_pool_size<br>bitmap_merge_area_size<br>hash_area_size<br>sort_area_size<br>inmemory_size<br>inmemory_force<br>inmemory_clause_default<br>inmemory_query<br>inmemory_max_populate_servers<br>inmemory_trickle_repopulate_servers_percent<br>optimizer_inmemory_aware</p><p>可能会遇到的问题：</p><p>ORA-00845: MEMORY_TARGET not supported on this system</p><p>On Linux systems, if the operating system &#x2F;dev&#x2F;shm mount size is too small for the<br>Oracle system global area (SGA) and program global area (PGA), it results in the<br>following error:<br>ORA-00845: MEMORY_TARGET not supported on this system<br>Note that Memory Size (SGA and PGA), which sets the initialization parameter<br>MEMORY_TARGET or MEMORY_MAX_TARGET, cannot be greater than the shared memory file<br>system (&#x2F;dev&#x2F;shm) on your operating system.<br>The workaround, if you encounter the ORA-00845 error, is to increase the &#x2F;dev&#x2F;shm<br>mountpoint size. For example:<br><code>mount -t tmpfs shmfs -o size=5g /dev/shm</code><br>To make this change persistent across system restarts, add an entry in &#x2F;etc&#x2F;fstab<br>similar to the following:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">shmfs /dev/shm tmpfs size=7g <span class="number">0</span> <span class="number">0</span></span><br><span class="line">mount -o remount /dev/shm</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://www.imxcai.com/database/oracle/ocp-10-cncpt.html</id>
    <link href="https://www.imxcai.com/database/oracle/ocp-10-cncpt.html"/>
    <published>2025-04-02T08:02:57.000Z</published>
    <summary>Oracle 的体系结构也是复杂啊</summary>
    <title>OCP-10：体系结构</title>
    <updated>2026-10-02T09:35:57.740Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="Linux" scheme="https://www.imxcai.com/category/linux/"/>
    <category term="VirtualBox" scheme="https://www.imxcai.com/tag/virtualbox/"/>
    <content>
      <![CDATA[<p>在 VirtualBox 中使用物理硬盘的过程要比在 VMware Workstation 中复杂一些。</p><h2 id="对硬盘进行脱机"><a href="#对硬盘进行脱机" class="headerlink" title="对硬盘进行脱机"></a>对硬盘进行脱机</h2><p>要使用物理硬盘，必须对所使用的硬盘进行脱机处理，可以通过 <code>Diskmgmt.msc</code> 图形化方式，也可以通过 <code>diskpart </code>命令行方式：</p><span id="more"></span><p><img src="https://image.imxcai.com/wp-content/uploads/2025/02/image-1.png"></p><p>上面是把需要给到虚拟机用的磁盘 1 进行了脱机。</p><h2 id="创建映射文件"><a href="#创建映射文件" class="headerlink" title="创建映射文件"></a>创建映射文件</h2><p>使用 <code>VBoxManage </code>查看磁盘信息：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/02/image-2-1024x565.png"></p><p>此处 <code>\\.\PhysicalDrive1</code> 是需要给到虚拟机使用的物理磁盘。</p><p>使用 <code>VBoxManage createmedium</code> 命令创建映射文件：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">.\VBoxManage createmedium disk --filename <span class="string">&quot;C:\Users\Houwang Cai\VirtualBox VMs\Disks\ssd.vmdk&quot;</span> --<span class="built_in">format</span>=VMDK --variant RawDisk --<span class="built_in">property</span> RawDrive=\\.\PhysicalDrive1</span><br></pre></td></tr></table></figure><p><img src="https://image.imxcai.com/wp-content/uploads/2025/02/image-3-1024x565.png"></p><p>映射的磁盘会自动注册到 VirtualBox 中，后续只需关联到虚拟机即可。</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/02/image-4-1024x636.png"></p><p>注意：VirtualBox 必须使用管理员权限运行，否则访问 ssd.vmdk 会提示没有权限。</p>]]>
    </content>
    <id>https://www.imxcai.com/linux/use-physicaldrive-in-virtualbox7.html</id>
    <link href="https://www.imxcai.com/linux/use-physicaldrive-in-virtualbox7.html"/>
    <published>2025-02-13T05:37:06.000Z</published>
    <summary>将物理磁盘给到 VirtualBox 中的虚拟机使用。</summary>
    <title>在 VirtualBox 7 中使用物理硬盘</title>
    <updated>2026-10-02T09:35:57.742Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="读书" scheme="https://www.imxcai.com/category/reading/"/>
    <category term="Book" scheme="https://www.imxcai.com/tag/book/"/>
    <content>
      <![CDATA[<blockquote><p>能帮你的人是你自己，也只有你自己。</p><p>有许多问题需要你向自己发问。比如你能停止自我批判吗？你能对自己好一些吗？</p><p>也许最重要的问题是，你能开始爱自己吗？</p></blockquote><p><img src="https://image.imxcai.com/wp-content/uploads/2025/02/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20250212135841-768x1024.jpg"></p><p>我相信每个人都有能力让自己变得更好，但能帮助你的人是你自己，也只有你自己。</p>]]>
    </content>
    <id>https://www.imxcai.com/reading/%E8%9B%A4%E8%9F%86%E5%85%88%E7%94%9F%E5%8E%BB%E7%9C%8B%E5%BF%83%E7%90%86%E5%8C%BB%E7%94%9F.html</id>
    <link href="https://www.imxcai.com/reading/%E8%9B%A4%E8%9F%86%E5%85%88%E7%94%9F%E5%8E%BB%E7%9C%8B%E5%BF%83%E7%90%86%E5%8C%BB%E7%94%9F.html"/>
    <published>2025-02-12T06:04:08.000Z</published>
    <summary>理解自己，接纳自己，允许自己的不完美。</summary>
    <title>蛤蟆先生去看心理医生</title>
    <updated>2026-10-02T09:35:57.743Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="读书" scheme="https://www.imxcai.com/category/reading/"/>
    <content>
      <![CDATA[<p>在凌晨五点为孩子手洗完裤子，冷水让我没有了睡意，在这样的一个没人打扰的清晨完成了这本书的阅读。恰如书上提到的一样：</p><blockquote><p>人生逐渐变得忙碌，日常生活中无法自由地抽出时间来了</p></blockquote><p>跑步这件事情断断续续的持续过一段时间，但是因为前面提到的“忙碌”我已经停跑一年有余，已经回归于初学者状态了，肌肉也已消散，脂肪出现堆积，这本书又让我有了跑步的欲望。</p><span id="more"></span><p>借书上一句话勉励自己：</p><blockquote><p>持之以恒，不乱节奏，对于长期作业实在至为重要。</p></blockquote><p><img src="https://image.imxcai.com/wp-content/uploads/2025/02/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20250204063256.jpg"></p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/02/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20250204064218.jpg"></p>]]>
    </content>
    <id>https://www.imxcai.com/reading/%E5%BD%93%E6%88%91%E8%B0%88%E8%B7%91%E6%AD%A5%E6%97%B6%EF%BC%8C%E6%88%91%E5%9C%A8%E8%B0%88%E4%BA%9B%E4%BB%80%E4%B9%88-%E6%9D%91%E4%B8%8A%E6%98%A5%E6%A0%91.html</id>
    <link href="https://www.imxcai.com/reading/%E5%BD%93%E6%88%91%E8%B0%88%E8%B7%91%E6%AD%A5%E6%97%B6%EF%BC%8C%E6%88%91%E5%9C%A8%E8%B0%88%E4%BA%9B%E4%BB%80%E4%B9%88-%E6%9D%91%E4%B8%8A%E6%98%A5%E6%A0%91.html"/>
    <published>2025-02-03T22:47:56.000Z</published>
    <summary>过分奴役，它会发生故障。然而肯花时间，循序渐进，它就毫无怨言...</summary>
    <title>当我谈跑步时，我在谈些什么——村上春树</title>
    <updated>2025-02-03T22:47:57.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="站点相关" scheme="https://www.imxcai.com/category/site-related/"/>
    <content>
      <![CDATA[<p>价格上涨接近一倍了，从最初 49 元&#x2F;年到现在 90 元&#x2F;年，不过想想这都已经注册十年了。</p><table><tbody><tr><td class="has-text-align-center" data-align="center">年份</td><td class="has-text-align-center" data-align="center">价格</td></tr><tr><td class="has-text-align-center" data-align="center">2015</td><td class="has-text-align-center" data-align="center">49</td></tr><tr><td class="has-text-align-center" data-align="center">2016</td><td class="has-text-align-center" data-align="center">55</td></tr><tr><td class="has-text-align-center" data-align="center">2017</td><td class="has-text-align-center" data-align="center">60</td></tr><tr><td class="has-text-align-center" data-align="center">2018</td><td class="has-text-align-center" data-align="center">69</td></tr><tr><td class="has-text-align-center" data-align="center">2019</td><td class="has-text-align-center" data-align="center">69</td></tr><tr><td class="has-text-align-center" data-align="center">2020</td><td class="has-text-align-center" data-align="center">69</td></tr><tr><td class="has-text-align-center" data-align="center">2021</td><td class="has-text-align-center" data-align="center">69</td></tr><tr><td class="has-text-align-center" data-align="center">2022</td><td class="has-text-align-center" data-align="center">75</td></tr><tr><td class="has-text-align-center" data-align="center">2023</td><td class="has-text-align-center" data-align="center">79</td></tr><tr><td class="has-text-align-center" data-align="center">2024</td><td class="has-text-align-center" data-align="center">85</td></tr><tr><td class="has-text-align-center" data-align="center">2025</td><td class="has-text-align-center" data-align="center">90</td></tr></tbody></table><p>从 2015 年注册到 2025 年续费的价格变化</p>]]>
    </content>
    <id>https://www.imxcai.com/site-related/com-%E7%BB%AD%E8%B4%B9%E8%B6%8A%E6%9D%A5%E8%B6%8A%E8%B4%B5%E4%BA%86.html</id>
    <link href="https://www.imxcai.com/site-related/com-%E7%BB%AD%E8%B4%B9%E8%B6%8A%E6%9D%A5%E8%B6%8A%E8%B4%B5%E4%BA%86.html"/>
    <published>2025-02-03T02:47:24.000Z</published>
    <summary>.com 续费价格继续上涨</summary>
    <title>.com 续费越来越贵了</title>
    <updated>2025-02-03T02:47:57.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="Database" scheme="https://www.imxcai.com/category/database/"/>
    <category term="Oracle" scheme="https://www.imxcai.com/category/database/oracle/"/>
    <category term="Oracle 19C" scheme="https://www.imxcai.com/tag/oracle-19c/"/>
    <content>
      <![CDATA[<h2 id="创建-Application-Container"><a href="#创建-Application-Container" class="headerlink" title="创建 Application Container"></a>创建 Application Container</h2><p>什么是 Oracle Managed Files(OMF)？<br>Using Oracle Managed Files simplifies the administration of an Oracle Database. Oracle Managed Files eliminates the need for you, the DBA, to directly manage the operating system files that comprise an Oracle Database.</p><span id="more"></span><p>With Oracle Managed Files, you specify file system directories in which the database automatically creates, names, and manages files at the database object level. For example, you need only specify that you want to create a tablespace; you do not need to specify the name and path of the tablespace’s data file with the <code>DATAFILE</code> clause. This feature works well with a logical volume manager (LVM).</p><p>The database internally uses standard file system interfaces to create and delete files as needed for the following database structures:</p><ul><li>Tablespaces</li><li>Redo log files</li><li>Control files</li><li>Archived logs</li><li>Block change tracking files</li><li>Flashback logs</li><li>RMAN backups</li></ul><p>The following table lists the initialization parameters that enable the use of Oracle Managed Files.</p><table><thead><tr><th>Initialization Parameter</th><th>Description</th></tr></thead><tbody><tr><td><code>DB_CREATE_FILE_DEST</code></td><td>Defines the location of the default file system directory or Oracle ASM disk group where the database creates data files or temp files when no file specification is given in the create operation. Also used as the default location for redo log and control files if <code>DB_CREATE_ONLINE_LOG_DEST_``n</code> are not specified.</td></tr><tr><td><code>DB_CREATE_ONLINE_LOG_DEST_n</code></td><td>Defines the location of the default file system directory or Oracle ASM disk group for redo log files and control file creation when no file specification is given in the create operation. By changing <code>n</code>, you can use this initialization parameter multiple times, where <code>n</code> specifies a multiplexed copy of the redo log or control file. You can specify up to five multiplexed copies.</td></tr><tr><td><code>DB_RECOVERY_FILE_DEST</code></td><td>Defines the location of the Fast Recovery Area, which is the default file system directory or Oracle ASM disk group where the database creates RMAN backups when no format option is used, archived logs when no other local destination is configured, and flashback logs. Also used as the default location for redo log and control files or multiplexed copies of redo log and control files if <code>DB_CREATE_ONLINE_LOG_DEST_``n</code> are not specified. When this parameter is specified, the <code>DB_RECOVERY_FILE_DEST_SIZE</code> initialization parameter must also be specified.</td></tr></tbody></table><p>创建 Application Container(使用 OMF)：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter system <span class="built_in">set</span> db_create_file_dest=<span class="string">&#x27;/u01/app/oracle&#x27;</span>;</span><br><span class="line">SQL&gt; create pluggable database appcon1 <span class="keyword">as</span> application container admin user app_admin identified by <span class="number">123</span>;</span><br><span class="line"></span><br><span class="line">SQL&gt; alter pluggable database appcon1 <span class="built_in">open</span>;</span><br><span class="line">SQL&gt; select name,open_mode,application_root,application_pdb <span class="keyword">from</span> v$pdbs;</span><br><span class="line"></span><br><span class="line">NAME            OPEN_MODE  APP APP</span><br><span class="line">--------------- ---------- --- ---</span><br><span class="line">PDB$SEED        READ ONLY  NO  NO</span><br><span class="line">PDB             READ WRITE NO  NO</span><br><span class="line">PDB2            READ WRITE NO  NO</span><br><span class="line">APPCON1         READ WRITE YES NO</span><br></pre></td></tr></table></figure><p>创建 PDB 数据库：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter session <span class="built_in">set</span> container=APPCON1;</span><br><span class="line">SQL&gt; create pluggable database apppdb1 admin user pdb_admin identified by <span class="number">123</span>;</span><br><span class="line"></span><br><span class="line">SQL&gt; alter pluggable database apppdb1 <span class="built_in">open</span>;</span><br><span class="line">SQL&gt; select name,open_mode,application_root,application_pdb <span class="keyword">from</span> v$pdbs;</span><br><span class="line"></span><br><span class="line">NAME            OPEN_MODE  APP APP</span><br><span class="line">--------------- ---------- --- ---</span><br><span class="line">APPCON1         READ WRITE YES NO</span><br><span class="line">APPPDB1         READ WRITE NO  YES</span><br></pre></td></tr></table></figure><p>如果在应用根容器中存在表，并且需要同步到应用程序 PDB 中，可以通过以下方式：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter session <span class="built_in">set</span> container=apppdb1;</span><br><span class="line">SQL&gt; alter pluggable database application <span class="built_in">all</span> sync;</span><br></pre></td></tr></table></figure><p>启动新应用程序版本的安装，并为其提供一个字符串以标识改应用程序的版本，需要在应用根容器中进行：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter session <span class="built_in">set</span> container=APPCON1;</span><br><span class="line">SQL&gt; alter pluggable database application ref_app begin install <span class="string">&#x27;1.0&#x27;</span>;</span><br><span class="line">SQL&gt; select app_name,app_version,app_status <span class="keyword">from</span> dba_applications where app_name=<span class="string">&#x27;REF_APP&#x27;</span>;</span><br><span class="line"></span><br><span class="line">APP_NAME        APP_VERSION     APP_STATUS</span><br><span class="line">--------------- --------------- ------------</span><br><span class="line">REF_APP                         INSTALLING</span><br></pre></td></tr></table></figure><p>此时 PDB 处于 <code>INSTALLING</code> 状态，可在此期间进行操作，操作完成后结束该状态。</p><p>创建表空间和用户：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter session <span class="built_in">set</span> container=APPCON1;</span><br><span class="line">SQL&gt; create tablespace ref_app_ts datafile size 1m autoextend on <span class="built_in">next</span> 1m;</span><br><span class="line">SQL&gt; create user imxcai identified by <span class="number">123</span> default tablespace ref_app_ts quota unlimited on ref_app_ts container=<span class="built_in">all</span>;</span><br></pre></td></tr></table></figure><p>创建表并插入数据：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; grant create session, create table to imxcai;</span><br><span class="line">SQL&gt; create table imxcai.reference_data sharing=data (<span class="built_in">id</span> number, description varchar2(<span class="number">50</span>), constraint t1_pk primary key (<span class="built_in">id</span>));</span><br></pre></td></tr></table></figure><p><code>sharing</code> 的含义：<br>此子句仅在应用程序根目录中创建表时适用。<br>这种类型的表称为应用成勋公共对象，其数据可以与属于应用程序根的应用程序 PDB 共享，确定如何共享表数据，有以下共享属性：</p><ul><li><code>METADATA</code>：元数据链接共享表的元数据，但其数据对于每个容器都是唯一的。</li><li><code>DATA</code>：数据链接共享表，并且其数据对于应用程序容器中的所有容器都是相同的，它的数据只存储在应用程序根目录中。</li><li><code>EXTENDED DATA</code>：扩展数据链接共享表，应用程序根目录中的数据对于应用程序容器中的所有容器都是相同的，但是应用程序容器中的每个应用程序 PDB 都可以存储应用程序 PDB 所特有的数据。</li><li><code>NONE</code>：不共享表。</li></ul><p>如果省略此子句，则数据库将使用 <code>DEFAULT_SHARING</code> 初始化参数的值来确定表的 Sharing 属性。如果没有初始化值，则默认值为 <code>METADATA</code>。<br>创建对象表或 XMLTYPE 表时，只可以指定 METADATA 或 NONE<br>创建表后不能更改 Sharing 属性。</p><p>往表里填充数据：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; insert into imxcai.reference_data select level, <span class="string">&#x27;description of&#x27;</span> || level <span class="keyword">from</span> dual connect by level &lt;=<span class="number">5</span>;</span><br><span class="line">SQL&gt; commit;</span><br><span class="line">SQL&gt; select * <span class="keyword">from</span> imxcai.reference_data;</span><br><span class="line"></span><br><span class="line">        ID DESCRIPTION</span><br><span class="line">---------- --------------------------------------------------</span><br><span class="line">         <span class="number">1</span> description of1</span><br><span class="line">         <span class="number">2</span> description of2</span><br><span class="line">         <span class="number">3</span> description of3</span><br><span class="line">         <span class="number">4</span> description of4</span><br><span class="line">         <span class="number">5</span> description of5</span><br></pre></td></tr></table></figure><p>结束安装：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter pluggable database application ref_app end install;</span><br><span class="line">SQL&gt; select app_name,app_version,app_status <span class="keyword">from</span> dba_applications where app_name=<span class="string">&#x27;REF_APP&#x27;</span>;</span><br><span class="line"></span><br><span class="line">APP_NAME        APP_VERSION     APP_STATUS</span><br><span class="line">--------------- --------------- ------------</span><br><span class="line">REF_APP         <span class="number">1.0</span>             NORMAL</span><br></pre></td></tr></table></figure><p>同步与应用程序根容器关联的应用程序 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter session <span class="built_in">set</span> container=apppdb1;</span><br><span class="line">SQL&gt; desc imxcai.reference_data;</span><br><span class="line">ERROR:</span><br><span class="line">ORA-04043: <span class="built_in">object</span> imxcai.reference_data does <span class="keyword">not</span> exist</span><br><span class="line"></span><br><span class="line">SQL&gt; alter pluggable database application ref_app sync;</span><br><span class="line">SQL&gt; desc imxcai.reference_data;</span><br><span class="line"> Name                                      Null?    <span class="type">Type</span></span><br><span class="line"> ----------- -------- ----------------------------</span><br><span class="line"> ID                                        NOT NULL NUMBER</span><br><span class="line"> DESCRIPTION                                        VARCHAR2(<span class="number">50</span>)</span><br><span class="line"></span><br><span class="line">SQL&gt; select * <span class="keyword">from</span> imxcai.reference_data;</span><br><span class="line"></span><br><span class="line">        ID DESCRIPTION</span><br><span class="line">---------- --------------------------------------------------</span><br><span class="line">         <span class="number">1</span> description of1</span><br><span class="line">         <span class="number">2</span> description of2</span><br><span class="line">         <span class="number">3</span> description of3</span><br><span class="line">         <span class="number">4</span> description of4</span><br><span class="line">         <span class="number">5</span> description of5</span><br></pre></td></tr></table></figure><p>升级应用程序：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter session <span class="built_in">set</span> container=APPCON1;</span><br><span class="line">SQL&gt; alter pluggable database application ref_app begin upgrade <span class="string">&#x27;1.0&#x27;</span> to <span class="string">&#x27;1.1&#x27;</span>;</span><br><span class="line">SQL&gt; select app_name,app_version,app_status <span class="keyword">from</span> dba_applications WHERE app_name=<span class="string">&#x27;REF_APP&#x27;</span>;</span><br><span class="line"></span><br><span class="line">APP_NAME        APP_VERSION     APP_STATUS</span><br><span class="line">--------------- --------------- ------------</span><br><span class="line">REF_APP         <span class="number">1.0</span>             UPGRADING</span><br></pre></td></tr></table></figure><p>修改表：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter table imxcai.reference_data add (created_date date default sysdate);</span><br><span class="line">create <span class="keyword">or</span> replace function imxcai.get_ref_desc (p_id <span class="keyword">in</span> reference_data.<span class="built_in">id</span>%<span class="built_in">type</span>)</span><br><span class="line"><span class="keyword">return</span> reference_data.description%<span class="built_in">type</span></span><br><span class="line"><span class="keyword">as</span></span><br><span class="line">l_desc reference_data.description%<span class="built_in">type</span>;</span><br><span class="line">begin</span><br><span class="line">select description into l_desc <span class="keyword">from</span> reference_data where <span class="built_in">id</span> = p_id;</span><br><span class="line"><span class="keyword">return</span> l_desc;</span><br><span class="line">exception</span><br><span class="line">when no_data_found then</span><br><span class="line"><span class="keyword">return</span> null;</span><br><span class="line">end;</span><br><span class="line">/</span><br><span class="line"></span><br><span class="line">SQL&gt; grant execute on imxcai.get_ref_desc to public;</span><br></pre></td></tr></table></figure><p>结束升级：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter pluggable database application ref_app end upgrade;</span><br><span class="line">SQL&gt; select app_name,app_version,app_status <span class="keyword">from</span> dba_applications WHERE app_name=<span class="string">&#x27;REF_APP&#x27;</span>;</span><br><span class="line"></span><br><span class="line">APP_NAME        APP_VERSION     APP_STATUS</span><br><span class="line">--------------- --------------- ------------</span><br><span class="line">REF_APP         <span class="number">1.1</span>             NORMAL</span><br></pre></td></tr></table></figure><p>进行同步：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter session <span class="built_in">set</span> container=apppdb1;</span><br><span class="line">SQL&gt; desc imxcai.reference_data;</span><br><span class="line"> Name                                      Null?    <span class="type">Type</span></span><br><span class="line"> ----------------------------------------- -------- -----</span><br><span class="line"> ID                                        NOT NULL NUMBER</span><br><span class="line"> DESCRIPTION                                        VARCHAR2(<span class="number">50</span>)</span><br><span class="line"></span><br><span class="line">SQL&gt; alter pluggable database application ref_app sync;</span><br><span class="line"></span><br><span class="line">SQL&gt; desc imxcai.reference_data;</span><br><span class="line"> Name                                      Null?    <span class="type">Type</span></span><br><span class="line"> ----------------------------------------- -------- ----</span><br><span class="line"> ID                                        NOT NULL NUMBER</span><br><span class="line"> DESCRIPTION                                        VARCHAR2(<span class="number">50</span>)</span><br><span class="line"> CREATED_DATE                                       DATE</span><br></pre></td></tr></table></figure><p>卸载应用程序：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter session <span class="built_in">set</span> container=appcon1;</span><br><span class="line">SQL&gt; alter pluggable database application ref_app begin uninstall;</span><br><span class="line">SQL&gt; drop user imxcai cascade;</span><br><span class="line">SQL&gt; drop tablespace ref_app_ts including contents <span class="keyword">and</span> datafiles;</span><br><span class="line">SQL&gt; alter pluggable database application ref_app end uninstall;</span><br><span class="line"></span><br><span class="line">SQL&gt; alter session <span class="built_in">set</span> container=apppdb1;</span><br><span class="line">SQL&gt; desc imxcai.reference_data;</span><br><span class="line"> Name                                      Null?    <span class="type">Type</span></span><br><span class="line"> ----------------------------------------- -------- ----</span><br><span class="line"> ID                                        NOT NULL NUMBER</span><br><span class="line"> DESCRIPTION                                        VARCHAR2(<span class="number">50</span>)</span><br><span class="line"> CREATED_DATE                                       DATE</span><br><span class="line"></span><br><span class="line">SQL&gt; alter pluggable database application ref_app sync;</span><br><span class="line">SQL&gt; desc imxcai.reference_data;</span><br><span class="line">ERROR:</span><br><span class="line">ORA-04043: <span class="built_in">object</span> imxcai.reference_data does <span class="keyword">not</span> exist</span><br><span class="line"></span><br><span class="line">SQL&gt; select app_name,app_version,app_status <span class="keyword">from</span> dba_applications WHERE app_name=<span class="string">&#x27;REF_APP&#x27;</span>;</span><br><span class="line"></span><br><span class="line">APP_NAME        APP_VERSION     APP_STATUS</span><br><span class="line">--------------- --------------- ------------</span><br><span class="line">REF_APP         <span class="number">1.1</span>             UNINSTALLED</span><br></pre></td></tr></table></figure><p>删除 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter session <span class="built_in">set</span> container=APPCON1;</span><br><span class="line">SQL&gt; alter pluggable database apppdb1 close;</span><br><span class="line">SQL&gt; drop pluggable database apppdb1 including datafiles;</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://www.imxcai.com/database/oracle/ocp-09-create-and-delete-application-containers-and-seeds.html</id>
    <link href="https://www.imxcai.com/database/oracle/ocp-09-create-and-delete-application-containers-and-seeds.html"/>
    <published>2025-01-17T06:22:48.000Z</published>
    <summary>管理应用程序容器数据库。</summary>
    <title>OCP-09：创建和删除 Application Containers and Seeds</title>
    <updated>2025-01-17T06:23:25.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="Database" scheme="https://www.imxcai.com/category/database/"/>
    <category term="Oracle" scheme="https://www.imxcai.com/category/database/oracle/"/>
    <category term="Oracle 19C" scheme="https://www.imxcai.com/tag/oracle-19c/"/>
    <content>
      <![CDATA[<p>PDB Snapshot Carousel 提供了 PDB 手动或自动生成快照，为开发测试用例提供了便捷。<br>CDB 为 local undo 和归档模式下，指定 <code>max_pdb_snapshots</code> 控制 PDB 最多生成的快照数量，当快照超过最大数量时，会覆盖最旧的快照。</p><span id="more"></span><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250116100518-1024x859.png"></p><p>pdb1_prod 为生产 PDB，然后创建 refres PDB pdb1_test_master，让其每天生成快照，当需要测试用例时，可以指定 snapshot 创建 PDB。</p><h2 id="PDB-Snapshot-Carousel-如何工作的？"><a href="#PDB-Snapshot-Carousel-如何工作的？" class="headerlink" title="PDB Snapshot Carousel 如何工作的？"></a>PDB Snapshot Carousel 如何工作的？</h2><p>数据库按需或自动创建 carousel 中的连续副本。当达到快照限制时（最多8个），数据库将覆盖旧的快照，类似于 Linux 中日志轮转一样。<br>PDB 快照的文件存放在文件系统上的物理文件中，其不包含数据库归档文件 archive log，默认存储在 PDB 的数据文件相同的目录中。<br>系统自动生成的 snapshot 以 <code>snap_</code> 名称开始，唯一标识结尾的命名规则，包含了快照当前的 SCN，并且扩展名为 <code>.PDB</code></p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250116101438-1024x566.png"></p><h3 id="设置-PDB-快照的最大数量"><a href="#设置-PDB-快照的最大数量" class="headerlink" title="设置 PDB 快照的最大数量"></a>设置 PDB 快照的最大数量</h3><p>使用 <code>max_pdb_snapshots</code> 参数设置 PDB 快照最大数量。<br>通过视图 <code>cdb_properties</code> 查询当前 <code>max_pdb_snapshots</code> 值，可以使用 <code>alter pluggable database</code> 更改 <code>max_pdb_snapshots</code> 值。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; <span class="built_in">set</span> linesize <span class="number">1500</span></span><br><span class="line">SQL&gt; col con_id <span class="built_in">format</span> <span class="number">99999</span></span><br><span class="line">SQL&gt; col propery_name <span class="built_in">format</span> a17</span><br><span class="line">SQL&gt; col pdb_name <span class="built_in">format</span> a9</span><br><span class="line">SQL&gt; col value <span class="built_in">format</span> a12</span><br><span class="line">SQL&gt; select r.con_id, p.pdb_name, property_name,property_value <span class="keyword">as</span> value, description FROM cdb_properties r,cdb_pdbs p where r.con_id = p.con_id <span class="keyword">and</span> property_name LIKE <span class="string">&#x27;MAX_PDB%&#x27;</span> order by property_name;</span><br></pre></td></tr></table></figure><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250116102413-1024x780.png"></p><p>默认快照最大数量为 <code>8</code>。</p><p>将当前 PDB 的快照数量设置为 <code>7</code> ：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter session <span class="built_in">set</span> container=PDB;</span><br><span class="line">SQL&gt; alter pluggable database <span class="built_in">set</span> max_pdb_snapshots=<span class="number">7</span>;</span><br></pre></td></tr></table></figure><p>删除所有的快照：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter pluggable database <span class="built_in">set</span> max_pdb_snapshots=<span class="number">0</span>;</span><br></pre></td></tr></table></figure><h3 id="配置自动生成-PDB-快照"><a href="#配置自动生成-PDB-快照" class="headerlink" title="配置自动生成 PDB 快照"></a>配置自动生成 PDB 快照</h3><p>默认都是手动生成快照，可以使用 <code>snapshot mode every</code> 子句自动产生 PDB 快照。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; select snapshot_mode <span class="string">&quot;s_mode&quot;</span> , snapshot_interval/<span class="number">60</span> <span class="string">&quot;snap_int_hrs&quot;</span> FROM dba_pdbs;</span><br><span class="line"></span><br><span class="line">s_mode snap_int_hrs</span><br><span class="line">------ ------------</span><br><span class="line">MANUAL</span><br></pre></td></tr></table></figure><p>进入 PDB，更改自动创建模式为每 24 小时自动生成 PDB 快照：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter session <span class="built_in">set</span> container=PDB;</span><br><span class="line">SQL&gt; alter pluggable database snapshot mode every <span class="number">24</span> hours;</span><br><span class="line">alter pluggable database snapshot mode every <span class="number">24</span> hours</span><br><span class="line">*</span><br><span class="line">ERROR at line <span class="number">1</span>:</span><br><span class="line">ORA-<span class="number">12754</span>: Feature PDB SNAPSHOT CAROUSEL <span class="keyword">is</span> disabled due to missing capability</span><br><span class="line">.</span><br></pre></td></tr></table></figure><p>报错解决方法：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter session <span class="built_in">set</span> container=cdb$root;</span><br><span class="line">SQL&gt; alter system <span class="built_in">set</span> <span class="string">&quot;_exadata_feature_on&quot;</span>=true scope=spfile;</span><br><span class="line">SQL&gt; shutdown immediate;</span><br><span class="line">SQL&gt; startup</span><br><span class="line"></span><br><span class="line">SQL&gt; alter pluggable database PDB <span class="built_in">open</span>;</span><br><span class="line">SQL&gt; alter session <span class="built_in">set</span> container=PDB;</span><br><span class="line">SQL&gt; alter pluggable database snapshot mode every <span class="number">24</span> hours;</span><br></pre></td></tr></table></figure><p>确认自动生成快照的时间间隔：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; select snapshot_mode <span class="string">&quot;s_mode&quot;</span>, snapshot_interval/<span class="number">60</span> <span class="string">&quot;snap_int_hrs&quot;</span> <span class="keyword">from</span> dba_pdbs;</span><br><span class="line"></span><br><span class="line">s_mode snap_int_hrs</span><br><span class="line">------ ------------</span><br><span class="line">AUTO             <span class="number">24</span></span><br></pre></td></tr></table></figure><p>登录 CDB，从 PDB 创建 PDB2 并配置为每 2 小时自动创建快照：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">conn / <span class="keyword">as</span> sysdba;</span><br><span class="line">SQL&gt; create pluggable database PDB2 <span class="keyword">from</span> PDB file_name_convert=(<span class="string">&#x27;PDB&#x27;</span>,<span class="string">&#x27;PDB2&#x27;</span>) snapshot mode every <span class="number">120</span> minutes;</span><br><span class="line">SQL&gt; alter pluggable database PDB2 <span class="built_in">open</span>;</span><br><span class="line">SQL&gt; alter pluggable database PDB2 save state;</span><br></pre></td></tr></table></figure><p>查看创建的快照：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; select p.con_id, p.pdb_name,p.snapshot_mode,p.snapshot_interval <span class="keyword">from</span> cdb_pdbs p order by <span class="number">1</span>;</span><br></pre></td></tr></table></figure><p>更改快照设置：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter session <span class="built_in">set</span> container=PDB2;</span><br><span class="line">SQL&gt; alter pluggable database PDB2 snapshot mode every <span class="number">30</span> minutes;</span><br><span class="line">SQL&gt; select p.con_id, p.pdb_name,p.snapshot_mode,p.snapshot_interval <span class="keyword">from</span> cdb_pdbs p order by <span class="number">1</span>;</span><br><span class="line"></span><br><span class="line">    CON_ID</span><br><span class="line">----------</span><br><span class="line">PDB_NAME</span><br><span class="line">-------------------------------------------------------------------</span><br><span class="line">SNAPSH SNAPSHOT_INTERVAL</span><br><span class="line">------ -----------------</span><br><span class="line">         <span class="number">4</span></span><br><span class="line">PDB2</span><br><span class="line">AUTO                  <span class="number">30</span></span><br></pre></td></tr></table></figure><p>更改为小时：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt;  alter pluggable database PDB2 snapshot mode every <span class="number">1</span> hours;</span><br><span class="line">SQL&gt; select p.con_id, p.pdb_name,p.snapshot_mode,p.snapshot_interval <span class="keyword">from</span> cdb_pdbs p order by <span class="number">1</span>;</span><br><span class="line"></span><br><span class="line">    CON_ID</span><br><span class="line">----------</span><br><span class="line">PDB_NAME</span><br><span class="line">----------------------------------------------------------------------------</span><br><span class="line">SNAPSH SNAPSHOT_INTERVAL</span><br><span class="line">------ -----------------</span><br><span class="line">         <span class="number">4</span></span><br><span class="line">PDB2</span><br><span class="line">AUTO                  <span class="number">60</span></span><br></pre></td></tr></table></figure><p>将快照模式设置为手动：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter pluggable database snapshot mode manual;</span><br><span class="line">SQL&gt; select p.con_id, p.pdb_name,p.snapshot_mode,p.snapshot_interval <span class="keyword">from</span> cdb_pdbs p order by <span class="number">1</span>;</span><br><span class="line"></span><br><span class="line">    CON_ID</span><br><span class="line">----------</span><br><span class="line">PDB_NAME</span><br><span class="line">--------------------------------------------------------------------------------</span><br><span class="line">SNAPSH SNAPSHOT_INTERVAL</span><br><span class="line">------ -----------------</span><br><span class="line">         <span class="number">4</span></span><br><span class="line">PDB2</span><br><span class="line">MANUAL</span><br></pre></td></tr></table></figure><p>关闭快照：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter pluggable database snapshot mode none;</span><br><span class="line">SQL&gt; select p.con_id, p.pdb_name,p.snapshot_mode,p.snapshot_interval <span class="keyword">from</span> cdb_pdbs p order by <span class="number">1</span>;</span><br><span class="line"></span><br><span class="line">    CON_ID</span><br><span class="line">----------</span><br><span class="line">PDB_NAME</span><br><span class="line">--------------------------------------------------------------------------------</span><br><span class="line">SNAPSH SNAPSHOT_INTERVAL</span><br><span class="line">------ -----------------</span><br><span class="line">         <span class="number">4</span></span><br><span class="line">PDB2</span><br><span class="line">NONE</span><br></pre></td></tr></table></figure><h3 id="手动创建快照"><a href="#手动创建快照" class="headerlink" title="手动创建快照"></a>手动创建快照</h3><p>显示快照信息：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; select con_id,con_name,snapshot_name,snapshot_scn,full_snapshot_path FROM cdb_pdb_snapshots order by con_id,snapshot_scn;</span><br><span class="line"></span><br><span class="line">no rows selected</span><br></pre></td></tr></table></figure><p>没有任何信息，现在生成快照，一个系统，一个自定义快照：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; show con_name;</span><br><span class="line"></span><br><span class="line">CON_NAME</span><br><span class="line">------------------------------</span><br><span class="line">PDB2</span><br><span class="line"></span><br><span class="line">SQL&gt; show user;</span><br><span class="line">USER <span class="keyword">is</span> <span class="string">&quot;SYS&quot;</span></span><br><span class="line"></span><br><span class="line">SQL&gt; alter pluggable database snapshot;</span><br><span class="line">alter pluggable database snapshot</span><br><span class="line">*</span><br><span class="line">ERROR at line <span class="number">1</span>:</span><br><span class="line">ORA-<span class="number">65363</span>: pluggable database PDB2 <span class="keyword">not</span> enabled <span class="keyword">for</span> snapshots</span><br><span class="line"></span><br><span class="line">SQL&gt; alter pluggable database snapshot test_snapshot;</span><br><span class="line">alter pluggable database snapshot test_snapshot</span><br><span class="line">*</span><br><span class="line">ERROR at line <span class="number">1</span>:</span><br><span class="line">ORA-<span class="number">65363</span>: pluggable database PDB2 <span class="keyword">not</span> enabled <span class="keyword">for</span> snapshots</span><br></pre></td></tr></table></figure><p>CDB 必须时 LOCAL UNDO 模式，用户必须有权限创建和删除 PDB。<br>如果不指定快照名，系统自动生成唯一名称的快照：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter pluggable database snapshot mode manual;</span><br><span class="line">SQL&gt; alter pluggable database snapshot test_snapshot;</span><br><span class="line">alter pluggable database snapshot test_snapshot</span><br><span class="line">*</span><br><span class="line">ERROR at line <span class="number">1</span>:</span><br><span class="line">ORA-<span class="number">64762</span>: cannot create snapshot</span><br></pre></td></tr></table></figure><p>此时失败的原因是快照最大数设置成了 <code>0</code>：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-host1 ~]$ oerr ORA <span class="number">64762</span></span><br><span class="line"><span class="number">64762</span>, <span class="number">0000</span>, <span class="string">&quot;cannot create snapshot&quot;</span></span><br><span class="line">// *Cause:    An attempt was made to create a snapshot <span class="keyword">while</span> <span class="string">&#x27;max_pdb_snapshots&#x27;</span></span><br><span class="line">//            was <span class="built_in">set</span> to <span class="number">0.</span></span><br><span class="line">// *Action:   max_pdb_snapshots should be <span class="built_in">set</span> greater than <span class="number">0</span> to take pdb snapshots.</span><br></pre></td></tr></table></figure><p>修改设置并创建快照：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter session <span class="built_in">set</span> container=PDB2;</span><br><span class="line">SQL&gt; alter pluggable database <span class="built_in">set</span> max_pdb_snapshots=<span class="number">8</span>;</span><br><span class="line"></span><br><span class="line">SQL&gt; alter pluggable database snapshot;</span><br><span class="line">SQL&gt; alter pluggable database snapshot test_snapshot;</span><br></pre></td></tr></table></figure><p>查看生成的快照：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; col snapshot_name <span class="built_in">format</span> a30</span><br><span class="line">SQL&gt; col full_snapshot_path <span class="built_in">format</span> a80</span><br><span class="line">SQL&gt; select con_id,con_name,snapshot_name,snapshot_scn,full_snapshot_path FROM cdb_pdb_snapshots order by con_id,snapshot_scn;</span><br><span class="line"></span><br><span class="line">    CON_ID</span><br><span class="line">----------</span><br><span class="line">CON_NAME</span><br><span class="line">--------------------------------------------------------------------------------</span><br><span class="line">SNAPSHOT_NAME                  SNAPSHOT_SCN</span><br><span class="line">------------------------------ ------------</span><br><span class="line">FULL_SNAPSHOT_PATH</span><br><span class="line">--------------------------------------------------------------------------------</span><br><span class="line">         <span class="number">4</span></span><br><span class="line">PDB2</span><br><span class="line">SNAP_3318643222_1190547411          <span class="number">2433997</span></span><br><span class="line">/u01/app/oracle/oradata/ORCL/PDB2/snap_3318643222_2433997.pdb</span><br><span class="line"></span><br><span class="line">    CON_ID</span><br><span class="line">----------</span><br><span class="line">CON_NAME</span><br><span class="line">--------------------------------------------------------------------------------</span><br><span class="line">SNAPSHOT_NAME                  SNAPSHOT_SCN</span><br><span class="line">------------------------------ ------------</span><br><span class="line">FULL_SNAPSHOT_PATH</span><br><span class="line">--------------------------------------------------------------------------------</span><br><span class="line">         <span class="number">4</span></span><br><span class="line">PDB2</span><br><span class="line">TEST_SNAPSHOT                       <span class="number">2434524</span></span><br><span class="line">/u01/app/oracle/oradata/ORCL/PDB2/snap_3318643222_2434524.pdb</span><br></pre></td></tr></table></figure><h3 id="删除快照"><a href="#删除快照" class="headerlink" title="删除快照"></a>删除快照</h3><p>可以将 <code>max_pdb_snapshots</code> 设置为 <code>0</code> ，即删除所有 PDB 快照，同时也关闭快照功能。<br>也可以使用 <code>alter pluggable database</code> 删除当前的快照：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; alter pluggable database drop snapshot SNAP_3318643222_1190547411;</span><br><span class="line"></span><br><span class="line">SQL&gt; select con_id,con_name,snapshot_name,snapshot_scn,full_snapshot_path FROM cdb_pdb_snapshots order by con_id,snapshot_scn;</span><br><span class="line"></span><br><span class="line">    CON_ID</span><br><span class="line">----------</span><br><span class="line">CON_NAME</span><br><span class="line">--------------------------------------------------------------------------------</span><br><span class="line">SNAPSHOT_NAME                  SNAPSHOT_SCN</span><br><span class="line">------------------------------ ------------</span><br><span class="line">FULL_SNAPSHOT_PATH</span><br><span class="line">--------------------------------------------------------------------------------</span><br><span class="line">         <span class="number">4</span></span><br><span class="line">PDB2</span><br><span class="line">TEST_SNAPSHOT                       <span class="number">2434524</span></span><br><span class="line">/u01/app/oracle/oradata/ORCL/PDB2/snap_3318643222_2434524.pdb</span><br></pre></td></tr></table></figure><h3 id="从-snapshot-创建-PDB"><a href="#从-snapshot-创建-PDB" class="headerlink" title="从 snapshot 创建 PDB"></a>从 snapshot 创建 PDB</h3><p>首先需要在系统中创建 PDB 目录：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-host1 ~]$ mkdir /u01/app/oracle/oradata/ORCL/PDB_snap_test</span><br></pre></td></tr></table></figure><p>基于快照创建 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; show con_name;</span><br><span class="line"></span><br><span class="line">CON_NAME</span><br><span class="line">------------------------------</span><br><span class="line">CDB$ROOT</span><br><span class="line"></span><br><span class="line">SQL&gt; alter system <span class="built_in">set</span> db_create_file_dest=<span class="string">&#x27;/u01/app/oracle/oradata/ORCL/PDB_snap_test&#x27;</span>;</span><br><span class="line"></span><br><span class="line">SQL&gt; create pluggable database PDB_snap_test <span class="keyword">from</span> PDB2 using snapshot test_snapshot;</span><br><span class="line"></span><br><span class="line">SQL&gt; alter pluggable database PDB_SNAP_TEST <span class="built_in">open</span>;</span><br><span class="line">SQL&gt; show pdbs;</span><br><span class="line"></span><br><span class="line">    CON_ID CON_NAME                       OPEN MODE  RESTRICTED</span><br><span class="line">---------- ------------------------------ ---------- ----------</span><br><span class="line">         <span class="number">2</span> PDB$SEED                       READ ONLY  NO</span><br><span class="line">         <span class="number">3</span> PDB                            READ WRITE NO</span><br><span class="line">         <span class="number">4</span> PDB2                           READ WRITE NO</span><br><span class="line">         <span class="number">5</span> PDB_SNAP_TEST                  READ WRITE NO</span><br><span class="line"></span><br><span class="line">SQL&gt; alter pluggable database PDB_SNAP_TEST close;</span><br><span class="line">SQL&gt; drop pluggable database PDB_SNAP_TEST including datafiles;</span><br></pre></td></tr></table></figure><p>基于 SCN 或时间点来创建 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; select con_id,con_name,snapshot_name,snapshot_scn,full_snapshot_path FROM cdb_pdb_snapshots order by con_id,snapshot_scn;</span><br><span class="line"></span><br><span class="line">    CON_ID</span><br><span class="line">----------</span><br><span class="line">CON_NAME</span><br><span class="line">--------------------------------------------------------------------------------</span><br><span class="line">SNAPSHOT_NAME</span><br><span class="line">--------------------------------------------------------------------------------</span><br><span class="line">SNAPSHOT_SCN</span><br><span class="line">------------</span><br><span class="line">FULL_SNAPSHOT_PATH</span><br><span class="line">--------------------------------------------------------------------------------</span><br><span class="line">         <span class="number">4</span></span><br><span class="line">PDB2</span><br><span class="line">TEST_SNAPSHOT</span><br><span class="line"></span><br><span class="line">    CON_ID</span><br><span class="line">----------</span><br><span class="line">CON_NAME</span><br><span class="line">--------------------------------------------------------------------------------</span><br><span class="line">SNAPSHOT_NAME</span><br><span class="line">--------------------------------------------------------------------------------</span><br><span class="line">SNAPSHOT_SCN</span><br><span class="line">------------</span><br><span class="line">FULL_SNAPSHOT_PATH</span><br><span class="line">--------------------------------------------------------------------------------</span><br><span class="line">     <span class="number">2434524</span></span><br><span class="line">/u01/app/oracle/oradata/ORCL/PDB2/snap_3318643222_2434524.pdb</span><br></pre></td></tr></table></figure><p>根据返回的 <code>2434524</code> SCN 点来创建 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; show con_name;</span><br><span class="line"></span><br><span class="line">CON_NAME</span><br><span class="line">------------------------------</span><br><span class="line">CDB$ROOT</span><br><span class="line"></span><br><span class="line">SQL&gt; create pluggable database PDB_snap_test <span class="keyword">from</span> PDB2 using snapshot at SCN <span class="number">2434524</span>;</span><br><span class="line">SQL&gt; show pdbs;</span><br><span class="line"></span><br><span class="line">    CON_ID CON_NAME                       OPEN MODE  RESTRICTED</span><br><span class="line">---------- ------------------------------ ---------- ----------</span><br><span class="line">         <span class="number">2</span> PDB$SEED                       READ ONLY  NO</span><br><span class="line">         <span class="number">3</span> PDB                            READ WRITE NO</span><br><span class="line">         <span class="number">4</span> PDB2                           READ WRITE NO</span><br><span class="line">         <span class="number">6</span> PDB_SNAP_TEST                  MOUNTED</span><br></pre></td></tr></table></figure><p>注意：在生成 Snapshot 与通过 Snapshot 创建 PDB 过程中，消耗的时间和占据物理资源会很大。</p>]]>
    </content>
    <id>https://www.imxcai.com/database/oracle/ocp-08-pdb-snapshot.html</id>
    <link href="https://www.imxcai.com/database/oracle/ocp-08-pdb-snapshot.html"/>
    <published>2025-01-16T03:52:34.000Z</published>
    <summary>PDB 的快照创建和管理，以及通过快照创建 PDB。</summary>
    <title>OCP-08：PDB 快照</title>
    <updated>2026-10-02T09:35:57.739Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="读书" scheme="https://www.imxcai.com/category/reading/"/>
    <content>
      <![CDATA[<p>在你感觉很丧的时候，不妨阅读阅读这本书吧，作为技术人员总能产生共鸣，总能产生对学习的热情。</p><p>在这时代，学习总是能让人感到有希望有能量。</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/87af56817ba2600eed101ca82654151-768x1024.jpg"></p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/9fab6cca7b77f4cdb7711c4905fe6bb-768x1024.jpg"></p>]]>
    </content>
    <id>https://www.imxcai.com/reading/%E5%B7%A6%E8%80%B3%E5%90%AC%E9%A3%8E-%E4%BC%A0%E5%A5%87%E7%A8%8B%E5%BA%8F%E5%91%98%E7%BB%83%E7%BA%A7%E6%94%BB%E7%95%A5.html</id>
    <link href="https://www.imxcai.com/reading/%E5%B7%A6%E8%80%B3%E5%90%AC%E9%A3%8E-%E4%BC%A0%E5%A5%87%E7%A8%8B%E5%BA%8F%E5%91%98%E7%BB%83%E7%BA%A7%E6%94%BB%E7%95%A5.html"/>
    <published>2025-01-14T07:39:16.000Z</published>
    <summary>
      <![CDATA[<p>在你感觉很丧的时候，不妨阅读阅读这本书吧，作为技术人员总能产生共鸣，总能产生对学习的热情。</p>
<p>在这时代，学习总是能让人感到有希望有能量。</p>
<p><img src="https://image.imxcai.com/wp-content/uploads/2]]>
    </summary>
    <title>左耳听风——传奇程序员练级攻略</title>
    <updated>2026-10-02T09:35:57.743Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="读书" scheme="https://www.imxcai.com/category/reading/"/>
    <category term="Book" scheme="https://www.imxcai.com/tag/book/"/>
    <content>
      <![CDATA[<p>这本书是偶然间在客户办公室休息区看到的，随手翻看了以下目录和内容，觉得很有趣并拍下了书名。 正如书名一样，代码之外的生存指南，也可以理解为技术之外的生存指南，阅读此书，跳出技术本身来看待生活与职业的发展。 在译者序中，很好的概述了书的中心点：</p><span id="more"></span><blockquote><p>如何以“长期主义”心态来规划自己的职业生涯，如何让自己快速有效掌握职业技能，如何持久保持身心健康，如何持续提升自己的行业影响力……</p></blockquote><p><img src="https://www.imxcai.com/wp-content/uploads/2023/11/image-1700714171069.png" alt="file"></p>]]>
    </content>
    <id>https://www.imxcai.com/reading/%E3%80%8A%E8%BD%AF%E6%8A%80%E8%83%BD%EF%BC%9A%E4%BB%A3%E7%A0%81%E4%B9%8B%E5%A4%96%E7%9A%84%E7%94%9F%E5%AD%98%E6%8C%87%E5%8D%97%E3%80%8B.html</id>
    <link href="https://www.imxcai.com/reading/%E3%80%8A%E8%BD%AF%E6%8A%80%E8%83%BD%EF%BC%9A%E4%BB%A3%E7%A0%81%E4%B9%8B%E5%A4%96%E7%9A%84%E7%94%9F%E5%AD%98%E6%8C%87%E5%8D%97%E3%80%8B.html"/>
    <published>2025-01-14T07:27:24.000Z</published>
    <summary>
      <![CDATA[<p>这本书是偶然间在客户办公室休息区看到的，随手翻看了以下目录和内容，觉得很有趣并拍下了书名。 正如书名一样，代码之外的生存指南，也可以理解为技术之外的生存指南，阅读此书，跳出技术本身来看待生活与职业的发展。 在译者序中，很好的概述了书的中心点：</p>]]>
    </summary>
    <title>《软技能：代码之外的生存指南》</title>
    <updated>2026-10-02T09:35:57.742Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="Database" scheme="https://www.imxcai.com/category/database/"/>
    <category term="Oracle" scheme="https://www.imxcai.com/category/database/oracle/"/>
    <category term="Oracle 19C" scheme="https://www.imxcai.com/tag/oracle-19c/"/>
    <content>
      <![CDATA[<p>在 CDB 中，数据字典表和视图定义的元数据仅存储在根目录中。<br>每个 PDB 都有自己的一组数据字典表和视图，用于包含在 PDB 中的数据对象。<br>参考：<a href="https://docs.oracle.com/database/121/ADMIN/cdb/_mon.htm#ADMIN13933">https://docs.oracle.com/database/121/ADMIN/cdb\_mon.htm#ADMIN13933</a></p><span id="more"></span><h2 id="创建-PDB-和应用-PDB"><a href="#创建-PDB-和应用-PDB" class="headerlink" title="创建 PDB 和应用 PDB"></a>创建 PDB 和应用 PDB</h2><p>可以使用多种技术创建 PDB、应用程序容器和应用程序种子。</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250112204829-1024x585.png"></p><p>从 Scratch 创建 PDB</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250112204902.png"></p><p>例子 1：不使用子句创建 PDB</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; alter session <span class="built_in">set</span> pdb_file_name_convert=<span class="string">&#x27;pdbseed&#x27;</span>,<span class="string">&#x27;salpdb1&#x27;</span>;</span><br><span class="line"></span><br><span class="line">Session altered.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; create pluggable database salpdb1 admin user imxcai identified by <span class="number">123</span>;</span><br><span class="line"></span><br><span class="line">Pluggable database created.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; show pdbs;</span><br><span class="line"></span><br><span class="line">    CON_ID CON_NAME                       OPEN MODE  RESTRICTED</span><br><span class="line">---------- ------------------------------ ---------- ----------</span><br><span class="line">         <span class="number">2</span> PDB$SEED                       READ ONLY  NO</span><br><span class="line">         <span class="number">3</span> PDB1                           READ WRITE NO</span><br><span class="line">         <span class="number">4</span> PDB2                           READ WRITE NO</span><br><span class="line">         <span class="number">5</span> SALPDB1                        MOUNTED</span><br></pre></td></tr></table></figure><p>例 2：创建 PDB 并将预定义的 Oracle 角色授予 PDB 管理员</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; alter session <span class="built_in">set</span> pdb_file_name_convert=<span class="string">&#x27;pdbseed&#x27;</span>,<span class="string">&#x27;salpdb2&#x27;</span>;</span><br><span class="line"></span><br><span class="line">Session altered.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; create pluggable database salpdb2 admin user imxcai identified by <span class="number">123</span> roles=(dba);</span><br><span class="line"></span><br><span class="line">Pluggable database created.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; show pdbs;</span><br><span class="line"></span><br><span class="line">    CON_ID CON_NAME                       OPEN MODE  RESTRICTED</span><br><span class="line">---------- ------------------------------ ---------- ----------</span><br><span class="line">         <span class="number">2</span> PDB$SEED                       READ ONLY  NO</span><br><span class="line">         <span class="number">3</span> PDB1                           READ WRITE NO</span><br><span class="line">         <span class="number">4</span> PDB2                           READ WRITE NO</span><br><span class="line">         <span class="number">5</span> SALPDB1                        MOUNTED</span><br><span class="line">         <span class="number">6</span> SALPDB2                        MOUNTED</span><br></pre></td></tr></table></figure><p>例 3：使用 Storage Default TableSpace Path_Prefix 和 File_Name_Convert 子句：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">create pluggable database pdb3 admin user imxcai identified by oracle storage (maxsize 3g)</span><br><span class="line">default tablespace imxcai</span><br><span class="line">datafile <span class="string">&#x27;/u01/app/oracle/oradata/ORCL/pdb3/imxcai01.dbf&#x27;</span> size 200m autoextend ON</span><br><span class="line">path_prefix = <span class="string">&#x27;/u01/app/oracle/oradata/ORCL/pdb3/&#x27;</span></span><br><span class="line">file_name_convert = (<span class="string">&#x27;/u01/app/oracle/oradata/ORCL/pdbseed&#x27;</span>, <span class="string">&#x27;/u01/app/oracle/oradata/ORCL/pdb3&#x27;</span>);</span><br></pre></td></tr></table></figure><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113110248-1024x455.png"></p><p>克隆本地 PDB</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113110710.png"></p><p>方法一：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; alter pluggable database pdb2 <span class="built_in">open</span> read only;</span><br><span class="line"></span><br><span class="line">Pluggable database altered.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; alter session <span class="built_in">set</span> pdb_file_name_convert=<span class="string">&#x27;pdb2&#x27;</span>, <span class="string">&#x27;pdb4&#x27;</span>;</span><br><span class="line"></span><br><span class="line">Session altered.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; create pluggable database pdb4 <span class="keyword">from</span> pdb2;</span><br><span class="line"></span><br><span class="line">Pluggable database created.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; show pdbs;</span><br><span class="line"></span><br><span class="line">    CON_ID CON_NAME                       OPEN MODE  RESTRICTED</span><br><span class="line">---------- ------------------------------ ---------- ----------</span><br><span class="line">         <span class="number">2</span> PDB$SEED                       READ ONLY  NO</span><br><span class="line">         <span class="number">3</span> PDB1                           MOUNTED</span><br><span class="line">         <span class="number">4</span> PDB2                           READ ONLY  NO</span><br><span class="line">         <span class="number">5</span> PDB4                           MOUNTED</span><br><span class="line">         <span class="number">6</span> PDB3                           MOUNTED</span><br></pre></td></tr></table></figure><p>方法二：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">create pluggable database pdb4 <span class="keyword">from</span> pdb2</span><br><span class="line">path_prefix = <span class="string">&#x27;/u01/app/oracle/oradata/ORCL/pdb4/&#x27;</span></span><br><span class="line">file_name_convert = (<span class="string">&#x27;/u01/app/oracle/oradata/ORCL/pdb2/&#x27;</span>,</span><br><span class="line"><span class="string">&#x27;/u01/app/oracle/oradata/ORCL/pdb4/&#x27;</span>)</span><br><span class="line">service_name_convert = (<span class="string">&#x27;pdb2&#x27;</span>,<span class="string">&#x27;pdb4&#x27;</span>) nologging;</span><br></pre></td></tr></table></figure><p>不克隆数据：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">create pluggable database pdb4 <span class="keyword">from</span> pdb2 nodata</span><br><span class="line">path_prefix = <span class="string">&#x27;/u01/app/oracle/oradata/ORCL/pdb4/&#x27;</span></span><br><span class="line">file_name_convert = (<span class="string">&#x27;/u01/app/oracle/oradata/ORCL/pdb2/&#x27;</span>,</span><br><span class="line"><span class="string">&#x27;/u01/app/oracle/oradata/ORCL/pdb4/&#x27;</span>);</span><br></pre></td></tr></table></figure><p>no data 仅对 PDB 中的普通用户数据有效。</p><h3 id="克隆远程-PDB"><a href="#克隆远程-PDB" class="headerlink" title="克隆远程 PDB"></a>克隆远程 PDB</h3><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113111456.png"></p><p>验证字符集与字节序是否一致：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">select * <span class="keyword">from</span> nls_database_parameters where parameter=<span class="string">&#x27;NLS_CHARACTERSET&#x27;</span> <span class="keyword">or</span> parameter=<span class="string">&#x27;NLS_LANGUAGE&#x27;</span> <span class="keyword">or</span> parameter=<span class="string">&#x27;NLS_NCHAR_CHARACTERSET&#x27;</span>;</span><br><span class="line"></span><br><span class="line">select d.inst_id, t.platform_id, t.platform_name, t.endian_format, d.name FROM v$transportable_platform t, gv$database d where t.platform_name = d.platform_name;</span><br></pre></td></tr></table></figure><p>在目标测创建 dblink：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">vim $ORACLE_HOME/network/admin/tnsnames.ora</span><br><span class="line">ORCL10 =</span><br><span class="line">  (DESCRIPTION =</span><br><span class="line">    (ADDRESS = (PROTOCOL = TCP)(HOST = <span class="number">192.168</span><span class="number">.131</span><span class="number">.142</span>)(PORT = <span class="number">1521</span>))</span><br><span class="line">    (CONNECT_DATA =</span><br><span class="line">      (SERVER = DEDICATED)</span><br><span class="line">      (SERVICE_NAME = orcl)</span><br><span class="line">    )</span><br><span class="line">  )</span><br><span class="line"></span><br><span class="line">create database link ora12 connect to system identified by oracle using <span class="string">&#x27;ORCL10&#x27;</span>;</span><br></pre></td></tr></table></figure><p>测试 tnsnames ：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-host2 ~]$ tnsping ORCL10</span><br><span class="line"></span><br><span class="line">TNS Ping Utility <span class="keyword">for</span> Linux: Version <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production on <span class="number">13</span>-JAN-<span class="number">2025</span> <span class="number">14</span>:<span class="number">23</span>:<span class="number">21</span></span><br><span class="line"></span><br><span class="line">Copyright (c) <span class="number">1997</span>, <span class="number">2019</span>, Oracle.  All rights reserved.</span><br><span class="line"></span><br><span class="line">Used parameter files:</span><br><span class="line">/u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/dbhome_1/network/admin/sqlnet.ora</span><br><span class="line"></span><br><span class="line">Used TNSNAMES adapter to resolve the alias</span><br><span class="line">Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oel7-host1.example.com)(PORT = <span class="number">1521</span>)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))</span><br><span class="line">OK (<span class="number">0</span> msec)</span><br></pre></td></tr></table></figure><p>源端授权：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; grant CREATE PLUGGABLE DATABASE,cdb_dba,sysoper to system container=<span class="built_in">all</span>;</span><br><span class="line"></span><br><span class="line">Grant succeeded.</span><br></pre></td></tr></table></figure><p>目标端创建 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">SQL&gt; create database link ora12 connect to system identified by oracle using <span class="string">&#x27;ORCL10&#x27;</span>;</span><br><span class="line"></span><br><span class="line">Database link created.</span><br><span class="line"></span><br><span class="line">SQL&gt; create pluggable database pdb2 <span class="keyword">from</span> pdb@ora12</span><br><span class="line">path_prefix = <span class="string">&#x27;/u01/app/oracle/oradata/ORCL/pdb2&#x27;</span></span><br><span class="line">file_name_convert = (<span class="string">&#x27;/u01/app/oracle/oradata/ORCL/PDB/&#x27;</span>,</span><br><span class="line"><span class="string">&#x27;/u01/app/oracle/oradata/ORCL/pdb2&#x27;</span>);  <span class="number">2</span>    <span class="number">3</span>    <span class="number">4</span></span><br><span class="line"></span><br><span class="line">Pluggable database created</span><br></pre></td></tr></table></figure><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113141818-1024x479.png"></p><p>克隆非 CDB</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113141841.png"></p><p>目标端创建 dblink：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">vim $ORACLE_HOME/network/admin/tnsnames.ora</span><br><span class="line">NCDB =</span><br><span class="line">  (DESCRIPTION =</span><br><span class="line">    (ADDRESS = (PROTOCOL = TCP)(HOST = oel7-host1.example.com)(PORT = <span class="number">1521</span>))</span><br><span class="line">    (CONNECT_DATA =</span><br><span class="line">      (SERVER = DEDICATED)</span><br><span class="line">      (SERVICE_NAME = ncdb)</span><br><span class="line">    )</span><br><span class="line">  )</span><br><span class="line"></span><br><span class="line">create database link ora13 connect to system identified by oracle using <span class="string">&#x27;NCDB&#x27;</span>;</span><br></pre></td></tr></table></figure><p>创建 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">create pluggable database pdb3 <span class="keyword">from</span> ncdb@ora13</span><br><span class="line"></span><br><span class="line">file_name_convert = (<span class="string">&#x27;/u01/app/oracle/oradata/NCDB/&#x27;</span>,</span><br><span class="line"></span><br><span class="line"><span class="string">&#x27;/u01/app/oracle/oradata/ORCL/pdb3/&#x27;</span>);</span><br></pre></td></tr></table></figure><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113143514.png"></p><p>运行 <code>noncdb_to_pdb.sql</code> 脚本：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">alter session <span class="built_in">set</span> container=pdb3;</span><br><span class="line"><span class="meta">@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql</span></span><br></pre></td></tr></table></figure><h3 id="Relocating-a-PDB"><a href="#Relocating-a-PDB" class="headerlink" title="Relocating a PDB"></a>Relocating a PDB</h3><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113150812.png"></p><p>将 PDB 移动到其它 CDB，当目标 PDB 由于 <code>alter pluggable database open</code> 而联机时，Oracle 数据库将终止会话并关闭源 PDB。<br>此技术是在最少停机时间或没有停机时间的情况下移动 PDB 的最快方法，而拔出源 PDB 会导致 PDB 中断，在 relocation 期间，源 PDB 可以以 read&#x2F;write 模式打开并且功能齐全。<br>源 CDB 和目标 CDB 的平台必须满足以下要求：</p><ul><li>必须既有相同的字节序</li><li>源和目标平台上安装的数据库选项必须相同</li><li>如果目标 CDB 的字符集不是 AL32UTF8，则源 CDB 和目标 CDB 必须具有兼容的字符集和国家字符集</li><li>源 CDB 必须处于本地 undo 模式</li><li>PDB 名称要一致</li></ul><p>验证是否处于本地 undo 模式：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">select property_name,property_value <span class="keyword">from</span> database_properties where property_name=<span class="string">&#x27;LOCAL_UNDO_ENABLED&#x27;</span>;</span><br></pre></td></tr></table></figure><p>兼容性检查，在源端生成 PDB 的 xml 文件：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">beg indbms_pdb.describe(</span><br><span class="line">pdb_descr_file=&gt;<span class="string">&#x27;/home/oracle/db1.xml&#x27;</span>,</span><br><span class="line">pdb_name=&gt;<span class="string">&#x27;pdb&#x27;</span>);</span><br><span class="line">end;</span><br><span class="line">/</span><br></pre></td></tr></table></figure><p>将 db1.xml 复制到目标主机，然后进行检查：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">set</span> serveroutput on</span><br><span class="line">declare</span><br><span class="line">compatible constant varchar2(<span class="number">3</span>):=</span><br><span class="line"><span class="keyword">case</span> dbms_pdb.check_plug_compatibility(</span><br><span class="line">pdb_descr_file=&gt;<span class="string">&#x27;/home/oracle/db1.xml&#x27;</span>,</span><br><span class="line">pdb_name=&gt;<span class="string">&#x27;pdb&#x27;</span>)</span><br><span class="line">WHEN TRUE THEN <span class="string">&#x27;YES&#x27;</span></span><br><span class="line">ELSE <span class="string">&#x27;NO&#x27;</span></span><br><span class="line">end;</span><br><span class="line">begin dbms_output.put_line(compatible);</span><br><span class="line">end;</span><br><span class="line">/</span><br></pre></td></tr></table></figure><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113155138-1.png"></p><p>源库打开：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">alter pluggable database PDB <span class="built_in">open</span>;</span><br></pre></td></tr></table></figure><p>目标端需要创建 dblink :</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">vim $ORACLE_HOME/network/admin/tnsnames.ora</span><br><span class="line">MYDB =</span><br><span class="line">  (DESCRIPTION =</span><br><span class="line">    (ADDRESS = (PROTOCOL = TCP)(HOST = oel7-host1.example.com)(PORT = <span class="number">1521</span>))</span><br><span class="line">    (CONNECT_DATA =</span><br><span class="line">      (SERVER = DEDICATED)</span><br><span class="line">      (SERVICE_NAME = mydb)</span><br><span class="line">    )</span><br><span class="line">  )</span><br><span class="line"></span><br><span class="line">create database link mydb1 connect to system identified by oracle using <span class="string">&#x27;MYDB&#x27;</span>;</span><br></pre></td></tr></table></figure><p>创建 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">create pluggable database db1 <span class="keyword">from</span> db1@mydb1 relocate availability <span class="built_in">max</span> FILE_NAME_CONVERT=(<span class="string">&#x27;/u01/app/oracle/oradata/MYDB/DB1/&#x27;</span>,<span class="string">&#x27;/u01/app/oracle/oradata/ORCL/DB1/&#x27;</span>);</span><br></pre></td></tr></table></figure><p>如果出现以下提示，则表明没有权限：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113163013-1024x220.png"></p><p>源端授权：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">grant create pluggable database,cdb_dba,sysoper to system container=<span class="built_in">all</span>;</span><br></pre></td></tr></table></figure><p>如果出现 ORA-65348 代表源目标 PDB 与目标 PDB 名称不同：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-host2 dbhome_1]$ oerr ora <span class="number">65348</span></span><br><span class="line"><span class="number">65348</span>, <span class="number">00000</span>, <span class="string">&quot;unable to create pluggable database&quot;</span></span><br><span class="line">// *Cause:  An attempt was made to relocate a pluggable database <span class="keyword">with</span></span><br><span class="line">//          availability <span class="built_in">max</span> clause using a target pluggable database name</span><br><span class="line">//          which <span class="keyword">is</span> different <span class="keyword">from</span> source pluggable database name.</span><br><span class="line">// *Action: Use source pluggable database name <span class="keyword">as</span> the target pluggable database</span><br><span class="line">//          name.</span><br><span class="line">//</span><br></pre></td></tr></table></figure><p>创建成功之后的状态：<br>目标：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113163145-1024x299.png"></p><p>源：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113163211.png"></p><p>可以看到源处于 OPEN，目标处于 MOUNTED。<br>接下来启动目标中的 DB1，同时验证源 PDB 的状态：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113163211-1.png"></p><p>源 PDB 的状态，由 OPEN 转为 MOUNTED：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113163411.png"></p><h3 id="拔出和插入-PDB"><a href="#拔出和插入-PDB" class="headerlink" title="拔出和插入 PDB"></a>拔出和插入 PDB</h3><p>将拔出的 PDB 插入 CDB 来创建 PDB，使用描述 PDB 的 XML 元数据文件与 PDB 相关联的文件将其插入 CDB 。</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113163937.png"></p><p>示例一：使用 NOCPY 子句插入拔出的 PDB</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">alter pluggable database pdb1 close immediate;</span><br><span class="line">alter pluggable database pdb1 unplug into <span class="string">&#x27;/home/oracle/pdb1.xml&#x27;</span>;</span><br><span class="line">drop pluggable database pdb1 keep datafiles;</span><br></pre></td></tr></table></figure><p>此时 PDB1 已经移除了：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113164612-1.png"></p><p>重新插入 PDB1：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">create pluggable database pdb1 using <span class="string">&#x27;/home/oracle/pdb1.xml&#x27;</span> nocopy tempfile reuse;</span><br></pre></td></tr></table></figure><p>示例二：使用 AS CLONE 和 NOCOPY 子句插入拔出的 PDB</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">alter pluggable database pdb2 close immediate;</span><br><span class="line">alter pluggable database pdb2 unplug into <span class="string">&#x27;/home/oracle/pdb2.xml&#x27;</span>;</span><br><span class="line">drop pluggable database pdb2 keep datafiles;</span><br><span class="line">create pluggable database salespdb <span class="keyword">as</span> clone using <span class="string">&#x27;/home/oracle/pdb2.xml&#x27;</span> nocopy tempfile reuse;</span><br></pre></td></tr></table></figure><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113165238.png"></p><h3 id="示例三：使用-source-file-name-convert-nocopy-和-storage-子句拔出和插入-PDB"><a href="#示例三：使用-source-file-name-convert-nocopy-和-storage-子句拔出和插入-PDB" class="headerlink" title="示例三：使用 source_file_name_convert nocopy 和 storage 子句拔出和插入 PDB"></a>示例三：使用 source_file_name_convert nocopy 和 storage 子句拔出和插入 PDB</h3><p>首先依旧是导出 xml 文件然后删除 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">alter pluggable database pdb3 close immediate;</span><br><span class="line">alter pluggable database pdb3 unplug into <span class="string">&#x27;/home/oracle/pdb3.xml&#x27;</span>;</span><br><span class="line">drop pluggable database pdb3 keep datafiles;</span><br></pre></td></tr></table></figure><p>接下来创建数据存放目录，并将数据拷贝或移动到新位置：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">mkdir /u01/app/oracle/oradata/ORCL/sales01</span><br><span class="line">mv /u01/app/oracle/oradata/ORCL/pdb3/* /u01/app/oracle/oradata/ORCL/sales01</span><br></pre></td></tr></table></figure><p>插入 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">create pluggable database sales01 using <span class="string">&#x27;/home/oracle/pdb3.xml&#x27;</span> source_file_name_convert=(<span class="string">&#x27;/u01/app/oracle/oradata/ORCL/pdb3/&#x27;</span>, <span class="string">&#x27;/u01/app/oracle/oradata/ORCL/sales01/&#x27;</span>) nocopy storage (maxsize 5g) tempfile reuse;</span><br></pre></td></tr></table></figure><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113170247-1024x293.png"></p><h3 id="示例四：使用-COPY-PATH-PREFIX-和-FILE-NAME-CONVERT-子句拔出和插入-PDB"><a href="#示例四：使用-COPY-PATH-PREFIX-和-FILE-NAME-CONVERT-子句拔出和插入-PDB" class="headerlink" title="示例四：使用 COPY PATH_PREFIX 和 FILE_NAME_CONVERT 子句拔出和插入 PDB"></a>示例四：使用 COPY PATH_PREFIX 和 FILE_NAME_CONVERT 子句拔出和插入 PDB</h3><p>与示例三的区别在于不用手动复制数据到新的目录中。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">alter pluggable database pdb1 close immediate;</span><br><span class="line">alter pluggable database pdb1 unplug into <span class="string">&#x27;/home/oracle/orcl_pdb1.xml&#x27;</span>;</span><br><span class="line">drop pluggable database pdb1 keep datafiles;</span><br></pre></td></tr></table></figure><p>创建 PDB 目录：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mkdir /u01/app/oracle/oradata/ORCL/sales02</span><br></pre></td></tr></table></figure><p>插入 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">create pluggable database sales02 using <span class="string">&#x27;/home/oracle/orcl_pdb1.xml&#x27;</span> copy path_prefix = <span class="string">&#x27;/u01/app/oracle/oradata/ORCL/PDB1/&#x27;</span> file_name_convert = (<span class="string">&#x27;/u01/app/oracle/oradata/ORCL/PDB1&#x27;</span>,<span class="string">&#x27;/u01/app/oracle/oradata/ORCL/sales02/&#x27;</span>);</span><br></pre></td></tr></table></figure><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113170917-1024x313.png"></p><h3 id="将非-CDB-当作-PDB-插入到-CDB-中"><a href="#将非-CDB-当作-PDB-插入到-CDB-中" class="headerlink" title="将非 CDB 当作 PDB 插入到 CDB 中"></a>将非 CDB 当作 PDB 插入到 CDB 中</h3><p>CDB 与非 CDB 在同一台主机。</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113171339.png"></p><p>非 CDB 处于事务一致状态，并将其置于只读模式：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">startup <span class="built_in">open</span> read only</span><br></pre></td></tr></table></figure><p>非 CDB 的 XML 文件：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">begin</span><br><span class="line">dbms_pdb.describe(</span><br><span class="line">pdb_descr_file =&gt; <span class="string">&#x27;/home/oracle/ncdb.xml&#x27;</span>);end;</span><br><span class="line">/</span><br></pre></td></tr></table></figure><p>在 CDB 数据库中确认是否兼容：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">SET SERVEROUTPUT ON</span><br><span class="line">declare</span><br><span class="line">compatible constant varchar2(<span class="number">3</span>) :=</span><br><span class="line"><span class="keyword">case</span> dbms_pdb.check_plug_compatibility(pdb_descr_file =&gt;</span><br><span class="line"><span class="string">&#x27;/home/oracle/ncdb.xml&#x27;</span>,pdb_name =&gt; <span class="string">&#x27;NCDB&#x27;</span>)</span><br><span class="line">when true then <span class="string">&#x27;yes&#x27;</span></span><br><span class="line"><span class="keyword">else</span> <span class="string">&#x27;no&#x27;</span></span><br><span class="line">end;</span><br><span class="line">begin</span><br><span class="line">dbms_output.put_line(compatible);</span><br><span class="line">end;</span><br><span class="line">/</span><br></pre></td></tr></table></figure><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113171900.png"></p><p>返回 <code>yes</code> 说明兼容。</p><p>关闭非 CDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">shutdown immediate</span><br></pre></td></tr></table></figure><p>创建目录：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-host1 ~]$ mkdir /u01/app/oracle/oradata/MYDB/ncdb</span><br></pre></td></tr></table></figure><p>插入非 CDB，将文件复制到新位置：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">create pluggable database ncdb using <span class="string">&#x27;/home/oracle/ncdb.xml&#x27;</span></span><br><span class="line">copy</span><br><span class="line">file_name_convert = (<span class="string">&#x27;/u01/app/oracle/oradata/NCDB/&#x27;</span>,</span><br><span class="line"><span class="string">&#x27;/u01/app/oracle/oradata/MYDB/ncdb/&#x27;</span>);</span><br></pre></td></tr></table></figure><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113172230.png"></p><p>必须先运行脚本，才能首次打开 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">alter session <span class="built_in">set</span> container=ncdb;</span><br><span class="line"><span class="meta">@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql</span></span><br></pre></td></tr></table></figure><p>转换完成就可以启动了：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250113172749.png"></p>]]>
    </content>
    <id>https://www.imxcai.com/database/oracle/ocp-07-cdb-pdb-create_and_clone.html</id>
    <link href="https://www.imxcai.com/database/oracle/ocp-07-cdb-pdb-create_and_clone.html"/>
    <published>2025-01-13T09:45:22.000Z</published>
    <summary>CDB PDB 的管理，通过多种方式创建和克隆 PDB，将 NonCDB 插入 PDB。</summary>
    <title>OCP-07：CDB PDB 的创建与克隆</title>
    <updated>2026-10-02T09:35:57.739Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="Database" scheme="https://www.imxcai.com/category/database/"/>
    <category term="Oracle" scheme="https://www.imxcai.com/category/database/oracle/"/>
    <category term="Oracle 19C" scheme="https://www.imxcai.com/tag/oracle-19c/"/>
    <content>
      <![CDATA[<p>容器是多租户容器数据库(CDB)中模式、对象和相关结构的集合，在逻辑上应用程序将其显示为单独的数据库。<br>在 CDB 中，每个容器都有一个唯一的 ID 和名称，ROOT 和每个 PDB 都被视为一个容器。<br>PDB 隔离数据和操作，从用户或应用的角度来看，每个 PDB 看起来都是独立的数据库。</p><span id="more"></span><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250111113226.png"></p><h2 id="CDB-ROOT-容器"><a href="#CDB-ROOT-容器" class="headerlink" title="CDB ROOT 容器"></a>CDB ROOT 容器</h2><p>ROOT 容器是所有 PDB 所属的模式、模式对象和非模式对象的集合。<br>每个 CDB 有且只有一个 ROOT 容器，被命名为 <code>CDB$ROOT</code>，用于存储管理 PDB 所需的系统元数据。</p><h2 id="PDB"><a href="#PDB" class="headerlink" title="PDB"></a>PDB</h2><p>PDB 是用户创建的一组模式、对象和相关结构，在逻辑上对应用显示为单独的数据库。<br>每个 PDB 都归 <code>sys</code> 所有，<code>sys</code> 是 CDB 中的一个公共用户。</p><p>使用 PDB 可以实现以下目标：</p><ul><li>存储特定应用程序的数据</li><li>将数据移动到其它 CDB</li><li>在 PDB 中隔离授权</li></ul><p>PDB 有单独的名称空间，对以下结构有影响：</p><ul><li>模式：一个 PDB 中包含的架构可能与另一个 PDB 中的架构同名，这两个模式可以表示不同的本地用户。</li><li>对象：对象必须在 PDB 中具有唯一名称，而不是在 CDB 中的所有容器。</li></ul><p>应用程序容器是 CDB 中一个可选的、用户创建的容器，用于存储一个或多个应用程序的数据和元数据，一个应用程序容器可以包含多个应用程序 PDB，并允许这些 PDB 共享元数据和数据。</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250111114537.png"></p><p>多租户体系结构的好处：</p><ul><li>降低成本（共享进程、共享系统资源）</li><li>更容易和更快速的数据和代码的移动</li><li>更轻松管理和监控物理数据库</li><li>分离数据和代码</li><li>安全分离管理权限</li><li>轻松性能调优</li></ul><p>多租户体系结构对管理性的好处：</p><ul><li>更容易升级数据和代码</li><li>更容易在服务器之间迁移</li><li>防止 PDB 中的数据损坏</li><li>能够在一个地方安装、管理和升级特定于应用程序的数据和元数据</li></ul><h2 id="CDB-中表空间和数据文件"><a href="#CDB-中表空间和数据文件" class="headerlink" title="CDB 中表空间和数据文件"></a>CDB 中表空间和数据文件</h2><p>CDB 的结构与非 CDB 相同，只是每个 PDB 都有自己的表空间集，包括自己的 SYSTEM、SYSAUX 和 undo 表空间。</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250111115554.png"></p><h2 id="CDB-和-PDB-管理"><a href="#CDB-和-PDB-管理" class="headerlink" title="CDB 和 PDB 管理"></a>CDB 和 PDB 管理</h2><p>查看数据是否为 CDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; select cdb <span class="keyword">from</span> v$database;</span><br><span class="line"></span><br><span class="line">CDB</span><br><span class="line">---</span><br><span class="line">YES</span><br></pre></td></tr></table></figure><p>创建 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; create pluggable database PDB3 admin user imxcai identified by <span class="number">123</span>;</span><br><span class="line"></span><br><span class="line">Pluggable database created.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; show pdbs;</span><br><span class="line"></span><br><span class="line">    CON_ID CON_NAME                       OPEN MODE  RESTRICTED</span><br><span class="line">---------- ------------------------------ ---------- ----------</span><br><span class="line">         <span class="number">2</span> PDB$SEED                       READ ONLY  NO</span><br><span class="line">         <span class="number">3</span> PDB1                           READ WRITE NO</span><br><span class="line">         <span class="number">4</span> PDB2                           READ WRITE NO</span><br><span class="line">         <span class="number">5</span> PDB3                           MOUNTED</span><br></pre></td></tr></table></figure><p>查询状态：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; col pdb_name <span class="built_in">format</span> a15</span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; select pdb_name,status <span class="keyword">from</span> cdb_pdbs;</span><br><span class="line"></span><br><span class="line">PDB_NAME        STATUS</span><br><span class="line">--------------- ----------</span><br><span class="line">PDB1            NORMAL</span><br><span class="line">PDB$SEED        NORMAL</span><br><span class="line">PDB2            NORMAL</span><br><span class="line">PDB3            NORMAL</span><br></pre></td></tr></table></figure><p>如果状态为 <code>NEED SYNC</code> ，则需允许<br>为 PDB 修改名称：<br>要修改名称的 PDB 一定要处于 <code>opend restricted</code> 状态。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; select name,open_mode <span class="keyword">from</span> v$pdbs;</span><br><span class="line"></span><br><span class="line">NAME            OPEN_MODE</span><br><span class="line">--------------- ----------</span><br><span class="line">PDB$SEED        READ ONLY</span><br><span class="line">PDB1            READ WRITE</span><br><span class="line">PDB2            READ WRITE</span><br><span class="line">PDB3            READ WRITE</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; alter pluggable database PDB3 close immediate;</span><br><span class="line"></span><br><span class="line">Pluggable database altered.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; alter pluggable database PDB3 <span class="built_in">open</span> restricted;</span><br><span class="line"></span><br><span class="line">Pluggable database altered.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; select name,restricted <span class="keyword">from</span> v$pdbs;</span><br><span class="line"></span><br><span class="line">NAME            RES</span><br><span class="line">--------------- ---</span><br><span class="line">PDB$SEED        NO</span><br><span class="line">PDB1            NO</span><br><span class="line">PDB2            NO</span><br><span class="line">PDB3            YES</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; conn sys/oracle@localhost:<span class="number">1521</span>/PDB3 <span class="keyword">as</span> sysdba</span><br><span class="line">Connected.</span><br><span class="line">SYS@localhost:<span class="number">1521</span>/PDB3(PDB3)&gt; alter pluggable database PDB3 rename global_name to PDB3_new;</span><br><span class="line"></span><br><span class="line">Pluggable database altered.</span><br><span class="line"></span><br><span class="line">SYS@localhost:<span class="number">1521</span>/PDB3(PDB3)&gt; alter pluggable database close immediate;</span><br><span class="line"></span><br><span class="line">Pluggable database altered.</span><br><span class="line"></span><br><span class="line">SYS@localhost:<span class="number">1521</span>/PDB3(PDB3)&gt; conn / <span class="keyword">as</span> sysdba</span><br><span class="line">Connected.</span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; alter pluggable database PDB3_new <span class="built_in">open</span>;</span><br><span class="line">Pluggable database altered.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; select name, open_mode <span class="keyword">from</span> v$pdbs;</span><br><span class="line"></span><br><span class="line">NAME            OPEN_MODE</span><br><span class="line">--------------- ----------</span><br><span class="line">PDB$SEED        READ ONLY</span><br><span class="line">PDB1            READ WRITE</span><br><span class="line">PDB2            READ WRITE</span><br><span class="line">PDB3_NEW        READ WRITE</span><br></pre></td></tr></table></figure><p>PDB 删除：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; alter pluggable database PDB3_NEW close immediate;</span><br><span class="line"></span><br><span class="line">Pluggable database altered.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; drop pluggable database PDB3_NEW including datafiles;</span><br><span class="line"></span><br><span class="line">Pluggable database dropped.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; select name,open_mode <span class="keyword">from</span> v$pdbs;</span><br><span class="line"></span><br><span class="line">NAME            OPEN_MODE</span><br><span class="line">--------------- ----------</span><br><span class="line">PDB$SEED        READ ONLY</span><br><span class="line">PDB1            READ WRITE</span><br><span class="line">PDB2            READ WRITE</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://www.imxcai.com/database/oracle/ocp-06-multi-tenant-architecture.html</id>
    <link href="https://www.imxcai.com/database/oracle/ocp-06-multi-tenant-architecture.html"/>
    <published>2025-01-11T08:21:03.000Z</published>
    <summary>Oracle 数据库在 19C 中引入了多租户的概念，有了 CDB 和 PDB 组件。</summary>
    <title>OCP-06：多租户架构</title>
    <updated>2025-01-11T08:22:39.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="Database" scheme="https://www.imxcai.com/category/database/"/>
    <category term="Oracle" scheme="https://www.imxcai.com/category/database/oracle/"/>
    <category term="Oracle 19C" scheme="https://www.imxcai.com/tag/oracle-19c/"/>
    <content>
      <![CDATA[<p>通过设置 Systemd unit 实现数据库开机自启。<br>首先需要修改 <code>/etc/oratab</code>：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ORCLCDB:/opt/oracle/product/19c/dbhome_1:Y</span><br></pre></td></tr></table></figure><p>设置为 <code>Y</code> 意味着可以使用 <code>dbstart</code> 脚本来启动数据库。<br>随后通过使用 <code>dbstart</code> 和 <code>dbshut</code> 脚本测试能否启动数据库：</p><span id="more"></span><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-<span class="number">3</span> ~]$ $ORACLE_HOME/<span class="built_in">bin</span>/dbstart $ORACLE_HOME</span><br><span class="line">Processing Database instance <span class="string">&quot;ORCLCDB&quot;</span>: log file /opt/oracle/product/19c/dbhome_1/rdbms/log/startup.log</span><br><span class="line">[oracle@oel7-<span class="number">3</span> ~]$ cat /opt/oracle/product/19c/dbhome_1/rdbms/log/startup.log</span><br><span class="line"></span><br><span class="line">/opt/oracle/product/19c/dbhome_1/<span class="built_in">bin</span>/dbstart: Starting up database <span class="string">&quot;ORCLCDB&quot;</span></span><br><span class="line">Thu Jan  <span class="number">9</span> <span class="number">10</span>:<span class="number">10</span>:<span class="number">37</span> CST <span class="number">2025</span></span><br><span class="line"></span><br><span class="line">SQL*Plus: Release <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production on Thu Jan <span class="number">9</span> <span class="number">10</span>:<span class="number">10</span>:<span class="number">37</span> <span class="number">2025</span></span><br><span class="line">Version <span class="number">19.3</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span></span><br><span class="line"></span><br><span class="line">Copyright (c) <span class="number">1982</span>, <span class="number">2019</span>, Oracle.  All rights reserved.</span><br><span class="line"></span><br><span class="line">SQL&gt; Connected to an idle instance.</span><br><span class="line">SQL&gt; ORACLE instance started.</span><br><span class="line"></span><br><span class="line">Total System Global Area <span class="number">1660941720</span> <span class="built_in">bytes</span></span><br><span class="line">Fixed Size                  <span class="number">9135512</span> <span class="built_in">bytes</span></span><br><span class="line">Variable Size             <span class="number">989855744</span> <span class="built_in">bytes</span></span><br><span class="line">Database Buffers          <span class="number">654311424</span> <span class="built_in">bytes</span></span><br><span class="line">Redo Buffers                <span class="number">7639040</span> <span class="built_in">bytes</span></span><br><span class="line">Database mounted.</span><br><span class="line">Database opened.</span><br><span class="line">SQL&gt; Disconnected <span class="keyword">from</span> Oracle Database 19c Enterprise Edition Release <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production</span><br><span class="line">Version <span class="number">19.3</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span></span><br><span class="line"></span><br><span class="line">/opt/oracle/product/19c/dbhome_1/<span class="built_in">bin</span>/dbstart: Database instance <span class="string">&quot;ORCLCDB&quot;</span> warm started.</span><br><span class="line"></span><br><span class="line">[oracle@oel7-<span class="number">3</span> ~]$ $ORACLE_HOME/<span class="built_in">bin</span>/dbshut $ORACLE_HOME</span><br><span class="line">Processing Database instance <span class="string">&quot;ORCLCDB&quot;</span>: log file /opt/oracle/product/19c/dbhome_1/rdbms/log/shutdown.log</span><br><span class="line">[oracle@oel7-<span class="number">3</span> ~]$ cat /opt/oracle/product/19c/dbhome_1/rdbms/log/shutdown.log</span><br><span class="line"></span><br><span class="line">SQL*Plus: Release <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production on Thu Jan <span class="number">9</span> <span class="number">10</span>:<span class="number">11</span>:09 <span class="number">2025</span></span><br><span class="line">Version <span class="number">19.3</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span></span><br><span class="line"></span><br><span class="line">Copyright (c) <span class="number">1982</span>, <span class="number">2019</span>, Oracle.  All rights reserved.</span><br><span class="line"></span><br><span class="line">SQL&gt; Connected.</span><br><span class="line">SQL&gt; Database closed.</span><br><span class="line">Database dismounted.</span><br><span class="line">ORACLE instance shut down.</span><br><span class="line">SQL&gt; Disconnected <span class="keyword">from</span> Oracle Database 19c Enterprise Edition Release <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production</span><br><span class="line">Version <span class="number">19.3</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span></span><br><span class="line">Database instance <span class="string">&quot;ORCLCDB&quot;</span> shut down.</span><br></pre></td></tr></table></figure><p>通过日志可以看到数据库实例可以正常的启动和停止，接下来编写 Systemd Unit 文件。<br>创建 <code>/etc/systemd/system/oracle19c.service</code> 单元文件：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># /etc/systemd/system/oracle19c.service</span></span><br><span class="line">[Unit]</span><br><span class="line">Description=Oracle 19C</span><br><span class="line">After=syslog.target network.target</span><br><span class="line"></span><br><span class="line">[Service]</span><br><span class="line">LimitMEMLOCK=infinity</span><br><span class="line">LimitNOFILE=<span class="number">65535</span></span><br><span class="line"><span class="type">Type</span>=oneshot</span><br><span class="line">RemainAfterExit=yes</span><br><span class="line">User=oracle</span><br><span class="line">ExecStart=/opt/oracle/product/19c/dbhome_1/<span class="built_in">bin</span>/dbstart /opt/oracle/product/19c/dbhome_1</span><br><span class="line">ExecStop=/opt/oracle/product/19c/dbhome_1/<span class="built_in">bin</span>/dbshut /opt/oracle/product/19c/dbhome_1</span><br><span class="line"></span><br><span class="line">[Install]</span><br><span class="line">WantedBy=multi-user.target</span><br></pre></td></tr></table></figure><p>修改了 Systemd 单元文件需要 reload：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl daemon-reload</span><br></pre></td></tr></table></figure><p>设置为开启自启：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">systemctl enable --now oracle19c.service</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://www.imxcai.com/database/oracle/ocp-05-oracle-database-start-onboot.html</id>
    <link href="https://www.imxcai.com/database/oracle/ocp-05-oracle-database-start-onboot.html"/>
    <published>2025-01-10T03:28:25.000Z</published>
    <summary>使用 systemd 将 Oracle 数据库设置为开机自动启动</summary>
    <title>OCP-05：Oracle Database 设置开机自启</title>
    <updated>2025-01-11T08:22:48.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="Database" scheme="https://www.imxcai.com/category/database/"/>
    <category term="Oracle" scheme="https://www.imxcai.com/category/database/oracle/"/>
    <category term="Oracle 19C" scheme="https://www.imxcai.com/tag/oracle-19c/"/>
    <content>
      <![CDATA[<p>Oracle 目录<br>Oracle 软件安装完成后，一些重要的目录：</p><table><thead><tr><th>目录名</th><th>用途</th></tr></thead><tbody><tr><td><code>$ORACLE_BASE/admin</code></td><td>保存数据库的管理信息和日志信息</td></tr><tr><td><code>$ORACLE_BASE/oradata</code></td><td>数据库数据文件、控制文件、索引文件等，真正存放数据的位置</td></tr><tr><td><code>$ORACLE_HOME</code></td><td>包含软件运行有关的子目录和网络文件以及选定的组件等</td></tr><tr><td><code>$ORACLE_HOME/bin</code></td><td>包含用于数据库管理的各种命令</td></tr><tr><td><code>$ORACLE_HOME/dbs</code></td><td>存放数据库服务器端的参数文件 spfile</td></tr><tr><td><code>$ORACLE_HOME/css</code></td><td>Oracle Cluster Synchronization 服务有关的文件</td></tr><tr><td><code>$ORACLE_HOME/demo</code></td><td>存放数据库实例模型的脚本</td></tr><tr><td><code>$ORACLE_HOME/install</code></td><td>存放 Oracle 安装后的端口号</td></tr><tr><td><code>$ORACLE_HOME/network</code></td><td>监听器 listener.ora 和 sqlnet.ora 以及 tnsnames.ora 等</td></tr></tbody></table><span id="more"></span><h2 id="Oracle-连接方式"><a href="#Oracle-连接方式" class="headerlink" title="Oracle 连接方式"></a>Oracle 连接方式</h2><p>有多种连接方式。</p><ol><li>使用操作系统验证方式，只需登录到系统中的 <code>oracle</code> 用户</li></ol><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7 ~]$ sqlplus / <span class="keyword">as</span> sysdba</span><br></pre></td></tr></table></figure><ol start="2"><li>使用 easy connect 方式连接：</li></ol><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7 ~]$ sqlplus sys/oracle@oel7:<span class="number">1521</span>/orcl <span class="keyword">as</span> sysdba</span><br></pre></td></tr></table></figure><p>低版本的客户端会出现 ORA-28040: No matching authentication protocol ，在 <code>oracle</code> 用户下，在 <code>$ORACLE_HOME/network/admin/sqlnet.ora</code> 文件中添加两行：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">SQLNET.ALLOWED_LOGON_VERSION_SERVER=<span class="number">8</span></span><br><span class="line">SQLNET.ALLOWED_LOGON_VERSION_CLIENT=<span class="number">8</span> </span><br></pre></td></tr></table></figure><p>ORA 28040 详细说明：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7 ~]$ oerr ORA <span class="number">28040</span></span><br><span class="line"><span class="number">28040</span>, <span class="number">0000</span>, <span class="string">&quot;No matching authentication protocol&quot;</span></span><br><span class="line">// *Cause:  There was no acceptable authentication protocol <span class="keyword">for</span></span><br><span class="line">//          either client <span class="keyword">or</span> server.</span><br><span class="line">// *Action: The administrator should <span class="built_in">set</span> the values of the</span><br><span class="line">//          SQLNET.ALLOWED_LOGON_VERSION_SERVER <span class="keyword">and</span></span><br><span class="line">//          SQLNET.ALLOWED_LOGON_VERSION_CLIENT parameters, on both the</span><br><span class="line">//          client <span class="keyword">and</span> on the server, to values that <span class="keyword">match</span> the minimum</span><br><span class="line">//          version software supported <span class="keyword">in</span> the system.</span><br><span class="line">//          This error <span class="keyword">is</span> also raised when the client <span class="keyword">is</span> authenticating to</span><br><span class="line">//          a user account which was created without a verifier suitable <span class="keyword">for</span></span><br><span class="line">//          the client software version. In this situation, that accoun<span class="string">t&#x27;s</span></span><br><span class="line"><span class="string">//          password must be reset, in order for the required verifier to</span></span><br><span class="line"><span class="string">//          be generated and allow authentication to proceed successfully.</span></span><br></pre></td></tr></table></figure><ol start="3"><li>使用 TNS 方式连接，需要使用 <code>netmgr</code> 配置网络服务名</li></ol><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7 ~]$ sqlplus sys/oracle@orcl <span class="keyword">as</span> sysdba</span><br></pre></td></tr></table></figure><p>需要配置 <code>$ORACLE_HOME/network/admin/tnsnames.ora</code> 文件：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">ORCL =</span><br><span class="line">  (DESCRIPTION =</span><br><span class="line">    (ADDRESS = (PROTOCOL = TCP)(HOST = oel7)(PORT = <span class="number">1521</span>))</span><br><span class="line">    (CONNECT_DATA =</span><br><span class="line">      (SERVER = DEDICATED)</span><br><span class="line">      (SERVICE_NAME = orcl)</span><br><span class="line">    )</span><br><span class="line">  )</span><br></pre></td></tr></table></figure><p>测试 TNS：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7 ~]$ tnsping orcl</span><br><span class="line"></span><br><span class="line">TNS Ping Utility <span class="keyword">for</span> Linux: Version <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production on 05-JAN-<span class="number">2025</span> <span class="number">14</span>:<span class="number">12</span>:<span class="number">29</span></span><br><span class="line"></span><br><span class="line">Copyright (c) <span class="number">1997</span>, <span class="number">2019</span>, Oracle.  All rights reserved.</span><br><span class="line"></span><br><span class="line">Used parameter files:</span><br><span class="line"></span><br><span class="line">Used TNSNAMES adapter to resolve the alias</span><br><span class="line">Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oel7)(PORT = <span class="number">1521</span>)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))</span><br><span class="line">OK (<span class="number">0</span> msec)</span><br></pre></td></tr></table></figure><h2 id="数据库删除"><a href="#数据库删除" class="headerlink" title="数据库删除"></a>数据库删除</h2><p>数据库删除也有多种方式。</p><p>使用 <code>dbca</code> 删除数据库：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250105141410.png"></p><p>第二种是通过 <code>drop database</code> 进行数据库删除，它有以下步骤：</p><ol><li>启动数据库至 <code>mount</code> 或 <code>open</code> 状态</li><li>删除数据库</li><li>删除对应的备份和归档日志</li></ol><p>具体操作：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7 ~]$ . oraenv</span><br><span class="line">ORACLE_SID = [orcl] ? mydb</span><br><span class="line">The Oracle base remains unchanged <span class="keyword">with</span> value /u01/app/oracle</span><br><span class="line">[oracle@oel7 ~]$ sqlplus / <span class="keyword">as</span> sysdba</span><br><span class="line"></span><br><span class="line">SQL*Plus: Release <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production on Sun Jan <span class="number">5</span> <span class="number">14</span>:<span class="number">18</span>:<span class="number">28</span> <span class="number">2025</span></span><br><span class="line">Version <span class="number">19.3</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span></span><br><span class="line"></span><br><span class="line">Copyright (c) <span class="number">1982</span>, <span class="number">2019</span>, Oracle.  All rights reserved.</span><br><span class="line"></span><br><span class="line">Connected to an idle instance.</span><br><span class="line"></span><br><span class="line">SYS@mydb()&gt; startup restrict force mount;</span><br><span class="line">ORACLE instance started.</span><br><span class="line"></span><br><span class="line">Total System Global Area <span class="number">1241510120</span> <span class="built_in">bytes</span></span><br><span class="line">Fixed Size                  <span class="number">9134312</span> <span class="built_in">bytes</span></span><br><span class="line">Variable Size             <span class="number">754974720</span> <span class="built_in">bytes</span></span><br><span class="line">Database Buffers          <span class="number">469762048</span> <span class="built_in">bytes</span></span><br><span class="line">Redo Buffers                <span class="number">7639040</span> <span class="built_in">bytes</span></span><br><span class="line">Database mounted.</span><br><span class="line"></span><br><span class="line">SYS@mydb(CDB$ROOT)&gt; select status <span class="keyword">from</span> v$instance;</span><br><span class="line"></span><br><span class="line">STATUS</span><br><span class="line">------------</span><br><span class="line">MOUNTED</span><br><span class="line"></span><br><span class="line">SYS@mydb(CDB$ROOT)&gt; drop database;</span><br><span class="line"></span><br><span class="line">Database dropped.</span><br><span class="line"></span><br><span class="line">Disconnected <span class="keyword">from</span> Oracle Database 19c Enterprise Edition Release <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production</span><br><span class="line">Version <span class="number">19.3</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span></span><br><span class="line"></span><br><span class="line">[oracle@oel7 ~]$ rm -rf $ORACLE_BASE/admin/mydb $ORACLE_BASE/oradata/MYDB $ORACLE_BASE/audit/mydb</span><br></pre></td></tr></table></figure><h2 id="数据库实例"><a href="#数据库实例" class="headerlink" title="数据库实例"></a>数据库实例</h2><p>一个数据库实例是一组管理数据库文件的内存结构，数据库是在磁盘上创建的一组物理文件。<br>实例管理其关联的数据库并为用户提供服务。<br>每个运行的 Oracle 数据库都与至少一个 Oracle 数据库实例关联。<br>因为内存中存在一个实例，数据库存在于磁盘上，所以一个实例可以在没有数据库的情况下存在，并且数据库可以在没有实例的情况下存在。</p><p>启动实例，分配 SGA(System Global Area)，启动一个或多个后台进程。<br>SGA 具有多种用途，例如：</p><ul><li>维护许多进程和线程同时访问的内部数据结构</li><li>缓存从磁盘读取的数据块</li><li>在将重做数据写入联机重做日志文件之前对其进行缓冲</li><li>存储 SQL 执行计划</li></ul><p>查看 SGA 信息：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; show parameters sga</span><br><span class="line"></span><br><span class="line">NAME                                 TYPE        VALUE</span><br><span class="line">------------------------------------ ----------- ------------------------------</span><br><span class="line">allow_group_access_to_sga            boolean     FALSE</span><br><span class="line">lock_sga                             boolean     FALSE</span><br><span class="line">pre_page_sga                         boolean     TRUE</span><br><span class="line">sga_max_size                         big integer 1184M</span><br><span class="line">sga_min_size                         big integer <span class="number">0</span></span><br><span class="line">sga_target                           big integer 1184M</span><br><span class="line">unified_audit_sga_queue_size         integer     <span class="number">1048576</span></span><br></pre></td></tr></table></figure><p>在单台计算机上运行的 Oracle 进程共享 SGA。<br>数据库实例包括后台进程、服务器进程以及在这些进程中分配的进程内存存在于实例中。</p><p>Oracle 体系结构：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250105144608-1024x606.png"></p><p>Oracle 实例结构：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250105143650.png"></p><p>单实例，数据库于数据库实例一对一的关系。<br>RAC 数据库和数据库实例一对多的关系。</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250105152454.png"></p><p>一个数据库实例一次仅与一个数据库关联。<br>可以启动一个数据库实例并将数据库装入，但不能同时装入同一实例的两个数据库。<br>多个实例可以在同一台服务器上同时运行，每个实例都访问自己的数据库。</p><p>系统标识符(SID)是用于特定主机上的 Oracle 数据库实例的唯一名称。<br>在 Linxu 中，Oracle 数据库使用 SID 和 Oracle home 值创建共享内存密钥。<br>Oracle 数据库默认情况下使用 SID 来定位初始化参数文件，从而找到其它相关文件，入数据库控制文件。</p><p>参数文件位置：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7 ~]$ ls $ORACLE_HOME/dbs</span><br><span class="line">hc_orcl.dat  init.ora  lkORCL  orapworcl  snapcf_orcl.f  spfileorcl.ora</span><br></pre></td></tr></table></figure><p>参数文件为 <code>spfile+sid.ora</code> 名称固定不能修改。</p><h2 id="检查点"><a href="#检查点" class="headerlink" title="检查点"></a>检查点</h2><p>检查点通常是一致性数据库关闭、实例恢复和 Oracle 数据库操作中的一种关键机制。</p><ul><li>指示检查点位置的数据结构，该位置是重做流中必须开始实例恢复的 scn。</li><li>检查点位置由数据库缓冲区中最旧的脏缓冲区决定。</li><li>检查点位置充当重做流的指针，并存储在控制文件和每个数据文件头中。</li><li>将数据库缓存中修改后的数据库缓冲区写入磁盘</li></ul><p>Oracle 数据库使用检查点来实现多个目标：</p><ul><li>减少实例或介质故障时恢复所需的时间</li><li>确保数据库定期将缓冲区高速缓存中的脏缓冲区写入磁盘</li><li>确保数据库在一致关闭期间将所有提交的数据写入磁盘</li></ul><p>Oracle 数据库启动检查点时，检查点进程(CKPT)负责写检查点的数据文件头和控制文件。<br>检查点在各种情况下都会发生。</p><p>Oracle 数据库使用以下类型的检查点：</p><h3 id="线程检查点"><a href="#线程检查点" class="headerlink" title="线程检查点"></a>线程检查点</h3><p>数据库将在特定目标之前在特定线程中由重做修改的所有缓冲区写入磁盘。<br>线程检查点在以下情况下发生：</p><ul><li>一致的数据库关闭 <code>ALTER SYSTEM CHECKPOINT</code></li><li>在线重做日志切换 <code>ALTER SYSTEM SWITCH LOGFILE</code></li><li>数据库备份 <code>ALTER DATABASE BEGIN BACKUP</code></li></ul><h3 id="表空间和数据文件检查点"><a href="#表空间和数据文件检查点" class="headerlink" title="表空间和数据文件检查点"></a>表空间和数据文件检查点</h3><p>数据库将在特定目标之前通过重做修改的所有缓冲区写入磁盘。<br>表空间检查点是一组数据文件检查点，表空间中的每个数据文件都有一个。<br>这些检查点在各种情况下都会发生，包括使表空间为只读或使表空间正常脱机，缩小数据文件或执行 <code>ALTER TABLESPACE BEGIN BACKUP</code></p><h3 id="增量检查点"><a href="#增量检查点" class="headerlink" title="增量检查点"></a>增量检查点</h3><p>增量检查时线程检查点的一种，部分目的时避免在联机重做日志开关中写入大量块。<br>DBW 至少每三秒检查一次，以确定是否有工作要做，当 DBW 写入脏页缓冲区时，它将前进检查点位置，从而使检查点进程将检查点位置写入控制文件，而不是写入数据文件头。</p><h3 id="检查点使用场景"><a href="#检查点使用场景" class="headerlink" title="检查点使用场景"></a>检查点使用场景</h3><p>实例恢复时将联机重做日志中的记录应用于数据文件以重建最近检查点之后所做的更改的过程。<br>当管理员尝试打开以前不一致关闭的数据库时，实例恢复将自动发生。<br>实例恢复使用检查点来确定必须将哪些更改应用于数据文件。<br>检查点位置可确保将 SCN 低于检查点 SCN 的所有已提交更改都保存到数据文件中。</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250105204414.png"></p><p>实例恢复的第一阶段称为缓存恢复或前滚，将联机重做日志中记录的所有更改重新应用于数据文件。<br>前滚会遍历所有必要的联机重做日志文件，以使数据库及时前移。</p><p>前滚之后，所有未提交的更改都必须撤销。Oracle 数据库应用撤销块来回滚在故障之前写入或在缓存恢复期间引入的数据块中未提交的更改，此阶段称为回滚或事务恢复。</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250105205133.png"></p><h2 id="实例启动过程"><a href="#实例启动过程" class="headerlink" title="实例启动过程"></a>实例启动过程</h2><p>当数据库从关闭状态进入打开数据库状态时，经历了以下阶段：</p><ol><li>实例启动时不挂载数据库：实例已启动，但尚未与数据库关联</li><li>数据库装载：通过读取其控制文件与数据库关联，该数据库对用户关闭</li><li>数据库打开：实例已启动，并与一个打开的数据库关联</li></ol><p>数据文件可以在 <code>mount</code> 时获取：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; create pfile=<span class="string">&#x27;/home/oracle/orcl.spfile&#x27;</span> <span class="keyword">from</span> spfile;</span><br><span class="line"></span><br><span class="line">File created.</span><br><span class="line"></span><br><span class="line">[oracle@oel7 ~]$ cat orcl.spfile</span><br><span class="line">orcl.__data_transfer_cache_size=<span class="number">0</span></span><br><span class="line">orcl.__db_cache_size=<span class="number">838860800</span></span><br><span class="line">orcl.__inmemory_ext_roarea=<span class="number">0</span></span><br><span class="line">orcl.__inmemory_ext_rwarea=<span class="number">0</span></span><br><span class="line">orcl.__java_pool_size=<span class="number">0</span></span><br><span class="line">orcl.__large_pool_size=<span class="number">16777216</span></span><br><span class="line">orcl.__oracle_base=<span class="string">&#x27;/u01/app/oracle&#x27;</span><span class="comment">#ORACLE_BASE set from environment</span></span><br><span class="line">orcl.__pga_aggregate_target=<span class="number">419430400</span></span><br><span class="line">orcl.__sga_target=<span class="number">1241513984</span></span><br><span class="line">orcl.__shared_io_pool_size=<span class="number">67108864</span></span><br><span class="line">orcl.__shared_pool_size=<span class="number">301989888</span></span><br><span class="line">orcl.__streams_pool_size=<span class="number">0</span></span><br><span class="line">orcl.__unified_pga_pool_size=<span class="number">0</span></span><br><span class="line">*.audit_file_dest=<span class="string">&#x27;/u01/app/oracle/admin/orcl/adump&#x27;</span></span><br><span class="line">*.audit_trail=<span class="string">&#x27;db&#x27;</span></span><br><span class="line">*.compatible=<span class="string">&#x27;19.0.0&#x27;</span></span><br><span class="line">*.control_files=<span class="string">&#x27;/u01/app/oracle/oradata/ORCL/controlfile/o1_mf_mqhpxhxl_.ctl&#x27;</span>,<span class="string">&#x27;/u01/app/oracle/fast_recovery_area/ORCL/controlfile/o1_mf_mqhpxhy8_.ctl&#x27;</span></span><br><span class="line">*.db_block_size=<span class="number">8192</span></span><br><span class="line">*.db_create_file_dest=<span class="string">&#x27;/u01/app/oracle/oradata&#x27;</span></span><br><span class="line">*.db_name=<span class="string">&#x27;orcl&#x27;</span></span><br><span class="line">*.db_recovery_file_dest=<span class="string">&#x27;/u01/app/oracle/fast_recovery_area&#x27;</span></span><br><span class="line">*.db_recovery_file_dest_size=20g</span><br><span class="line">*.diagnostic_dest=<span class="string">&#x27;/u01/app/oracle&#x27;</span></span><br><span class="line">*.dispatchers=<span class="string">&#x27;(PROTOCOL=TCP) (SERVICE=orclXDB)&#x27;</span></span><br><span class="line">*.enable_pluggable_database=true</span><br><span class="line">*.local_listener=<span class="string">&#x27;LISTENER_ORCL&#x27;</span></span><br><span class="line">*.log_archive_format=<span class="string">&#x27;%t_%s_%r.dbf&#x27;</span></span><br><span class="line">*.nls_language=<span class="string">&#x27;AMERICAN&#x27;</span></span><br><span class="line">*.nls_territory=<span class="string">&#x27;AMERICA&#x27;</span></span><br><span class="line">*.open_cursors=<span class="number">300</span></span><br><span class="line">*.pga_aggregate_target=393m</span><br><span class="line">*.processes=<span class="number">320</span></span><br><span class="line">*.remote_login_passwordfile=<span class="string">&#x27;EXCLUSIVE&#x27;</span></span><br><span class="line">*.sga_target=1176m</span><br><span class="line">*.undo_tablespace=<span class="string">&#x27;UNDOTBS1&#x27;</span></span><br></pre></td></tr></table></figure><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250105211703-1024x497.png"></p><p>三步启动：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; shutdown immediate</span><br><span class="line">Database closed.</span><br><span class="line">Database dismounted.</span><br><span class="line">ORACLE instance shut down.</span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; startup nomount</span><br><span class="line">ORACLE instance started.</span><br><span class="line"></span><br><span class="line">Total System Global Area <span class="number">1241510120</span> <span class="built_in">bytes</span></span><br><span class="line">Fixed Size                  <span class="number">9134312</span> <span class="built_in">bytes</span></span><br><span class="line">Variable Size             <span class="number">318767104</span> <span class="built_in">bytes</span></span><br><span class="line">Database Buffers          <span class="number">905969664</span> <span class="built_in">bytes</span></span><br><span class="line">Redo Buffers                <span class="number">7639040</span> <span class="built_in">bytes</span></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; alter database mount;</span><br><span class="line"></span><br><span class="line">Database altered.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; alter database <span class="built_in">open</span>;</span><br><span class="line"></span><br><span class="line">Database altered.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; select status <span class="keyword">from</span> v$instance;</span><br><span class="line"></span><br><span class="line">STATUS</span><br><span class="line">------------</span><br><span class="line">OPEN</span><br></pre></td></tr></table></figure><p>使用 <code>SHUTDOWN</code> 命令关闭数据库实例有以下几个模式：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250105212118-1024x328.png"></p><p>可以使用 <code>startup force</code> 重启数据库。</p><h2 id="多租户环境"><a href="#多租户环境" class="headerlink" title="多租户环境"></a>多租户环境</h2><p>多租户环境中允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。<br>CDB：Container Database<br>PDB：Pluggable Database</p><p>查询是否为容器数据库：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; select cdb <span class="keyword">from</span> v$database;</span><br><span class="line"></span><br><span class="line">CDB</span><br><span class="line">---</span><br><span class="line">YES</span><br></pre></td></tr></table></figure><p>查看 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; show pdbs;</span><br><span class="line"></span><br><span class="line">    CON_ID CON_NAME                       OPEN MODE  RESTRICTED</span><br><span class="line">---------- ------------------------------ ---------- ----------</span><br><span class="line">         <span class="number">2</span> PDB$SEED                       READ ONLY  NO</span><br><span class="line">         <span class="number">3</span> PDB1                           MOUNTED</span><br><span class="line">         <span class="number">4</span> PDB2                           MOUNTED</span><br></pre></td></tr></table></figure><h3 id="ROOT-组件"><a href="#ROOT-组件" class="headerlink" title="ROOT 组件"></a>ROOT 组件</h3><p>ROOT 又称为 <code>CDB$ROOT</code> 即根容器，存储着 Oracle 提供的元数据和常规用户。<br>元数据的一个例子是 Oracle 提供的 PL&#x2F;SQL 的源代码，常规用户是指在每个容器中都存在的用户。</p><p>查看当前连接的容器数据库：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; show con_name;</span><br><span class="line"></span><br><span class="line">CON_NAME</span><br><span class="line">------------------------------</span><br><span class="line">CDB$ROOT</span><br></pre></td></tr></table></figure><h3 id="SEED-组件"><a href="#SEED-组件" class="headerlink" title="SEED 组件"></a>SEED 组件</h3><p>SEED 又称为 <code>PDB$SEED</code> ，是创建 PDB 的模板，不能在 Seed 中添加或修改。<br>一个 CDB 中有且只有一个 Seed</p><h3 id="PDBs"><a href="#PDBs" class="headerlink" title="PDBs"></a>PDBs</h3><p>CDB 中可以有一个或多个 PDB，PDB 向后兼容，可以像以前在数据库中那样操作。<br>ROOT SEED PDB 中的每一个都称为容器，每个容器在 CDB 中都有一个唯一的 ID 和名称：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; col PDB_NAME <span class="keyword">for</span> a20</span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; select PDB_ID,PDB_NAME,DBID,CON_UID <span class="keyword">from</span> cdb_pdbs;</span><br><span class="line"></span><br><span class="line">    PDB_ID PDB_NAME                   DBID    CON_UID</span><br><span class="line">---------- -------------------- ---------- ----------</span><br><span class="line">         <span class="number">3</span> PDB1                 <span class="number">2611250428</span> <span class="number">2611250428</span></span><br><span class="line">         <span class="number">2</span> PDB$SEED              <span class="number">802682571</span>  <span class="number">802682571</span></span><br><span class="line">         <span class="number">4</span> PDB2                 <span class="number">2717827782</span> <span class="number">2717827782</span></span><br></pre></td></tr></table></figure><p>对于 CDB，启动和关闭与之前传统数据库的方式一样：<br>启动：<code>startup [nomount | mount | restrict | force | read only]</code><br>其它命令：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">startup <span class="built_in">open</span>  read only  --select open_mode <span class="keyword">from</span> v$database;</span><br><span class="line">startup restrict</span><br><span class="line">ALTER SYSTEM ENABLE RESTRICTED SESSION;</span><br><span class="line">ALTER SYSTEM DISABLE RESTRICTED SESSION;</span><br><span class="line">create user c<span class="comment">##123 identified by 123;</span></span><br><span class="line">grant create session to c<span class="comment">##123;</span></span><br></pre></td></tr></table></figure><p>关闭：<code>shutdown [immediate | abort]</code></p><p>默认情况下使用 <code>sqlplus / as sysdba</code> 登录连接的是 CDB。<br>在 CDB 启动之后，PDB 是自动启动到 <code>mount</code> 状态，而不是 <code>OPEN</code> 状态。</p><p>分步骤关闭 CDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; alter database close;</span><br><span class="line"></span><br><span class="line">Database altered.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; alter database dismount;</span><br><span class="line"></span><br><span class="line">Database altered.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; shutdown</span><br><span class="line">ORA-01507: database <span class="keyword">not</span> mounted</span><br><span class="line">ORACLE instance shut down.</span><br></pre></td></tr></table></figure><p>也可以直接关闭：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">shutdown immediate</span><br></pre></td></tr></table></figure><p>启动和关闭 PDB：<br>启动或关闭一个或多个 PDB，指定的名称为一个以逗号分隔的列表：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; show pdbs;</span><br><span class="line"></span><br><span class="line">    CON_ID CON_NAME                       OPEN MODE  RESTRICTED</span><br><span class="line">---------- ------------------------------ ---------- ----------</span><br><span class="line">         <span class="number">2</span> PDB$SEED                       READ ONLY  NO</span><br><span class="line">         <span class="number">3</span> PDB1                           MOUNTED</span><br><span class="line">         <span class="number">4</span> PDB2                           MOUNTED</span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; alter pluggable database PDB1 <span class="built_in">open</span>;</span><br><span class="line"></span><br><span class="line">Pluggable database altered.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; show pdbs;</span><br><span class="line"></span><br><span class="line">    CON_ID CON_NAME                       OPEN MODE  RESTRICTED</span><br><span class="line">---------- ------------------------------ ---------- ----------</span><br><span class="line">         <span class="number">2</span> PDB$SEED                       READ ONLY  NO</span><br><span class="line">         <span class="number">3</span> PDB1                           READ WRITE NO</span><br><span class="line">         <span class="number">4</span> PDB2                           MOUNTED</span><br></pre></td></tr></table></figure><p>关闭 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; alter pluggable database PDB1 close;</span><br><span class="line"></span><br><span class="line">Pluggable database altered.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; show pdbs;</span><br><span class="line"></span><br><span class="line">    CON_ID CON_NAME                       OPEN MODE  RESTRICTED</span><br><span class="line">---------- ------------------------------ ---------- ----------</span><br><span class="line">         <span class="number">2</span> PDB$SEED                       READ ONLY  NO</span><br><span class="line">         <span class="number">3</span> PDB1                           MOUNTED</span><br><span class="line">         <span class="number">4</span> PDB2                           MOUNTED</span><br></pre></td></tr></table></figure><p>其它的一些启动和关闭操作：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">alter pluggable database prod1 close;</span><br><span class="line">alter pluggable database pdb1,pdb2 <span class="built_in">open</span> read only;</span><br><span class="line">alter pluggable database pdb3 <span class="built_in">open</span> RESTRICTED;</span><br><span class="line">alter pluggable database pdb1,pdb2 close immediate;</span><br><span class="line">select name,open_mode <span class="keyword">from</span> v$pdbs; </span><br></pre></td></tr></table></figure><p>启动或关闭所有 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">alter pluggable database <span class="built_in">all</span> <span class="built_in">open</span>;</span><br><span class="line">alter pluggable database <span class="built_in">all</span> close immediate; </span><br></pre></td></tr></table></figure><p>排除某些 PDB 不启动：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">alter pluggable database <span class="built_in">all</span> <span class="keyword">except</span> pdb1 <span class="built_in">open</span>;</span><br><span class="line">alter pluggable database <span class="built_in">all</span> <span class="keyword">except</span> pdb1 close immediate; </span><br></pre></td></tr></table></figure><p>从根容器切换到 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; alter session <span class="built_in">set</span> container=PDB1;</span><br><span class="line"></span><br><span class="line">Session altered.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; show con_name;</span><br><span class="line"></span><br><span class="line">CON_NAME</span><br><span class="line">------------------------------</span><br><span class="line">PDB1</span><br></pre></td></tr></table></figure><p>从 PDB 切换到根容器：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; conn / <span class="keyword">as</span> sysdba</span><br><span class="line">Connected.</span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; show con_name</span><br><span class="line"></span><br><span class="line">CON_NAME</span><br><span class="line">------------------------------</span><br><span class="line">CDB$ROOT</span><br></pre></td></tr></table></figure><p>PDB 自动启动：<br>在 PDB 启动后，可以保存 OPEN 状态，下次可自动启动 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; alter pluggable database <span class="built_in">all</span> <span class="built_in">open</span>;</span><br><span class="line"></span><br><span class="line">Pluggable database altered.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; alter pluggable database <span class="built_in">all</span> save state;</span><br><span class="line"></span><br><span class="line">Pluggable database altered.</span><br><span class="line"></span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; shutdown immediate;</span><br><span class="line">Database closed.</span><br><span class="line">Database dismounted.</span><br><span class="line">ORACLE instance shut down.</span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; startup</span><br><span class="line">ORACLE instance started.</span><br><span class="line"></span><br><span class="line">Total System Global Area <span class="number">1241510120</span> <span class="built_in">bytes</span></span><br><span class="line">Fixed Size                  <span class="number">9134312</span> <span class="built_in">bytes</span></span><br><span class="line">Variable Size             <span class="number">335544320</span> <span class="built_in">bytes</span></span><br><span class="line">Database Buffers          <span class="number">889192448</span> <span class="built_in">bytes</span></span><br><span class="line">Redo Buffers                <span class="number">7639040</span> <span class="built_in">bytes</span></span><br><span class="line">Database mounted.</span><br><span class="line">Database opened.</span><br><span class="line">SYS@orcl(CDB$ROOT)&gt; show pdbs;</span><br><span class="line"></span><br><span class="line">    CON_ID CON_NAME                       OPEN MODE  RESTRICTED</span><br><span class="line">---------- ------------------------------ ---------- ----------</span><br><span class="line">         <span class="number">2</span> PDB$SEED                       READ ONLY  NO</span><br><span class="line">         <span class="number">3</span> PDB1                           READ WRITE NO</span><br><span class="line">         <span class="number">4</span> PDB2                           READ WRITE NO</span><br></pre></td></tr></table></figure><p>取消自动启动 PDB：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt; alter pluggable database <span class="built_in">all</span> discard state;</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://www.imxcai.com/database/oracle/ocp-04-database-manager.html</id>
    <link href="https://www.imxcai.com/database/oracle/ocp-04-database-manager.html"/>
    <published>2025-01-05T13:36:40.000Z</published>
    <summary>Oracle 数据库的连接与启动关闭。</summary>
    <title>OCP-04：数据库管理</title>
    <updated>2025-01-11T08:22:44.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="Database" scheme="https://www.imxcai.com/category/database/"/>
    <category term="Oracle" scheme="https://www.imxcai.com/category/database/oracle/"/>
    <category term="Oracle 19C" scheme="https://www.imxcai.com/tag/oracle-19c/"/>
    <content>
      <![CDATA[<p>Oracle Database 从 19C 开始还提供了 RPM 包方式进行安装，RPM 包安装方式简单，且能够通过 RPM 进行管理，但是无法决定安装目录，默认是安装在 <code>/opt</code> 目录下。</p><h2 id="安装-preinstall-RPM-包"><a href="#安装-preinstall-RPM-包" class="headerlink" title="安装 preinstall RPM 包"></a>安装 preinstall RPM 包</h2><p><code>oracle-database-preinstall-19c</code> RPM 包帮助配置安装之前所需的用户和内核参数的配置，默认 YUM 源和光盘中已经提供了，直接安装即可：</p><span id="more"></span><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[root@oel7-<span class="number">3</span> ~]<span class="comment"># yum install -y oracle-database-preinstall-19c.x86_64</span></span><br></pre></td></tr></table></figure><h2 id="安装数据库软件"><a href="#安装数据库软件" class="headerlink" title="安装数据库软件"></a>安装数据库软件</h2><p>使用 RPM 安装要确保 <code>/opt</code> 目录有 7G 空闲空间，直接安装：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[root@oel7-<span class="number">3</span> ~]<span class="comment"># yum localinstall -y oracle-database-ee-19c-1.0-1.x86_64.rpm</span></span><br></pre></td></tr></table></figure><h2 id="创建数据库实例"><a href="#创建数据库实例" class="headerlink" title="创建数据库实例"></a>创建数据库实例</h2><p>可以使用 <code>dbac</code> 图形化或静默创建，也可以通过以下方式创建：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line">[root@oel7-<span class="number">3</span> ~]<span class="comment"># /etc/init.d/oracledb_ORCLCDB-19c configure</span></span><br><span class="line">Configuring Oracle Database ORCLCDB.</span><br><span class="line">Prepare <span class="keyword">for</span> db operation</span><br><span class="line"><span class="number">8</span>% complete</span><br><span class="line">Copying database files</span><br><span class="line"><span class="number">31</span>% complete</span><br><span class="line">Creating <span class="keyword">and</span> starting Oracle instance</span><br><span class="line"><span class="number">32</span>% complete</span><br><span class="line"><span class="number">36</span>% complete</span><br><span class="line"><span class="number">40</span>% complete</span><br><span class="line"><span class="number">43</span>% complete</span><br><span class="line"><span class="number">46</span>% complete</span><br><span class="line">Completing Database Creation</span><br><span class="line"><span class="number">51</span>% complete</span><br><span class="line"><span class="number">54</span>% complete</span><br><span class="line">Creating Pluggable Databases</span><br><span class="line"><span class="number">58</span>% complete</span><br><span class="line"><span class="number">77</span>% complete</span><br><span class="line">Executing Post Configuration Actions</span><br><span class="line"><span class="number">100</span>% complete</span><br><span class="line">Database creation complete. For details check the logfiles at:</span><br><span class="line"> /opt/oracle/cfgtoollogs/dbca/ORCLCDB.</span><br><span class="line">Database Information:</span><br><span class="line">Global Database Name:ORCLCDB</span><br><span class="line">System Identifier(SID):ORCLCDB</span><br><span class="line">Look at the log file <span class="string">&quot;/opt/oracle/cfgtoollogs/dbca/ORCLCDB/ORCLCDB.log&quot;</span> <span class="keyword">for</span> further details.</span><br><span class="line"></span><br><span class="line">Database configuration completed successfully. The passwords were auto generated, you must change them by connecting to the database using <span class="string">&#x27;sqlplus / as sysdba&#x27;</span> <span class="keyword">as</span> the oracle user.</span><br></pre></td></tr></table></figure><p>设置环境变量：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-<span class="number">3</span> ~]$ cat &gt;&gt; .bash_profile &lt;&lt; EOF</span><br><span class="line">export ORACLE_SID=ORCLCDB</span><br><span class="line">export ORACLE_BASE=/opt/oracle</span><br><span class="line">export ORACLE_HOME=$ORACLE_BASE/product/19c/dbhome_1</span><br><span class="line">export PATH=$PATH:$ORACLE_HOME/<span class="built_in">bin</span></span><br><span class="line">export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib</span><br><span class="line">export CLASSPATH=$ORACLE_HOME/JRE:ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib</span><br><span class="line">EOF</span><br><span class="line">[oracle@oel7-<span class="number">3</span> ~]$ source .bash_profile</span><br></pre></td></tr></table></figure><p>验证已创建监听：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-<span class="number">3</span> ~]$  lsnrctl status</span><br><span class="line"></span><br><span class="line">LSNRCTL <span class="keyword">for</span> Linux: Version <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production on 04-JAN-<span class="number">2025</span> <span class="number">22</span>:<span class="number">34</span>:<span class="number">45</span></span><br><span class="line"></span><br><span class="line">Copyright (c) <span class="number">1991</span>, <span class="number">2019</span>, Oracle.  All rights reserved.</span><br><span class="line"></span><br><span class="line">Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oel7-<span class="number">3</span>)(PORT=<span class="number">1521</span>)))</span><br><span class="line">STATUS of the LISTENER</span><br><span class="line">------------------------</span><br><span class="line">Alias                     LISTENER</span><br><span class="line">Version                   TNSLSNR <span class="keyword">for</span> Linux: Version <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production</span><br><span class="line">Start Date                04-JAN-<span class="number">2025</span> <span class="number">22</span>:<span class="number">17</span>:<span class="number">29</span></span><br><span class="line">Uptime                    <span class="number">0</span> days <span class="number">0</span> hr. <span class="number">17</span> <span class="built_in">min</span>. <span class="number">16</span> sec</span><br><span class="line">Trace Level               off</span><br><span class="line">Security                  ON: Local OS Authentication</span><br><span class="line">SNMP                      OFF</span><br><span class="line">Listener Parameter File   /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora</span><br><span class="line">Listener Log File         /opt/oracle/diag/tnslsnr/oel7-<span class="number">3</span>/listener/alert/log.xml</span><br><span class="line">Listening Endpoints Summary...</span><br><span class="line">  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oel7-<span class="number">3</span>)(PORT=<span class="number">1521</span>)))</span><br><span class="line">  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))</span><br><span class="line">  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=oel7-<span class="number">3</span>)(PORT=<span class="number">5500</span>))(Security=(my_wallet_directory=/opt/oracle/admin/ORCLCDB/xdb_wallet))(Presentation=HTTP)(Session=RAW))</span><br><span class="line">Services Summary...</span><br><span class="line">Service <span class="string">&quot;2ae33bd0597304b3e0639083a8c06ec0&quot;</span> has <span class="number">1</span> instance(s).</span><br><span class="line">  Instance <span class="string">&quot;ORCLCDB&quot;</span>, status READY, has <span class="number">1</span> handler(s) <span class="keyword">for</span> this service...</span><br><span class="line">Service <span class="string">&quot;ORCLCDB&quot;</span> has <span class="number">1</span> instance(s).</span><br><span class="line">  Instance <span class="string">&quot;ORCLCDB&quot;</span>, status READY, has <span class="number">1</span> handler(s) <span class="keyword">for</span> this service...</span><br><span class="line">Service <span class="string">&quot;ORCLCDBXDB&quot;</span> has <span class="number">1</span> instance(s).</span><br><span class="line">  Instance <span class="string">&quot;ORCLCDB&quot;</span>, status READY, has <span class="number">1</span> handler(s) <span class="keyword">for</span> this service...</span><br><span class="line">Service <span class="string">&quot;orclpdb1&quot;</span> has <span class="number">1</span> instance(s).</span><br><span class="line">  Instance <span class="string">&quot;ORCLCDB&quot;</span>, status READY, has <span class="number">1</span> handler(s) <span class="keyword">for</span> this service...</span><br><span class="line">The command completed successfully</span><br></pre></td></tr></table></figure><p>连接到数据库：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-<span class="number">3</span> ~]$ sqlplus / <span class="keyword">as</span> sysdba</span><br><span class="line"></span><br><span class="line">SQL*Plus: Release <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production on Sat Jan <span class="number">4</span> <span class="number">22</span>:<span class="number">38</span>:<span class="number">10</span> <span class="number">2025</span></span><br><span class="line">Version <span class="number">19.3</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span></span><br><span class="line"></span><br><span class="line">Copyright (c) <span class="number">1982</span>, <span class="number">2019</span>, Oracle.  All rights reserved.</span><br><span class="line"></span><br><span class="line">Connected to:</span><br><span class="line">Oracle Database 19c Enterprise Edition Release <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production</span><br><span class="line">Version <span class="number">19.3</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span></span><br><span class="line"></span><br><span class="line">SQL&gt; show pdbs;</span><br><span class="line"></span><br><span class="line">    CON_ID CON_NAME                       OPEN MODE  RESTRICTED</span><br><span class="line">---------- ------------------------------ ---------- ----------</span><br><span class="line">         <span class="number">2</span> PDB$SEED                       READ ONLY  NO</span><br><span class="line">         <span class="number">3</span> ORCLPDB1                       READ WRITE NO</span><br><span class="line">SQL&gt;</span><br></pre></td></tr></table></figure><p>虽然生产环境中使用这种方式较少，但个人感觉这比 ZIP 安装方式要简单的多，也有可能是新推出而不被老手所接受，习惯了老式的安装方式。</p>]]>
    </content>
    <id>https://www.imxcai.com/database/oracle/ocp-03-install-oracle-database-with-rpm.html</id>
    <link href="https://www.imxcai.com/database/oracle/ocp-03-install-oracle-database-with-rpm.html"/>
    <published>2025-01-04T14:42:50.000Z</published>
    <summary>使用 RPM 包安装 Oracle Database</summary>
    <title>OCP-03：使用 RPM 包安装 Oracle Database</title>
    <updated>2025-01-11T08:22:52.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="Database" scheme="https://www.imxcai.com/category/database/"/>
    <category term="Oracle" scheme="https://www.imxcai.com/category/database/oracle/"/>
    <category term="Oracle 19C" scheme="https://www.imxcai.com/tag/oracle-19c/"/>
    <content>
      <![CDATA[<p>静默安装是在实际环境中使用最多的一种方式，而且部署可能还是离线环境。</p><h2 id="安装前系统准备工作"><a href="#安装前系统准备工作" class="headerlink" title="安装前系统准备工作"></a>安装前系统准备工作</h2><p>在安装数据库之前需要对系统环境进行检查和配置来满足安装要求。</p><h3 id="系统检查"><a href="#系统检查" class="headerlink" title="系统检查"></a>系统检查</h3><p>在准备安装的系统上进行检查内存、系统版本、共享内存、磁盘空间、CPU 信息和架构：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line">[student@oel7-<span class="number">2</span> ~]$ free -m</span><br><span class="line">              total        used        free      shared  buff/cache   available</span><br><span class="line">Mem:           <span class="number">3926</span>         <span class="number">393</span>        <span class="number">3217</span>          <span class="number">11</span>         <span class="number">315</span>        <span class="number">3292</span></span><br><span class="line">Swap:          <span class="number">4095</span>           <span class="number">0</span>        <span class="number">4095</span></span><br><span class="line"></span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ cat /etc/redhat-release</span><br><span class="line">Red Hat Enterprise Linux Server release <span class="number">7.9</span> (Maipo)</span><br><span class="line"></span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ df -h</span><br><span class="line">Filesystem           Size  Used Avail Use% Mounted on</span><br><span class="line">devtmpfs             <span class="number">1.9</span>G     <span class="number">0</span>  <span class="number">1.9</span>G   <span class="number">0</span>% /dev</span><br><span class="line">tmpfs                <span class="number">2.0</span>G     <span class="number">0</span>  <span class="number">2.0</span>G   <span class="number">0</span>% /dev/shm</span><br><span class="line">tmpfs                <span class="number">2.0</span>G  <span class="number">9.5</span>M  <span class="number">2.0</span>G   <span class="number">1</span>% /run</span><br><span class="line">tmpfs                <span class="number">2.0</span>G     <span class="number">0</span>  <span class="number">2.0</span>G   <span class="number">0</span>% /sys/fs/cgroup</span><br><span class="line">/dev/mapper/ol-root   35G  <span class="number">6.5</span>G   29G  <span class="number">19</span>% /</span><br><span class="line">/dev/mapper/ol-u01    60G   33M   60G   <span class="number">1</span>% /u01</span><br><span class="line">/dev/sda1           1014M  218M  797M  <span class="number">22</span>% /boot</span><br><span class="line">tmpfs                393M  <span class="number">8.0</span>K  393M   <span class="number">1</span>% /run/user/<span class="number">42</span></span><br><span class="line">tmpfs                393M     <span class="number">0</span>  393M   <span class="number">0</span>% /run/user/<span class="number">1000</span></span><br><span class="line"></span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ uname -m</span><br><span class="line">x86_64</span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ cat /proc/version</span><br><span class="line">Linux version <span class="number">5.4</span><span class="number">.17</span>-<span class="number">2102.201</span><span class="number">.3</span>.el7uek.x86_64 (mockbuild@host-<span class="number">100</span>-<span class="number">100</span>-<span class="number">224</span>-<span class="number">4</span>) (gcc version <span class="number">4.8</span><span class="number">.5</span> <span class="number">20150623</span> (Red Hat <span class="number">4.8</span><span class="number">.5</span>-<span class="number">39.0</span><span class="number">.3</span>) (GCC)) <span class="comment">#2 SMP Fri Apr 23 09:05:55 PDT 2021</span></span><br></pre></td></tr></table></figure><span id="more"></span><h3 id="系统配置"><a href="#系统配置" class="headerlink" title="系统配置"></a>系统配置</h3><p>设置 <code>/etc/hosts</code> 解析：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">[student@oel7-<span class="number">2</span> ~]$ cat /etc/hosts</span><br><span class="line"><span class="number">127.0</span><span class="number">.0</span><span class="number">.1</span>   localhost localhost.localdomain localhost4 localhost4.localdomain4</span><br><span class="line">::<span class="number">1</span>         localhost localhost.localdomain localhost6 localhost6.localdomain6</span><br><span class="line"><span class="number">192.168</span><span class="number">.131</span><span class="number">.140</span> oel7-<span class="number">2</span> oel7-<span class="number">2.</span>example.com</span><br><span class="line"></span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ hostname</span><br><span class="line">oel7-<span class="number">2.</span>example.com</span><br></pre></td></tr></table></figure><p>关闭防火墙和 SELinux：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">[student@oel7-<span class="number">2</span> ~]$ sudo systemctl disable --now firewalld</span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ sudo setenforce <span class="number">0</span></span><br><span class="line"></span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ grep SELINUX= /etc/selinux/config</span><br><span class="line"><span class="comment"># SELINUX= can take one of these three values:</span></span><br><span class="line">SELINUX=disabled</span><br></pre></td></tr></table></figure><p>配置使用 ISO 的 YUM 仓库：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">[student@oel7-<span class="number">2</span> ~]$ sudo mkdir /mnt/iso</span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ sudo mount /dev/sr0 /mnt/iso</span><br><span class="line">mount: /dev/sr0 <span class="keyword">is</span> write-protected, mounting read-only</span><br><span class="line"></span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ sudo mkdir /etc/yum.repos.d/bak</span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ sudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak</span><br><span class="line"></span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ cat /etc/yum.repos.d/iso.repo</span><br><span class="line">[iso]</span><br><span class="line">name=iso</span><br><span class="line">baseurl=file:///mnt/iso</span><br><span class="line">gpgcheck=<span class="number">0</span></span><br><span class="line">enabled=<span class="number">1</span> </span><br></pre></td></tr></table></figure><h2 id="手动准备环境"><a href="#手动准备环境" class="headerlink" title="手动准备环境"></a>手动准备环境</h2><p>ISO 带有 <code>oracle-database-preinstall-19c</code> rpm 包，可以帮助我们自动的创建所需用户和配置内核参数，也可以手动进行配置。<br>手动配置之前可以检查是否有安装过 Oracle 软件：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[student@oel7-<span class="number">2</span> ~]$ ls /etc/oraInst.loc</span><br><span class="line">ls: cannot access /etc/oraInst.loc: No such file <span class="keyword">or</span> directory</span><br></pre></td></tr></table></figure><h3 id="创建用户和组"><a href="#创建用户和组" class="headerlink" title="创建用户和组"></a>创建用户和组</h3><p>创建所需组和用户：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">[student@oel7-<span class="number">2</span> ~]$ sudo groupadd -g <span class="number">54321</span> oinstall</span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ sudo groupadd -g <span class="number">54322</span> dba</span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ sudo groupadd -g <span class="number">54323</span> oper</span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ sudo useradd -u <span class="number">54321</span> -g oinstall -G dba,oper oracle</span><br><span class="line"></span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ echo oracle | sudo passwd --stdin oracle</span><br><span class="line">Changing password <span class="keyword">for</span> user oracle.</span><br><span class="line">passwd: <span class="built_in">all</span> authentication tokens updated successfully.</span><br></pre></td></tr></table></figure><h3 id="创建-Oracle-安装目录"><a href="#创建-Oracle-安装目录" class="headerlink" title="创建 Oracle 安装目录"></a>创建 Oracle 安装目录</h3><p>创建目录时需要注意权限：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">[student@oel7-<span class="number">2</span> ~]$ sudo mkdir -p /u01/app/oracle</span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ sudo chown -R oracle:oinstall /u01/app/oracle</span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ sudo chmod <span class="number">775</span> /u01/app/oracle</span><br></pre></td></tr></table></figure><h3 id="配置环境变量"><a href="#配置环境变量" class="headerlink" title="配置环境变量"></a>配置环境变量</h3><p>为 oracle 用户设置环境变量：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-<span class="number">2</span> ~]$ vim .bash_profile</span><br><span class="line"></span><br><span class="line">export ORACLE_SID=orcl</span><br><span class="line">export ORACLE_BASE=/u01/app/oracle</span><br><span class="line">export ORACLE_HOME=$ORACLE_BASE/product/<span class="number">19.3</span><span class="number">.0</span>/db_1</span><br><span class="line">export PATH=$PATH:$ORACLE_HOME/<span class="built_in">bin</span></span><br><span class="line">export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib</span><br><span class="line">export CLASSPATH=$ORACLE_HOME/JRE:ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib</span><br><span class="line"></span><br><span class="line">[oracle@oel7-<span class="number">2</span> ~]$ source  .bash_profile</span><br></pre></td></tr></table></figure><h3 id="配置内核参数"><a href="#配置内核参数" class="headerlink" title="配置内核参数"></a>配置内核参数</h3><p>Oracle 对内核一组内核参数值有要求：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">[student@oel7-<span class="number">2</span> ~]$ sudo vim /etc/sysctl.d/oracle.conf</span><br><span class="line"></span><br><span class="line">fs.file-<span class="built_in">max</span> = <span class="number">6815744</span></span><br><span class="line">kernel.sem = <span class="number">250</span> <span class="number">32000</span> <span class="number">100</span> <span class="number">128</span></span><br><span class="line">kernel.shmmni = <span class="number">4096</span></span><br><span class="line">kernel.shmall = <span class="number">1073741824</span></span><br><span class="line">kernel.shmmax = <span class="number">4398046511104</span></span><br><span class="line">kernel.panic_on_oops = <span class="number">1</span></span><br><span class="line">net.core.rmem_default = <span class="number">262144</span></span><br><span class="line">net.core.rmem_max = <span class="number">4194304</span></span><br><span class="line">net.core.wmem_default = <span class="number">262144</span></span><br><span class="line">net.core.wmem_max = <span class="number">1048576</span></span><br><span class="line">fs.aio-<span class="built_in">max</span>-nr = <span class="number">1048576</span></span><br><span class="line">net.ipv4.ip_local_port_range = <span class="number">9000</span> <span class="number">65500</span></span><br><span class="line"></span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ sudo sysctl --system</span><br><span class="line">[student@oel7-<span class="number">2</span> ~]$ sysctl kernel.shmmax</span><br><span class="line">kernel.shmmax = <span class="number">4398046511104</span></span><br></pre></td></tr></table></figure><h3 id="安装所需依赖"><a href="#安装所需依赖" class="headerlink" title="安装所需依赖"></a>安装所需依赖</h3><p>检查依赖情况，对缺少的依赖进行安装：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line">[student@oel7-<span class="number">2</span> ~]$ rpm -q bc \</span><br><span class="line">&gt; binutils \</span><br><span class="line">&gt; compat-libcap1 \</span><br><span class="line">&gt; compat-libstdc++-<span class="number">33</span> \</span><br><span class="line">&gt; elfutils-libelf \</span><br><span class="line">&gt; elfutils-libelf-devel \</span><br><span class="line">&gt; fontconfig-devel \</span><br><span class="line">&gt; glibc \</span><br><span class="line">&gt; glibc-devel \</span><br><span class="line">&gt; ksh \</span><br><span class="line">&gt; libaio \</span><br><span class="line">&gt; libaio-devel \</span><br><span class="line">&gt; libXrender \</span><br><span class="line">&gt; libXrender-devel \</span><br><span class="line">&gt; libX11 \</span><br><span class="line">&gt; libXau \</span><br><span class="line">&gt; libXi \</span><br><span class="line">&gt; libXtst \</span><br><span class="line">&gt; libgcc \</span><br><span class="line">&gt; libstdc++ \</span><br><span class="line">&gt; libstdc++-devel \</span><br><span class="line">&gt; libxcb \</span><br><span class="line">&gt; make \</span><br><span class="line">&gt; policycoreutils \</span><br><span class="line">&gt; policycoreutils-python \</span><br><span class="line">&gt; smartmontools \</span><br><span class="line">&gt; sysstat \ | grep <span class="string">&quot;not installed&quot;</span></span><br><span class="line">package elfutils-libelf-devel <span class="keyword">is</span> <span class="keyword">not</span> installed</span><br><span class="line">package fontconfig-devel <span class="keyword">is</span> <span class="keyword">not</span> installed</span><br><span class="line">package ksh <span class="keyword">is</span> <span class="keyword">not</span> installed</span><br><span class="line">package libaio-devel <span class="keyword">is</span> <span class="keyword">not</span> installed</span><br><span class="line">package libXrender-devel <span class="keyword">is</span> <span class="keyword">not</span> installed</span><br><span class="line"></span><br><span class="line">sudo yum install -y elfutils-libelf-devel fontconfig-devel ksh libaio-devel libXrender-devel</span><br></pre></td></tr></table></figure><h3 id="解压-Oracle-软件包"><a href="#解压-Oracle-软件包" class="headerlink" title="解压 Oracle 软件包"></a>解压 Oracle 软件包</h3><p>将 oracle zip 软件包上传至系统，然后解压至 <code>$ORACLE_HOME</code> 目录：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-<span class="number">2</span> ~]$ mkdir -p /u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/db_1</span><br><span class="line"></span><br><span class="line">[oracle@oel7-<span class="number">2</span> ~]$ unzip LINUX.X64_193000_db_home.<span class="built_in">zip</span> -d /u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/db_1</span><br><span class="line"></span><br><span class="line">[oracle@oel7-<span class="number">2</span> ~]$ chown -R oracle:oinstall /u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/db_1</span><br><span class="line">[oracle@oel7-<span class="number">2</span> ~]$ chmod <span class="number">775</span> -R /u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/db_1</span><br></pre></td></tr></table></figure><h2 id="静默安装-Oracle-数据库"><a href="#静默安装-Oracle-数据库" class="headerlink" title="静默安装 Oracle 数据库"></a>静默安装 Oracle 数据库</h2><p>静默安装通过使用已存在的响应文件进行安装，避免了安装过程中交互的输入安装参数。</p><h3 id="静默安装-Oracle-软件"><a href="#静默安装-Oracle-软件" class="headerlink" title="静默安装 Oracle 软件"></a>静默安装 Oracle 软件</h3><p>在 <code>$ORACLE_HOME/install/response</code> 目录中存在一个响应文件，可以以此为基础进行修改：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-<span class="number">2</span> ~]$ cd $ORACLE_HOME/install/response</span><br><span class="line">[oracle@oel7-<span class="number">2</span> response]$ cp db_install.rsp /tmp/</span><br></pre></td></tr></table></figure><p>对 <code>/tmp/db_install.rsp</code> 进行修改，该文件每一个参数都有描述，如果仅安装数据库软件并不需要对所有参数进行配置：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br><span class="line">254</span><br><span class="line">255</span><br><span class="line">256</span><br><span class="line">257</span><br><span class="line">258</span><br><span class="line">259</span><br><span class="line">260</span><br><span class="line">261</span><br><span class="line">262</span><br><span class="line">263</span><br><span class="line">264</span><br><span class="line">265</span><br><span class="line">266</span><br><span class="line">267</span><br><span class="line">268</span><br><span class="line">269</span><br><span class="line">270</span><br><span class="line">271</span><br><span class="line">272</span><br><span class="line">273</span><br><span class="line">274</span><br><span class="line">275</span><br><span class="line">276</span><br><span class="line">277</span><br><span class="line">278</span><br><span class="line">279</span><br><span class="line">280</span><br><span class="line">281</span><br><span class="line">282</span><br><span class="line">283</span><br><span class="line">284</span><br><span class="line">285</span><br><span class="line">286</span><br><span class="line">287</span><br><span class="line">288</span><br><span class="line">289</span><br><span class="line">290</span><br><span class="line">291</span><br><span class="line">292</span><br><span class="line">293</span><br><span class="line">294</span><br><span class="line">295</span><br><span class="line">296</span><br><span class="line">297</span><br><span class="line">298</span><br><span class="line">299</span><br><span class="line">300</span><br><span class="line">301</span><br><span class="line">302</span><br><span class="line">303</span><br><span class="line">304</span><br><span class="line">305</span><br><span class="line">306</span><br><span class="line">307</span><br><span class="line">308</span><br><span class="line">309</span><br><span class="line">310</span><br><span class="line">311</span><br><span class="line">312</span><br><span class="line">313</span><br><span class="line">314</span><br><span class="line">315</span><br><span class="line">316</span><br><span class="line">317</span><br><span class="line">318</span><br><span class="line">319</span><br><span class="line">320</span><br><span class="line">321</span><br><span class="line">322</span><br><span class="line">323</span><br><span class="line">324</span><br><span class="line">325</span><br><span class="line">326</span><br><span class="line">327</span><br><span class="line">328</span><br><span class="line">329</span><br><span class="line">330</span><br><span class="line">331</span><br><span class="line">332</span><br><span class="line">333</span><br><span class="line">334</span><br><span class="line">335</span><br><span class="line">336</span><br><span class="line">337</span><br><span class="line">338</span><br><span class="line">339</span><br><span class="line">340</span><br><span class="line">341</span><br><span class="line">342</span><br><span class="line">343</span><br><span class="line">344</span><br><span class="line">345</span><br><span class="line">346</span><br><span class="line">347</span><br><span class="line">348</span><br><span class="line">349</span><br><span class="line">350</span><br><span class="line">351</span><br><span class="line">352</span><br><span class="line">353</span><br><span class="line">354</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">####################################################################</span></span><br><span class="line"><span class="comment">## Copyright(c) Oracle Corporation 1998,2019. All rights reserved.##</span></span><br><span class="line"><span class="comment">##                                                                ##</span></span><br><span class="line"><span class="comment">## Specify values for the variables listed below to customize     ##</span></span><br><span class="line"><span class="comment">## your installation.                                             ##</span></span><br><span class="line"><span class="comment">##                                                                ##</span></span><br><span class="line"><span class="comment">## Each variable is associated with a comment. The comment        ##</span></span><br><span class="line"><span class="comment">## can help to populate the variables with the appropriate        ##</span></span><br><span class="line"><span class="comment">## values.                                                        ##</span></span><br><span class="line"><span class="comment">##                                                                ##</span></span><br><span class="line"><span class="comment">## IMPORTANT <span class="doctag">NOTE:</span> This file contains plain text passwords and    ##</span></span><br><span class="line"><span class="comment">## should be secured to have read permission only by oracle user  ##</span></span><br><span class="line"><span class="comment">## or db administrator who owns this installation.                ##</span></span><br><span class="line"><span class="comment">##                                                                ##</span></span><br><span class="line"><span class="comment">####################################################################</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Do not change the following system generated value.</span></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19<span class="number">.0</span><span class="number">.0</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the installation option.</span></span><br><span class="line"><span class="comment"># It can be one of the following:</span></span><br><span class="line"><span class="comment">#   - INSTALL_DB_SWONLY</span></span><br><span class="line"><span class="comment">#   - INSTALL_DB_AND_CONFIG</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.option=INSTALL_DB_SWONLY</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the Unix group to be set for the inventory directory.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">UNIX_GROUP_NAME=oinstall</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the location which holds the inventory files.</span></span><br><span class="line"><span class="comment"># This is an optional parameter if installing on</span></span><br><span class="line"><span class="comment"># Windows based Operating System.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">INVENTORY_LOCATION=/u01/app/oraInventory</span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the complete path of the Oracle Home.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">ORACLE_HOME=/u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/db_1</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the complete path of the Oracle Base.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">ORACLE_BASE=/u01/app/oracle</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the installation edition of the component.</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># The value should contain only one of these choices.</span></span><br><span class="line"><span class="comment">#   - EE     : Enterprise Edition</span></span><br><span class="line"><span class="comment">#   - SE2     : Standard Edition 2</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"></span><br><span class="line">oracle.install.db.InstallEdition=EE</span><br><span class="line"><span class="comment">###############################################################################</span></span><br><span class="line"><span class="comment">#                                                                             #</span></span><br><span class="line"><span class="comment"># PRIVILEGED OPERATING SYSTEM GROUPS                                          #</span></span><br><span class="line"><span class="comment"># ------------------------------------------                                  #</span></span><br><span class="line"><span class="comment"># Provide values for the OS groups to which SYSDBA and SYSOPER privileges     #</span></span><br><span class="line"><span class="comment"># needs to be granted. If the install is being performed as a member of the   #</span></span><br><span class="line"><span class="comment"># group &quot;dba&quot;, then that will be used unless specified otherwise below.       #</span></span><br><span class="line"><span class="comment">#                                                                             #</span></span><br><span class="line"><span class="comment"># The value to be specified for OSDBA and OSOPER group is only for UNIX based #</span></span><br><span class="line"><span class="comment"># Operating System.                                                           #</span></span><br><span class="line"><span class="comment">#                                                                             #</span></span><br><span class="line"><span class="comment">###############################################################################</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># The OSDBA_GROUP is the OS group which is to be granted SYSDBA privileges.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.OSDBA_GROUP=dba</span><br><span class="line"></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># The OSOPER_GROUP is the OS group which is to be granted SYSOPER privileges.</span></span><br><span class="line"><span class="comment"># The value to be specified for OSOPER group is optional.</span></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.OSOPER_GROUP=oper</span><br><span class="line"></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># The OSBACKUPDBA_GROUP is the OS group which is to be granted SYSBACKUP privileges.</span></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.OSBACKUPDBA_GROUP=dba</span><br><span class="line"></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># The OSDGDBA_GROUP is the OS group which is to be granted SYSDG privileges.</span></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.OSDGDBA_GROUP=dba</span><br><span class="line"></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># The OSKMDBA_GROUP is the OS group which is to be granted SYSKM privileges.</span></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.OSKMDBA_GROUP=dba</span><br><span class="line"></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># The OSRACDBA_GROUP is the OS group which is to be granted SYSRAC privileges.</span></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.OSRACDBA_GROUP=dba</span><br><span class="line"><span class="comment">################################################################################</span></span><br><span class="line"><span class="comment">#                                                                              #</span></span><br><span class="line"><span class="comment">#                      Root script execution configuration                     #</span></span><br><span class="line"><span class="comment">#                                                                              #</span></span><br><span class="line"><span class="comment">################################################################################</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the root script execution mode.</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment">#   - true  : To execute the root script automatically by using the appropriate configuration methods.</span></span><br><span class="line"><span class="comment">#   - false : To execute the root script manually.</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># If this option is selected, password should be specified on the console.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.rootconfig.executeRootScript=</span><br><span class="line"></span><br><span class="line"><span class="comment">#--------------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the configuration method to be used for automatic root script execution.</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Following are the possible choices:</span></span><br><span class="line"><span class="comment">#   - ROOT</span></span><br><span class="line"><span class="comment">#   - SUDO</span></span><br><span class="line"><span class="comment">#--------------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.rootconfig.configMethod=</span><br><span class="line"><span class="comment">#--------------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the absolute path of the sudo program.</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Applicable only when SUDO configuration method was chosen.</span></span><br><span class="line"><span class="comment">#--------------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.rootconfig.sudoPath=</span><br><span class="line"></span><br><span class="line"><span class="comment">#--------------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the name of the user who is in the sudoers list.</span></span><br><span class="line"><span class="comment"># Applicable only when SUDO configuration method was chosen.</span></span><br><span class="line"><span class="comment"># Note:For Single Instance database installations,the sudo user name must be the username of the user installing the database.</span></span><br><span class="line"><span class="comment">#--------------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.rootconfig.sudoUserName=</span><br><span class="line"></span><br><span class="line"><span class="comment">###############################################################################</span></span><br><span class="line"><span class="comment">#                                                                             #</span></span><br><span class="line"><span class="comment">#                               Grid Options                                  #</span></span><br><span class="line"><span class="comment">#                                                                             #</span></span><br><span class="line"><span class="comment">###############################################################################</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Value is required only if the specified install option is INSTALL_DB_SWONLY</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Specify the cluster node names selected during the installation.</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Example : oracle.install.db.CLUSTER_NODES=node1,node2</span></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.CLUSTER_NODES=</span><br><span class="line"></span><br><span class="line"><span class="comment">###############################################################################</span></span><br><span class="line"><span class="comment">#                                                                             #</span></span><br><span class="line"><span class="comment">#                        Database Configuration Options                       #</span></span><br><span class="line"><span class="comment">#                                                                             #</span></span><br><span class="line"><span class="comment">###############################################################################</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the type of database to create.</span></span><br><span class="line"><span class="comment"># It can be one of the following:</span></span><br><span class="line"><span class="comment">#   - GENERAL_PURPOSE</span></span><br><span class="line"><span class="comment">#   - DATA_WAREHOUSE</span></span><br><span class="line"><span class="comment"># GENERAL_PURPOSE: A starter database designed for general purpose use or transaction-heavy applications.</span></span><br><span class="line"><span class="comment"># DATA_WAREHOUSE : A starter database optimized for data warehousing applications.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.<span class="built_in">type</span>=GENERAL_PURPOSE</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the Starter Database Global Database Name.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.globalDBName=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the Starter Database SID.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.SID=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify whether the database should be configured as a Container database.</span></span><br><span class="line"><span class="comment"># The value can be either &quot;true&quot; or &quot;false&quot;. If left blank it will be assumed</span></span><br><span class="line"><span class="comment"># to be &quot;false&quot;.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.ConfigureAsContainerDB=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the  Pluggable Database name for the pluggable database in Container Database.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.PDBName=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the Starter Database character set.</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment">#  One of the following</span></span><br><span class="line"><span class="comment">#  AL32UTF8, WE8ISO8859P15, WE8MSWIN1252, EE8ISO8859P2,</span></span><br><span class="line"><span class="comment">#  EE8MSWIN1250, NE8ISO8859P10, NEE8ISO8859P4, BLT8MSWIN1257,</span></span><br><span class="line"><span class="comment">#  BLT8ISO8859P13, CL8ISO8859P5, CL8MSWIN1251, AR8ISO8859P6,</span></span><br><span class="line"><span class="comment">#  AR8MSWIN1256, EL8ISO8859P7, EL8MSWIN1253, IW8ISO8859P8,</span></span><br><span class="line"><span class="comment">#  IW8MSWIN1255, JA16EUC, JA16EUCTILDE, JA16SJIS, JA16SJISTILDE,</span></span><br><span class="line"><span class="comment">#  KO16MSWIN949, ZHS16GBK, TH8TISASCII, ZHT32EUC, ZHT16MSWIN950,</span></span><br><span class="line"><span class="comment">#  ZHT16HKSCS, WE8ISO8859P9, TR8MSWIN1254, VN8MSWIN1258</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.characterSet=</span><br><span class="line"></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># This variable should be set to true if Automatic Memory Management</span></span><br><span class="line"><span class="comment"># in Database is desired.</span></span><br><span class="line"><span class="comment"># If Automatic Memory Management is not desired, and memory allocation</span></span><br><span class="line"><span class="comment"># is to be done manually, then set it to false.</span></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.memoryOption=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the total memory allocation for the database. Value(in MB) should be</span></span><br><span class="line"><span class="comment"># at least 256 MB, and should not exceed the total physical memory available</span></span><br><span class="line"><span class="comment"># on the system.</span></span><br><span class="line"><span class="comment"># Example: oracle.install.db.config.starterdb.memoryLimit=512</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.memoryLimit=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># This variable controls whether to load Example Schemas onto</span></span><br><span class="line"><span class="comment"># the starter database or not.</span></span><br><span class="line"><span class="comment"># The value can be either &quot;true&quot; or &quot;false&quot;. If left blank it will be assumed</span></span><br><span class="line"><span class="comment"># to be &quot;false&quot;.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.installExampleSchemas=</span><br><span class="line"></span><br><span class="line"><span class="comment">###############################################################################</span></span><br><span class="line"><span class="comment">#                                                                             #</span></span><br><span class="line"><span class="comment"># Passwords can be supplied for the following four schemas in the             #</span></span><br><span class="line"><span class="comment"># starter database:                                                           #</span></span><br><span class="line"><span class="comment">#   SYS                                                                       #</span></span><br><span class="line"><span class="comment">#   SYSTEM                                                                    #</span></span><br><span class="line"><span class="comment">#   DBSNMP (used by Enterprise Manager)                                       #</span></span><br><span class="line"><span class="comment">#                                                                             #</span></span><br><span class="line"><span class="comment"># Same password can be used for all accounts (not recommended)                #</span></span><br><span class="line"><span class="comment"># or different passwords for each account can be provided (recommended)       #</span></span><br><span class="line"><span class="comment">#                                                                             #</span></span><br><span class="line"><span class="comment">###############################################################################</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># This variable holds the password that is to be used for all schemas in the</span></span><br><span class="line"><span class="comment"># starter database.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.password.ALL=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the SYS password for the starter database.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.password.SYS=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the SYSTEM password for the starter database.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.password.SYSTEM=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the DBSNMP password for the starter database.</span></span><br><span class="line"><span class="comment"># Applicable only when oracle.install.db.config.starterdb.managementOption=CLOUD_CONTROL</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.password.DBSNMP=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the PDBADMIN password required for creation of Pluggable Database in the Container Database.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.password.PDBADMIN=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the management option to use for managing the database.</span></span><br><span class="line"><span class="comment"># Options are:</span></span><br><span class="line"><span class="comment"># 1. CLOUD_CONTROL - If you want to manage your database with Enterprise Manager Cloud Control along with Database Express.</span></span><br><span class="line"><span class="comment"># 2. DEFAULT   -If you want to manage your database using the default Database Express option.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.managementOption=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the OMS host to connect to Cloud Control.</span></span><br><span class="line"><span class="comment"># Applicable only when oracle.install.db.config.starterdb.managementOption=CLOUD_CONTROL</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.omsHost=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the OMS port to connect to Cloud Control.</span></span><br><span class="line"><span class="comment"># Applicable only when oracle.install.db.config.starterdb.managementOption=CLOUD_CONTROL</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.omsPort=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the EM Admin user name to use to connect to Cloud Control.</span></span><br><span class="line"><span class="comment"># Applicable only when oracle.install.db.config.starterdb.managementOption=CLOUD_CONTROL</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.emAdminUser=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the EM Admin password to use to connect to Cloud Control.</span></span><br><span class="line"><span class="comment"># Applicable only when oracle.install.db.config.starterdb.managementOption=CLOUD_CONTROL</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.emAdminPassword=</span><br><span class="line"></span><br><span class="line"><span class="comment">###############################################################################</span></span><br><span class="line"><span class="comment">#                                                                             #</span></span><br><span class="line"><span class="comment"># SPECIFY RECOVERY OPTIONS                                                    #</span></span><br><span class="line"><span class="comment"># ------------------------------------                                        #</span></span><br><span class="line"><span class="comment"># Recovery options for the database can be mentioned using the entries below  #</span></span><br><span class="line"><span class="comment">#                                                                             #</span></span><br><span class="line"><span class="comment">###############################################################################</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># This variable is to be set to false if database recovery is not required. Else</span></span><br><span class="line"><span class="comment"># this can be set to true.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.enableRecovery=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the type of storage to use for the database.</span></span><br><span class="line"><span class="comment"># It can be one of the following:</span></span><br><span class="line"><span class="comment">#   - FILE_SYSTEM_STORAGE</span></span><br><span class="line"><span class="comment">#   - ASM_STORAGE</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.storageType=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the database file location which is a directory for datafiles, control</span></span><br><span class="line"><span class="comment"># files, redo logs.</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Applicable only when oracle.install.db.config.starterdb.storage=FILE_SYSTEM_STORAGE</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the recovery location.</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Applicable only when oracle.install.db.config.starterdb.storage=FILE_SYSTEM_STORAGE</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the existing ASM disk groups to be used for storage.</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Applicable only when oracle.install.db.config.starterdb.storageType=ASM_STORAGE</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.asm.diskGroup=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Specify the password for ASMSNMP user of the ASM instance.</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Applicable only when oracle.install.db.config.starterdb.storage=ASM_STORAGE</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">oracle.install.db.config.asm.ASMSNMPPassword=</span><br></pre></td></tr></table></figure><p>主要修改以下参数：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19<span class="number">.0</span><span class="number">.0</span></span><br><span class="line">oracle.install.option=INSTALL_DB_SWONLY</span><br><span class="line">UNIX_GROUP_NAME=oinstall</span><br><span class="line">INVENTORY_LOCATION=/u01/app/oraInventory</span><br><span class="line">ORACLE_BASE=/u01/app/oracle</span><br><span class="line">ORACLE_HOME=/u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/db_1</span><br><span class="line">oracle.install.db.InstallEdition=EE</span><br><span class="line">oracle.install.db.OSDBA_GROUP=dba</span><br><span class="line">oracle.install.db.OSOPER_GROUP=oper</span><br><span class="line">oracle.install.db.OSBACKUPDBA_GROUP=dba</span><br><span class="line">oracle.install.db.OSDGDBA_GROUP=dba</span><br><span class="line">oracle.install.db.OSKMDBA_GROUP=dba</span><br><span class="line">oracle.install.db.OSRACDBA_GROUP=dba</span><br><span class="line">oracle.install.db.config.starterdb.<span class="built_in">type</span>=GENERAL_PURPOSE</span><br></pre></td></tr></table></figure><p>使用 <code>runInstaller</code> 静默安装配合 <code>rsp</code> 文件：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-<span class="number">2</span> ~]$ cd $ORACLE_HOME</span><br><span class="line">[oracle@oel7-<span class="number">2</span> db_1]$ ./runInstaller -silent -responseFile /tmp/db_install.rsp -ignorePrereq</span><br></pre></td></tr></table></figure><p>安装成功的输出：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250104134541.png"></p><p>根据要求使用 <code>root</code> 权限运行脚本：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-<span class="number">2</span> db_1]$ su -</span><br><span class="line">Password:</span><br><span class="line">Last login: Sat Jan  <span class="number">4</span> <span class="number">13</span>:<span class="number">44</span>:<span class="number">19</span> CST <span class="number">2025</span> on pts/<span class="number">0</span></span><br><span class="line">[root@oel7-<span class="number">2</span> ~]<span class="comment"># /u01/app/oraInventory/orainstRoot.sh</span></span><br><span class="line">Changing permissions of /u01/app/oraInventory.</span><br><span class="line">Adding read,write permissions <span class="keyword">for</span> group.</span><br><span class="line">Removing read,write,execute permissions <span class="keyword">for</span> world.</span><br><span class="line"></span><br><span class="line">Changing groupname of /u01/app/oraInventory to oinstall.</span><br><span class="line">The execution of the script <span class="keyword">is</span> complete.</span><br><span class="line">[root@oel7-<span class="number">2</span> ~]<span class="comment">#  /u01/app/oracle/product/19.3.0/db_1/root.sh</span></span><br><span class="line">Check /u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/db_1/install/root_oel7-<span class="number">2.</span>example.com_2025-01-04_13-<span class="number">46</span>-<span class="number">20</span>-<span class="number">502192761.</span>log <span class="keyword">for</span> the output of root script</span><br></pre></td></tr></table></figure><h2 id="创建监听"><a href="#创建监听" class="headerlink" title="创建监听"></a>创建监听</h2><p>监听也有 response 文件，可以查找名为 <code>netca.rsp</code> 的文件：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-<span class="number">2</span> ~]$ find $ORACLE_HOME -name netca.rsp</span><br><span class="line">/u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/db_1/assistants/netca/netca.rsp</span><br></pre></td></tr></table></figure><p>文件默认配置监听 TCP 1521，静默配置监听：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-<span class="number">2</span> ~]$ netca -silent -responseFile /u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/db_1/assistants/netca/netca.rsp</span><br><span class="line"></span><br><span class="line">Parsing command line arguments:</span><br><span class="line">    Parameter <span class="string">&quot;silent&quot;</span> = true</span><br><span class="line">    Parameter <span class="string">&quot;responsefile&quot;</span> = /u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/db_1/assistants/netca/netca.rsp</span><br><span class="line">Done parsing command line arguments.</span><br><span class="line">Oracle Net Services Configuration:</span><br><span class="line">Profile configuration complete.</span><br><span class="line">Oracle Net Listener Startup:</span><br><span class="line">    Running Listener Control:</span><br><span class="line">      /u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/db_1/<span class="built_in">bin</span>/lsnrctl start LISTENER</span><br><span class="line">    Listener Control complete.</span><br><span class="line">    Listener started successfully.</span><br><span class="line">Listener configuration complete.</span><br><span class="line">Oracle Net Services configuration successful. The exit code <span class="keyword">is</span> <span class="number">0</span></span><br><span class="line">[oracle@oel7-<span class="number">2</span> ~]$</span><br><span class="line">[oracle@oel7-<span class="number">2</span> ~]$ lsnrctl status</span><br><span class="line"></span><br><span class="line">LSNRCTL <span class="keyword">for</span> Linux: Version <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production on 04-JAN-<span class="number">2025</span> <span class="number">13</span>:<span class="number">54</span>:<span class="number">39</span></span><br><span class="line"></span><br><span class="line">Copyright (c) <span class="number">1991</span>, <span class="number">2019</span>, Oracle.  All rights reserved.</span><br><span class="line"></span><br><span class="line">Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oel7-<span class="number">2</span>)(PORT=<span class="number">1521</span>)))</span><br><span class="line">STATUS of the LISTENER</span><br><span class="line">------------------------</span><br><span class="line">Alias                     LISTENER</span><br><span class="line">Version                   TNSLSNR <span class="keyword">for</span> Linux: Version <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production</span><br><span class="line">Start Date                04-JAN-<span class="number">2025</span> <span class="number">13</span>:<span class="number">54</span>:<span class="number">35</span></span><br><span class="line">Uptime                    <span class="number">0</span> days <span class="number">0</span> hr. <span class="number">0</span> <span class="built_in">min</span>. <span class="number">3</span> sec</span><br><span class="line">Trace Level               off</span><br><span class="line">Security                  ON: Local OS Authentication</span><br><span class="line">SNMP                      OFF</span><br><span class="line">Listener Parameter File   /u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/db_1/network/admin/listener.ora</span><br><span class="line">Listener Log File         /u01/app/oracle/diag/tnslsnr/oel7-<span class="number">2</span>/listener/alert/log.xml</span><br><span class="line">Listening Endpoints Summary...</span><br><span class="line">  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oel7-<span class="number">2</span>)(PORT=<span class="number">1521</span>)))</span><br><span class="line">  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))</span><br><span class="line">The listener supports no services</span><br><span class="line">The command completed successfully</span><br></pre></td></tr></table></figure><h2 id="静默创建数据库"><a href="#静默创建数据库" class="headerlink" title="静默创建数据库"></a>静默创建数据库</h2><p>创建数据库使用 <code>dbca</code> 工具，它也支持静默安装。<br>首先需要找到 response 文件：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-<span class="number">2</span> ~]$ find $ORACLE_HOME -name dbca.rsp</span><br><span class="line">/u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/db_1/assistants/dbca/dbca.rsp</span><br></pre></td></tr></table></figure><p>找到后，根据创建数据参数修改文件：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-<span class="number">2</span> ~]$ cp /u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/db_1/assistants/dbca/dbca.rsp /tmp/</span><br><span class="line">[oracle@oel7-<span class="number">2</span> ~]$ vim /tmp/dbca.rsp</span><br></pre></td></tr></table></figure><p>文件内容：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br><span class="line">254</span><br><span class="line">255</span><br><span class="line">256</span><br><span class="line">257</span><br><span class="line">258</span><br><span class="line">259</span><br><span class="line">260</span><br><span class="line">261</span><br><span class="line">262</span><br><span class="line">263</span><br><span class="line">264</span><br><span class="line">265</span><br><span class="line">266</span><br><span class="line">267</span><br><span class="line">268</span><br><span class="line">269</span><br><span class="line">270</span><br><span class="line">271</span><br><span class="line">272</span><br><span class="line">273</span><br><span class="line">274</span><br><span class="line">275</span><br><span class="line">276</span><br><span class="line">277</span><br><span class="line">278</span><br><span class="line">279</span><br><span class="line">280</span><br><span class="line">281</span><br><span class="line">282</span><br><span class="line">283</span><br><span class="line">284</span><br><span class="line">285</span><br><span class="line">286</span><br><span class="line">287</span><br><span class="line">288</span><br><span class="line">289</span><br><span class="line">290</span><br><span class="line">291</span><br><span class="line">292</span><br><span class="line">293</span><br><span class="line">294</span><br><span class="line">295</span><br><span class="line">296</span><br><span class="line">297</span><br><span class="line">298</span><br><span class="line">299</span><br><span class="line">300</span><br><span class="line">301</span><br><span class="line">302</span><br><span class="line">303</span><br><span class="line">304</span><br><span class="line">305</span><br><span class="line">306</span><br><span class="line">307</span><br><span class="line">308</span><br><span class="line">309</span><br><span class="line">310</span><br><span class="line">311</span><br><span class="line">312</span><br><span class="line">313</span><br><span class="line">314</span><br><span class="line">315</span><br><span class="line">316</span><br><span class="line">317</span><br><span class="line">318</span><br><span class="line">319</span><br><span class="line">320</span><br><span class="line">321</span><br><span class="line">322</span><br><span class="line">323</span><br><span class="line">324</span><br><span class="line">325</span><br><span class="line">326</span><br><span class="line">327</span><br><span class="line">328</span><br><span class="line">329</span><br><span class="line">330</span><br><span class="line">331</span><br><span class="line">332</span><br><span class="line">333</span><br><span class="line">334</span><br><span class="line">335</span><br><span class="line">336</span><br><span class="line">337</span><br><span class="line">338</span><br><span class="line">339</span><br><span class="line">340</span><br><span class="line">341</span><br><span class="line">342</span><br><span class="line">343</span><br><span class="line">344</span><br><span class="line">345</span><br><span class="line">346</span><br><span class="line">347</span><br><span class="line">348</span><br><span class="line">349</span><br><span class="line">350</span><br><span class="line">351</span><br><span class="line">352</span><br><span class="line">353</span><br><span class="line">354</span><br><span class="line">355</span><br><span class="line">356</span><br><span class="line">357</span><br><span class="line">358</span><br><span class="line">359</span><br><span class="line">360</span><br><span class="line">361</span><br><span class="line">362</span><br><span class="line">363</span><br><span class="line">364</span><br><span class="line">365</span><br><span class="line">366</span><br><span class="line">367</span><br><span class="line">368</span><br><span class="line">369</span><br><span class="line">370</span><br><span class="line">371</span><br><span class="line">372</span><br><span class="line">373</span><br><span class="line">374</span><br><span class="line">375</span><br><span class="line">376</span><br><span class="line">377</span><br><span class="line">378</span><br><span class="line">379</span><br><span class="line">380</span><br><span class="line">381</span><br><span class="line">382</span><br><span class="line">383</span><br><span class="line">384</span><br><span class="line">385</span><br><span class="line">386</span><br><span class="line">387</span><br><span class="line">388</span><br><span class="line">389</span><br><span class="line">390</span><br><span class="line">391</span><br><span class="line">392</span><br><span class="line">393</span><br><span class="line">394</span><br><span class="line">395</span><br><span class="line">396</span><br><span class="line">397</span><br><span class="line">398</span><br><span class="line">399</span><br><span class="line">400</span><br><span class="line">401</span><br><span class="line">402</span><br><span class="line">403</span><br><span class="line">404</span><br><span class="line">405</span><br><span class="line">406</span><br><span class="line">407</span><br><span class="line">408</span><br><span class="line">409</span><br><span class="line">410</span><br><span class="line">411</span><br><span class="line">412</span><br><span class="line">413</span><br><span class="line">414</span><br><span class="line">415</span><br><span class="line">416</span><br><span class="line">417</span><br><span class="line">418</span><br><span class="line">419</span><br><span class="line">420</span><br><span class="line">421</span><br><span class="line">422</span><br><span class="line">423</span><br><span class="line">424</span><br><span class="line">425</span><br><span class="line">426</span><br><span class="line">427</span><br><span class="line">428</span><br><span class="line">429</span><br><span class="line">430</span><br><span class="line">431</span><br><span class="line">432</span><br><span class="line">433</span><br><span class="line">434</span><br><span class="line">435</span><br><span class="line">436</span><br><span class="line">437</span><br><span class="line">438</span><br><span class="line">439</span><br><span class="line">440</span><br><span class="line">441</span><br><span class="line">442</span><br><span class="line">443</span><br><span class="line">444</span><br><span class="line">445</span><br><span class="line">446</span><br><span class="line">447</span><br><span class="line">448</span><br><span class="line">449</span><br><span class="line">450</span><br><span class="line">451</span><br><span class="line">452</span><br><span class="line">453</span><br><span class="line">454</span><br><span class="line">455</span><br><span class="line">456</span><br><span class="line">457</span><br><span class="line">458</span><br><span class="line">459</span><br><span class="line">460</span><br><span class="line">461</span><br><span class="line">462</span><br><span class="line">463</span><br><span class="line">464</span><br><span class="line">465</span><br><span class="line">466</span><br><span class="line">467</span><br><span class="line">468</span><br><span class="line">469</span><br><span class="line">470</span><br><span class="line">471</span><br><span class="line">472</span><br><span class="line">473</span><br><span class="line">474</span><br><span class="line">475</span><br><span class="line">476</span><br><span class="line">477</span><br><span class="line">478</span><br><span class="line">479</span><br><span class="line">480</span><br><span class="line">481</span><br><span class="line">482</span><br><span class="line">483</span><br><span class="line">484</span><br><span class="line">485</span><br><span class="line">486</span><br><span class="line">487</span><br><span class="line">488</span><br><span class="line">489</span><br><span class="line">490</span><br><span class="line">491</span><br><span class="line">492</span><br><span class="line">493</span><br><span class="line">494</span><br><span class="line">495</span><br><span class="line">496</span><br><span class="line">497</span><br><span class="line">498</span><br><span class="line">499</span><br><span class="line">500</span><br><span class="line">501</span><br><span class="line">502</span><br><span class="line">503</span><br><span class="line">504</span><br><span class="line">505</span><br><span class="line">506</span><br><span class="line">507</span><br><span class="line">508</span><br><span class="line">509</span><br><span class="line">510</span><br><span class="line">511</span><br><span class="line">512</span><br><span class="line">513</span><br><span class="line">514</span><br><span class="line">515</span><br><span class="line">516</span><br><span class="line">517</span><br><span class="line">518</span><br><span class="line">519</span><br><span class="line">520</span><br><span class="line">521</span><br><span class="line">522</span><br><span class="line">523</span><br><span class="line">524</span><br><span class="line">525</span><br><span class="line">526</span><br><span class="line">527</span><br><span class="line">528</span><br><span class="line">529</span><br><span class="line">530</span><br><span class="line">531</span><br><span class="line">532</span><br><span class="line">533</span><br><span class="line">534</span><br><span class="line">535</span><br><span class="line">536</span><br><span class="line">537</span><br><span class="line">538</span><br><span class="line">539</span><br><span class="line">540</span><br><span class="line">541</span><br><span class="line">542</span><br><span class="line">543</span><br><span class="line">544</span><br><span class="line">545</span><br><span class="line">546</span><br><span class="line">547</span><br><span class="line">548</span><br><span class="line">549</span><br><span class="line">550</span><br><span class="line">551</span><br><span class="line">552</span><br><span class="line">553</span><br><span class="line">554</span><br><span class="line">555</span><br><span class="line">556</span><br><span class="line">557</span><br><span class="line">558</span><br><span class="line">559</span><br><span class="line">560</span><br><span class="line">561</span><br><span class="line">562</span><br><span class="line">563</span><br><span class="line">564</span><br><span class="line">565</span><br><span class="line">566</span><br><span class="line">567</span><br><span class="line">568</span><br><span class="line">569</span><br><span class="line">570</span><br><span class="line">571</span><br><span class="line">572</span><br><span class="line">573</span><br><span class="line">574</span><br><span class="line">575</span><br><span class="line">576</span><br><span class="line">577</span><br><span class="line">578</span><br><span class="line">579</span><br><span class="line">580</span><br><span class="line">581</span><br><span class="line">582</span><br><span class="line">583</span><br><span class="line">584</span><br><span class="line">585</span><br><span class="line">586</span><br><span class="line">587</span><br><span class="line">588</span><br><span class="line">589</span><br><span class="line">590</span><br><span class="line">591</span><br><span class="line">592</span><br><span class="line">593</span><br><span class="line">594</span><br><span class="line">595</span><br><span class="line">596</span><br><span class="line">597</span><br><span class="line">598</span><br><span class="line">599</span><br><span class="line">600</span><br><span class="line">601</span><br><span class="line">602</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">##############################################################################</span></span><br><span class="line"><span class="comment">##                                                                          ##</span></span><br><span class="line"><span class="comment">##                            DBCA response file                            ##</span></span><br><span class="line"><span class="comment">##                            ------------------                            ##</span></span><br><span class="line"><span class="comment">## Copyright(c) Oracle Corporation 1998,2019. All rights reserved.         ##</span></span><br><span class="line"><span class="comment">##                                                                          ##</span></span><br><span class="line"><span class="comment">## Specify values for the variables listed below to customize                       ##</span></span><br><span class="line"><span class="comment">## your installation.                                                               ##</span></span><br><span class="line"><span class="comment">##                                                                                  ##</span></span><br><span class="line"><span class="comment">## Each variable is associated with a comment. The comment                          ##</span></span><br><span class="line"><span class="comment">## can help to populate the variables with the appropriate                          ##</span></span><br><span class="line"><span class="comment">## values.                                                                          ##</span></span><br><span class="line"><span class="comment">##                                                                                      ##</span></span><br><span class="line"><span class="comment">## IMPORTANT <span class="doctag">NOTE:</span> This file contains plain text passwords and                          ##</span></span><br><span class="line"><span class="comment">## should be secured to have read permission only by oracle user                        ##</span></span><br><span class="line"><span class="comment">## or db administrator who owns this installation.                                      ##</span></span><br><span class="line"><span class="comment">##############################################################################</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Do not change the following system generated value.</span></span><br><span class="line"><span class="comment">#-------------------------------------------------------------------------------</span></span><br><span class="line">responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19<span class="number">.0</span><span class="number">.0</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : gdbName</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Global database name of the database</span></span><br><span class="line"><span class="comment"># Valid values  : &lt;db_name&gt;.&lt;db_domain&gt; - when database domain isn&#x27;t NULL</span></span><br><span class="line"><span class="comment">#                 &lt;db_name&gt;             - when database domain is NULL</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : Yes</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">gdbName=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : sid</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : System identifier (SID) of the database</span></span><br><span class="line"><span class="comment"># Valid values  : Check Oracle19c Administrator&#x27;s Guide</span></span><br><span class="line"><span class="comment"># Default value : &lt;db_name&gt; specified in GDBNAME</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">sid=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : databaseConfigType</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : database conf type as Single Instance, Real Application Cluster or Real Application Cluster One Nodes database</span></span><br><span class="line"><span class="comment"># Valid values  : SI\RAC\RACONENODE</span></span><br><span class="line"><span class="comment"># Default value : SI</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">databaseConfigType=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : RACOneNodeServiceName</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Service is required by application to connect to RAC One</span></span><br><span class="line"><span class="comment">#                 Node Database</span></span><br><span class="line"><span class="comment"># Valid values  : Service Name</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : No [required in case DATABASECONFTYPE is set to RACONENODE ]</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">RACOneNodeServiceName=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : policyManaged</span></span><br><span class="line"><span class="comment"># Datatype      : Boolean</span></span><br><span class="line"><span class="comment"># Description   : Set to true if Database is policy managed and</span></span><br><span class="line"><span class="comment">#                 set to false if  Database is admin managed</span></span><br><span class="line"><span class="comment"># Valid values  : TRUE\FALSE</span></span><br><span class="line"><span class="comment"># Default value : FALSE</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">policyManaged=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : createServerPool</span></span><br><span class="line"><span class="comment"># Datatype      : Boolean</span></span><br><span class="line"><span class="comment"># Description   : Set to true if new server pool need to be created for database</span></span><br><span class="line"><span class="comment">#                 if this option is specified then the newly created database</span></span><br><span class="line"><span class="comment">#                 will use this newly created serverpool.</span></span><br><span class="line"><span class="comment">#                 Multiple serverpoolname can not be specified for database</span></span><br><span class="line"><span class="comment"># Valid values  : TRUE\FALSE</span></span><br><span class="line"><span class="comment"># Default value : FALSE</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">createServerPool=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : serverPoolName</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Only one serverpool name need to be specified</span></span><br><span class="line"><span class="comment">#                  if Create Server Pool option is specified.</span></span><br><span class="line"><span class="comment">#                  Comma-separated list of Serverpool names if db need to use</span></span><br><span class="line"><span class="comment">#                  multiple Server pool</span></span><br><span class="line"><span class="comment"># Valid values  : ServerPool name</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : No [required in case of RAC service centric database]</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">serverPoolName=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : cardinality</span></span><br><span class="line"><span class="comment"># Datatype      : Number</span></span><br><span class="line"><span class="comment"># Description   : Specify Cardinality for create server pool operation</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Valid values  : any positive Integer value</span></span><br><span class="line"><span class="comment"># Default value : Number of qualified nodes on cluster</span></span><br><span class="line"><span class="comment"># Mandatory     : No [Required when a new serverpool need to be created]</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">cardinality=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : force</span></span><br><span class="line"><span class="comment"># Datatype      : Boolean</span></span><br><span class="line"><span class="comment"># Description   : Set to true if new server pool need to be created by force</span></span><br><span class="line"><span class="comment">#                 if this option is specified then the newly created serverpool</span></span><br><span class="line"><span class="comment">#                 will be assigned server even if no free servers are available.</span></span><br><span class="line"><span class="comment">#                 This may affect already running database.</span></span><br><span class="line"><span class="comment">#                 This flag can be specified for Admin managed as well as policy managed db.</span></span><br><span class="line"><span class="comment"># Valid values  : TRUE\FALSE</span></span><br><span class="line"><span class="comment"># Default value : FALSE</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">force=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : pqPoolName</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Only one serverpool name needs to be specified</span></span><br><span class="line"><span class="comment">#                  if create server pool option is specified.</span></span><br><span class="line"><span class="comment">#                  Comma-separated list of serverpool names if use</span></span><br><span class="line"><span class="comment">#                  server pool. This is required to</span></span><br><span class="line"><span class="comment">#                  create Parallel Query (PQ) database. Applicable to Big Cluster</span></span><br><span class="line"><span class="comment"># Valid values  :  Parallel Query (PQ) pool name</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : No [required in case of RAC service centric database]</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">pqPoolName=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : pqCardinality</span></span><br><span class="line"><span class="comment"># Datatype      : Number</span></span><br><span class="line"><span class="comment"># Description   : Specify Cardinality for create server pool operation.</span></span><br><span class="line"><span class="comment">#                 Applicable to Big Cluster</span></span><br><span class="line"><span class="comment"># Valid values  : any positive Integer value</span></span><br><span class="line"><span class="comment"># Default value : Number of qualified nodes on cluster</span></span><br><span class="line"><span class="comment"># Mandatory     : No [Required when a new serverpool need to be created]</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">pqCardinality=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : createAsContainerDatabase</span></span><br><span class="line"><span class="comment"># Datatype      : boolean</span></span><br><span class="line"><span class="comment"># Description   : flag to create database as container database</span></span><br><span class="line"><span class="comment"># Valid values  : Check Oracle19c Administrator&#x27;s Guide</span></span><br><span class="line"><span class="comment"># Default value : false</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">createAsContainerDatabase=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : numberOfPDBs</span></span><br><span class="line"><span class="comment"># Datatype      : Number</span></span><br><span class="line"><span class="comment"># Description   : Specify the number of pdb to be created</span></span><br><span class="line"><span class="comment"># Valid values  : 0 to 4094</span></span><br><span class="line"><span class="comment"># Default value : 0</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">numberOfPDBs=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : pdbName</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Specify the pdbname/pdbanme prefix if one or more pdb need to be created</span></span><br><span class="line"><span class="comment"># Valid values  : Check Oracle19c Administrator&#x27;s Guide</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">pdbName=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : useLocalUndoForPDBs</span></span><br><span class="line"><span class="comment"># Datatype      : boolean</span></span><br><span class="line"><span class="comment"># Description   : Flag to create local undo tablespace for all PDB&#x27;s.</span></span><br><span class="line"><span class="comment"># Valid values  : TRUE\FALSE</span></span><br><span class="line"><span class="comment"># Default value : TRUE</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">useLocalUndoForPDBs=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : pdbAdminPassword</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : PDB Administrator user password</span></span><br><span class="line"><span class="comment"># Valid values  : Check Oracle19c Administrator&#x27;s Guide</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"></span><br><span class="line">pdbAdminPassword=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : nodelist</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Comma-separated list of cluster nodes</span></span><br><span class="line"><span class="comment"># Valid values  : Cluster node names</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : No (Yes for RAC database-centric database )</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">nodelist=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : templateName</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Name of the template</span></span><br><span class="line"><span class="comment"># Valid values  : Template file name</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : Yes</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">templateName=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : sysPassword</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Password for SYS user</span></span><br><span class="line"><span class="comment"># Valid values  : Check Oracle19c Administrator&#x27;s Guide</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : Yes</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">sysPassword=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : systemPassword</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Password for SYSTEM user</span></span><br><span class="line"><span class="comment"># Valid values  : Check Oracle19c Administrator&#x27;s Guide</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : Yes</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">systemPassword=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : oracleHomeUserPassword</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Password for Windows Service user</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : If Oracle home is installed with windows service user</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">oracleHomeUserPassword=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : emConfiguration</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Enterprise Manager Configuration Type</span></span><br><span class="line"><span class="comment"># Valid values  : CENTRAL|DBEXPRESS|BOTH|NONE</span></span><br><span class="line"><span class="comment"># Default value : NONE</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">emConfiguration=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : emExpressPort</span></span><br><span class="line"><span class="comment"># Datatype      : Number</span></span><br><span class="line"><span class="comment"># Description   : Enterprise Manager Configuration Type</span></span><br><span class="line"><span class="comment"># Valid values  : Check Oracle19c Administrator&#x27;s Guide</span></span><br><span class="line"><span class="comment"># Default value : NONE</span></span><br><span class="line"><span class="comment"># Mandatory     : No, will be picked up from DBEXPRESS_HTTPS_PORT env variable</span></span><br><span class="line"><span class="comment">#                 or auto generates a free port between 5500 and 5599</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">emExpressPort=<span class="number">5500</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : runCVUChecks</span></span><br><span class="line"><span class="comment"># Datatype      : Boolean</span></span><br><span class="line"><span class="comment"># Description   : Specify whether to run Cluster Verification Utility checks</span></span><br><span class="line"><span class="comment">#                 periodically in Cluster environment</span></span><br><span class="line"><span class="comment"># Valid values  : TRUE\FALSE</span></span><br><span class="line"><span class="comment"># Default value : FALSE</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">runCVUChecks=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : dbsnmpPassword</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Password for DBSNMP user</span></span><br><span class="line"><span class="comment"># Valid values  : Check Oracle19c Administrator&#x27;s Guide</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : Yes, if emConfiguration is specified or</span></span><br><span class="line"><span class="comment">#                 the value of runCVUChecks is TRUE</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">dbsnmpPassword=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : omsHost</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : EM management server host name</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : Yes, if CENTRAL is specified for emConfiguration</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">omsHost=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : omsPort</span></span><br><span class="line"><span class="comment"># Datatype      : Number</span></span><br><span class="line"><span class="comment"># Description   : EM management server port number</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : Yes, if CENTRAL is specified for emConfiguration</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">omsPort=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : emUser</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : EM Admin username to add or modify targets</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : Yes, if CENTRAL is specified for emConfiguration</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">emUser=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : emPassword</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : EM Admin user password</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : Yes, if CENTRAL is specified for emConfiguration</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">emPassword=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : dvConfiguration</span></span><br><span class="line"><span class="comment"># Datatype      : Boolean</span></span><br><span class="line"><span class="comment"># Description   : Specify &quot;True&quot; to configure and enable Oracle Database vault</span></span><br><span class="line"><span class="comment"># Valid values  : True/False</span></span><br><span class="line"><span class="comment"># Default value : False</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">dvConfiguration=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : dvUserName</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : DataVault Owner</span></span><br><span class="line"><span class="comment"># Valid values  : Check Oracle19c Administrator&#x27;s Guide</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : Yes, if DataVault option is chosen</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">dvUserName=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : dvUserPassword</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Password for DataVault Owner</span></span><br><span class="line"><span class="comment"># Valid values  : Check Oracle19c Administrator&#x27;s Guide</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : Yes, if DataVault option is chosen</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">dvUserPassword=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : dvAccountManagerName</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : DataVault Account Manager</span></span><br><span class="line"><span class="comment"># Valid values  : Check Oracle19c Administrator&#x27;s Guide</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">dvAccountManagerName=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : dvAccountManagerPassword</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Password for  DataVault Account Manager</span></span><br><span class="line"><span class="comment"># Valid values  : Check Oracle19c Administrator&#x27;s Guide</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">dvAccountManagerPassword=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : olsConfiguration</span></span><br><span class="line"><span class="comment"># Datatype      : Boolean</span></span><br><span class="line"><span class="comment"># Description   : Specify &quot;True&quot; to configure and enable Oracle Label Security</span></span><br><span class="line"><span class="comment"># Valid values  : True/False</span></span><br><span class="line"><span class="comment"># Default value : False</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">olsConfiguration=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : datafileJarLocation</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Location of the data file jar</span></span><br><span class="line"><span class="comment"># Valid values  : Directory containing compressed datafile jar</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">datafileJarLocation=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : datafileDestination</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Location of the data file&#x27;s</span></span><br><span class="line"><span class="comment"># Valid values  : Directory for all the database files</span></span><br><span class="line"><span class="comment"># Default value : $ORACLE_BASE/oradata</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">datafileDestination=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : recoveryAreaDestination</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Location of the data file&#x27;s</span></span><br><span class="line"><span class="comment"># Valid values  : Recovery Area location</span></span><br><span class="line"><span class="comment"># Default value : $ORACLE_BASE/flash_recovery_area</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">recoveryAreaDestination=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : storageType</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Specifies the storage on which the database is to be created</span></span><br><span class="line"><span class="comment"># Valid values  : FS (CFS for RAC), ASM</span></span><br><span class="line"><span class="comment"># Default value : FS</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">storageType=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : diskGroupName</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Specifies the disk group name for the storage</span></span><br><span class="line"><span class="comment"># Default value : DATA</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">diskGroupName=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : asmsnmpPassword</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Password for ASM Monitoring</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">asmsnmpPassword=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : recoveryGroupName</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Specifies the disk group name for the recovery area</span></span><br><span class="line"><span class="comment"># Default value : RECOVERY</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">recoveryGroupName=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : characterSet</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Character set of the database</span></span><br><span class="line"><span class="comment"># Valid values  : Check Oracle19c National Language Support Guide</span></span><br><span class="line"><span class="comment"># Default value : &quot;US7ASCII&quot;</span></span><br><span class="line"><span class="comment"># Mandatory     : NO</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">characterSet=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : nationalCharacterSet</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : National Character set of the database</span></span><br><span class="line"><span class="comment"># Valid values  : &quot;UTF8&quot; or &quot;AL16UTF16&quot;. For details, check Oracle19c National Language Support Guide</span></span><br><span class="line"><span class="comment"># Default value : &quot;AL16UTF16&quot;</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">nationalCharacterSet=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : registerWithDirService</span></span><br><span class="line"><span class="comment"># Datatype      : Boolean</span></span><br><span class="line"><span class="comment"># Description   : Specifies whether to register with Directory Service.</span></span><br><span class="line"><span class="comment"># Valid values  : TRUE \ FALSE</span></span><br><span class="line"><span class="comment"># Default value : FALSE</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">registerWithDirService=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : dirServiceUserName</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Specifies the name of the directory service user</span></span><br><span class="line"><span class="comment"># Mandatory     : YES, if the value of registerWithDirService is TRUE</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">dirServiceUserName=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : dirServicePassword</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : The password of the directory service user.</span></span><br><span class="line"><span class="comment">#                 You can also specify the password at the command prompt instead of here.</span></span><br><span class="line"><span class="comment"># Mandatory     : YES, if the value of registerWithDirService is TRUE</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">dirServicePassword=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : walletPassword</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : The password for wallet to created or modified.</span></span><br><span class="line"><span class="comment">#                 You can also specify the password at the command prompt instead of here.</span></span><br><span class="line"><span class="comment"># Mandatory     : YES, if the value of registerWithDirService is TRUE</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">walletPassword=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : listeners</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Specifies list of listeners to register the database with.</span></span><br><span class="line"><span class="comment">#                 By default the database is configured for all the listeners specified in the</span></span><br><span class="line"><span class="comment">#                 $ORACLE_HOME/network/admin/listener.ora</span></span><br><span class="line"><span class="comment"># Valid values  : The list should be comma separated like &quot;listener1,listener2&quot;.</span></span><br><span class="line"><span class="comment"># Mandatory     : NO</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">listeners=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : variablesFile</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : Location of the file containing variable value pair</span></span><br><span class="line"><span class="comment"># Valid values  : A valid file-system file. The variable value pair format in this file</span></span><br><span class="line"><span class="comment">#                 is &lt;variable&gt;=&lt;value&gt;. Each pair should be in a new line.</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : NO</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">variablesFile=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : variables</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : comma separated list of name=value pairs. Overrides variables defined in variablefile and templates</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : NO</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">variables=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : initParams</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : comma separated list of name=value pairs. Overrides initialization parameters defined in templates</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : NO</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">initParams=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : sampleSchema</span></span><br><span class="line"><span class="comment"># Datatype      : Boolean</span></span><br><span class="line"><span class="comment"># Description   : Specifies whether or not to add the Sample Schemas to your database</span></span><br><span class="line"><span class="comment"># Valid values  : TRUE \ FALSE</span></span><br><span class="line"><span class="comment"># Default value : FASLE</span></span><br><span class="line"><span class="comment"># Mandatory     : No</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">sampleSchema=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : memoryPercentage</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : percentage of physical memory for Oracle</span></span><br><span class="line"><span class="comment"># Default value : None</span></span><br><span class="line"><span class="comment"># Mandatory     : NO</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">memoryPercentage=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : databaseType</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : used for memory distribution when memoryPercentage specified</span></span><br><span class="line"><span class="comment"># Valid values  : MULTIPURPOSE|DATA_WAREHOUSING|OLTP</span></span><br><span class="line"><span class="comment"># Default value : MULTIPURPOSE</span></span><br><span class="line"><span class="comment"># Mandatory     : NO</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">databaseType=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : automaticMemoryManagement</span></span><br><span class="line"><span class="comment"># Datatype      : Boolean</span></span><br><span class="line"><span class="comment"># Description   : flag to indicate Automatic Memory Management is used</span></span><br><span class="line"><span class="comment"># Valid values  : TRUE/FALSE</span></span><br><span class="line"><span class="comment"># Default value : TRUE</span></span><br><span class="line"><span class="comment"># Mandatory     : NO</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">automaticMemoryManagement=</span><br><span class="line"></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line"><span class="comment"># Name          : totalMemory</span></span><br><span class="line"><span class="comment"># Datatype      : String</span></span><br><span class="line"><span class="comment"># Description   : total memory in MB to allocate to Oracle</span></span><br><span class="line"><span class="comment"># Valid values  :</span></span><br><span class="line"><span class="comment"># Default value :</span></span><br><span class="line"><span class="comment"># Mandatory     : NO</span></span><br><span class="line"><span class="comment">#-----------------------------------------------------------------------------</span></span><br><span class="line">totalMemory=</span><br></pre></td></tr></table></figure><p>需要修改的内容：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">responseFileVersion=/home/oracle/rspfmt_dbca_response_schema_v19<span class="number">.0</span><span class="number">.0</span></span><br><span class="line">gdbName=orcl</span><br><span class="line">sid=orcl</span><br><span class="line">databaseConfigType=SI</span><br><span class="line">templateName=General_Purpose.dbc</span><br><span class="line">oracleHomeUserPassword=oracle</span><br><span class="line">totalMemory=<span class="number">1500</span></span><br><span class="line">sysPassword=oracle</span><br><span class="line">systemPassword=oracle</span><br><span class="line">datafileDestination=/u01/app/oracle/oradata</span><br><span class="line">characterSet=ZHS16GBK</span><br><span class="line">nationalCharacterSet=AL16UTF16</span><br><span class="line">databaseType=OLTP</span><br></pre></td></tr></table></figure><p>使用 rsp 文件静默创建数据库：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-<span class="number">2</span> ~]$ dbca -silent -createDatabase -responseFile /tmp/dbca.rsp</span><br></pre></td></tr></table></figure><p>输出结果：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250104153319.png"></p><p>验证数据库已创建：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7-<span class="number">2</span> ~]$ sqlplus / <span class="keyword">as</span> sysdba</span><br><span class="line"></span><br><span class="line">SQL*Plus: Release <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production on Sat Jan <span class="number">4</span> <span class="number">15</span>:<span class="number">33</span>:<span class="number">44</span> <span class="number">2025</span></span><br><span class="line">Version <span class="number">19.3</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span></span><br><span class="line"></span><br><span class="line">Copyright (c) <span class="number">1982</span>, <span class="number">2019</span>, Oracle.  All rights reserved.</span><br><span class="line"></span><br><span class="line">Connected to:</span><br><span class="line">Oracle Database 19c Enterprise Edition Release <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production</span><br><span class="line">Version <span class="number">19.3</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span></span><br><span class="line"></span><br><span class="line">SQL&gt; select status <span class="keyword">from</span> v$instance;</span><br><span class="line"></span><br><span class="line">STATUS</span><br><span class="line">------------</span><br><span class="line">OPEN</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://www.imxcai.com/database/oracle/ocp-02-oracle-silent-install.html</id>
    <link href="https://www.imxcai.com/database/oracle/ocp-02-oracle-silent-install.html"/>
    <published>2025-01-04T07:36:27.000Z</published>
    <summary>使用响应文件静默安装和创建数据库。</summary>
    <title>OCP-02：Oracle 静默安装</title>
    <updated>2025-01-13T09:30:22.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>imxcai</name>
    </author>
    <category term="Database" scheme="https://www.imxcai.com/category/database/"/>
    <category term="Oracle" scheme="https://www.imxcai.com/category/database/oracle/"/>
    <category term="Oracle 19C" scheme="https://www.imxcai.com/tag/oracle-19c/"/>
    <content>
      <![CDATA[<h2 id="部署之前的-Checklist"><a href="#部署之前的-Checklist" class="headerlink" title="部署之前的 Checklist"></a>部署之前的 Checklist</h2><p>在进行部署之前需要满足硬件、Linux 操作系统、服务器配置、存储配置和用户环境要求，具体可阅读 Oracle 19C 的安装手册：<a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/oracle-database-installation-checklist.html">https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/oracle-database-installation-checklist.html</a></p><span id="more"></span><h2 id="Linux-的准备工作"><a href="#Linux-的准备工作" class="headerlink" title="Linux 的准备工作"></a>Linux 的准备工作</h2><p>关闭主机防火墙（非必须，也可以设置防火墙策略放行所需开放的端口）：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo systemctl disable --now firewalld</span><br></pre></td></tr></table></figure><p>禁用 SELinux，避免因为不满足策略导致被阻止：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">sudo setenforce <span class="number">0</span></span><br><span class="line"></span><br><span class="line">grep SELINUX= /etc/selinux/config</span><br><span class="line"><span class="comment"># SELINUX= can take one of these three values:</span></span><br><span class="line">SELINUX=disabled</span><br></pre></td></tr></table></figure><p>修改 <code>/etc/hosts</code> 添加名称解析：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">[student@oel7 ~]$ cat /etc/hosts</span><br><span class="line"><span class="number">127.0</span><span class="number">.0</span><span class="number">.1</span>   localhost localhost.localdomain localhost4 localhost4.localdomain4</span><br><span class="line">::<span class="number">1</span>         localhost localhost.localdomain localhost6 localhost6.localdomain6</span><br><span class="line"><span class="number">192.168</span><span class="number">.131</span><span class="number">.141</span> oel7    oel7.example.com</span><br></pre></td></tr></table></figure><h3 id="dev-shm"><a href="#dev-shm" class="headerlink" title="&#x2F;dev&#x2F;shm"></a>&#x2F;dev&#x2F;shm</h3><p><code>/dev/shm</code> 目录比较特殊，往目录中写入的文件会存放于 RAM 中，相当于 ramdisk 。<br><code>/dev/shm</code> 的大小默认为内存的一半：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">[student@oel7 ~]$ free -m</span><br><span class="line">              total        used        free      shared  buff/cache   available</span><br><span class="line">Mem:           <span class="number">3926</span>         <span class="number">827</span>         <span class="number">347</span>          <span class="number">43</span>        <span class="number">2752</span>        <span class="number">2779</span></span><br><span class="line">Swap:          <span class="number">4095</span>           <span class="number">0</span>        <span class="number">4095</span></span><br><span class="line">[student@oel7 ~]$ df -h /dev/shm</span><br><span class="line">Filesystem      Size  Used Avail Use% Mounted on</span><br><span class="line">tmpfs           <span class="number">2.0</span>G     <span class="number">0</span>  <span class="number">2.0</span>G   <span class="number">0</span>% /dev/shm</span><br></pre></td></tr></table></figure><p>大小为 <code>2G</code> 但并不是真实占用 2G 内存，只是最大上限能使用 2G 内存。</p><p>Oracle 有一个自动内存管理（Automatic Memory Management）特性，需要更多的共享内存，如果启用的话，共享内存大小必须大于 <code>MEMORY_MAX_TARGET</code> 和 <code>MEMORY_TARGET</code> 的初始化参数值。</p><p>增加 <code>/dev/shm</code> 大小：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">[student@oel7 ~]$ tail -<span class="number">1</span> /etc/fstab</span><br><span class="line">shm     /dev/shm        tmpfs   size=3G <span class="number">0</span> <span class="number">0</span></span><br><span class="line">[student@oel7 ~]$ sudo mount -o remount /dev/shm</span><br><span class="line">[student@oel7 ~]$ df -h /dev/shm</span><br><span class="line">Filesystem      Size  Used Avail Use% Mounted on</span><br><span class="line">tmpfs           <span class="number">3.0</span>G     <span class="number">0</span>  <span class="number">3.0</span>G   <span class="number">0</span>% /dev/shm</span><br></pre></td></tr></table></figure><h3 id="依赖包"><a href="#依赖包" class="headerlink" title="依赖包"></a>依赖包</h3><p>不同的 OS 所需的依赖包有所不同，具体可参考 Oracle 官方文档：<a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/supported-oracle-linux-7-distributions-for-x86-64.html">https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/supported-oracle-linux-7-distributions-for-x86-64.html</a></p><p>在 OEL7 中，需要以下依赖包：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line">bc</span><br><span class="line">binutils</span><br><span class="line">compat-libcap1</span><br><span class="line">compat-libstdc++-<span class="number">33</span></span><br><span class="line">elfutils-libelf</span><br><span class="line">elfutils-libelf-devel</span><br><span class="line">fontconfig-devel</span><br><span class="line">glibc</span><br><span class="line">glibc-devel</span><br><span class="line">ksh</span><br><span class="line">libaio</span><br><span class="line">libaio-devel</span><br><span class="line">libXrender</span><br><span class="line">libXrender-devel</span><br><span class="line">libX11</span><br><span class="line">libXau</span><br><span class="line">libXi</span><br><span class="line">libXtst</span><br><span class="line">libgcc</span><br><span class="line">libstdc++</span><br><span class="line">libstdc++-devel</span><br><span class="line">libxcb</span><br><span class="line">make</span><br><span class="line">policycoreutils</span><br><span class="line">policycoreutils-python</span><br><span class="line">smartmontools</span><br><span class="line">sysstat</span><br></pre></td></tr></table></figure><p>但是只需安装 <code>oracle-database-preinstall-19c</code> 会自动处理以上依赖包：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">[student@oel7 ~]$ yum info oracle-database-preinstall-19c</span><br><span class="line">Loaded plugins: langpacks, ulninfo</span><br><span class="line">Available Packages</span><br><span class="line">Name        : oracle-database-preinstall-19c</span><br><span class="line">Arch        : x86_64</span><br><span class="line">Version     : <span class="number">1.0</span></span><br><span class="line">Release     : <span class="number">3.</span>el7</span><br><span class="line">Size        : <span class="number">27</span> k</span><br><span class="line">Repo        : ol7_latest/x86_64</span><br><span class="line">Summary     : Oracle Database Preinstallation RPM</span><br><span class="line">License     : GPLv2</span><br><span class="line">Description : The Oracle Database Preinstallation RPM automatically installs <span class="built_in">any</span> additional</span><br><span class="line">            : packages needed <span class="keyword">for</span> installing Oracle Grid Infrastructure <span class="keyword">and</span> Oracle Database</span><br><span class="line">            : <span class="keyword">and</span> configures your server operating system automatically, including setting</span><br><span class="line">            : kernel parameters <span class="keyword">and</span> other basic operating system requirements <span class="keyword">for</span> install.</span><br></pre></td></tr></table></figure><p>使用 <code>yum install</code> 进行安装：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[student@oel7 ~]$ sudo yum install -y oracle-database-preinstall-19c</span><br></pre></td></tr></table></figure><p>同时，该软件会自动配置好用户和组：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">[student@oel7 ~]$ <span class="built_in">id</span> oracle</span><br><span class="line">uid=<span class="number">54321</span>(oracle) gid=<span class="number">54321</span>(oinstall) groups=<span class="number">54321</span>(oinstall),<span class="number">54322</span>(dba),<span class="number">54323</span>(oper),<span class="number">54324</span>(backupdba),<span class="number">54325</span>(dgdba),<span class="number">54326</span>(kmdba),<span class="number">54330</span>(racdba)</span><br></pre></td></tr></table></figure><p>设置好内核参数：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br></pre></td><td class="code"><pre><span class="line">[student@oel7 ~]$ cat /etc/sysctl.d/<span class="number">99</span>-oracle-database-preinstall-19c-sysctl.conf</span><br><span class="line"><span class="comment"># sysctl settings are defined through files in</span></span><br><span class="line"><span class="comment"># /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Vendors settings live in /usr/lib/sysctl.d/.</span></span><br><span class="line"><span class="comment"># To override a whole file, create a new file with the same in</span></span><br><span class="line"><span class="comment"># /etc/sysctl.d/ and put new settings there. To override</span></span><br><span class="line"><span class="comment"># only specific settings, add a file with a lexically later</span></span><br><span class="line"><span class="comment"># name in /etc/sysctl.d/ and put new settings there.</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># For more information, see sysctl.conf(5) and sysctl.d(5).</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># oracle-database-preinstall-19c setting for fs.file-max is 6815744</span></span><br><span class="line">fs.file-<span class="built_in">max</span> = <span class="number">6815744</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># oracle-database-preinstall-19c setting for kernel.sem is &#x27;250 32000 100 128&#x27;</span></span><br><span class="line">kernel.sem = <span class="number">250</span> <span class="number">32000</span> <span class="number">100</span> <span class="number">128</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># oracle-database-preinstall-19c setting for kernel.shmmni is 4096</span></span><br><span class="line">kernel.shmmni = <span class="number">4096</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># oracle-database-preinstall-19c setting for kernel.shmall is 1073741824 on x86_64</span></span><br><span class="line">kernel.shmall = <span class="number">1073741824</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># oracle-database-preinstall-19c setting for kernel.shmmax is 4398046511104 on x86_64</span></span><br><span class="line">kernel.shmmax = <span class="number">4398046511104</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># oracle-database-preinstall-19c setting for kernel.panic_on_oops is 1 per Orabug 19212317</span></span><br><span class="line">kernel.panic_on_oops = <span class="number">1</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># oracle-database-preinstall-19c setting for net.core.rmem_default is 262144</span></span><br><span class="line">net.core.rmem_default = <span class="number">262144</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># oracle-database-preinstall-19c setting for net.core.rmem_max is 4194304</span></span><br><span class="line">net.core.rmem_max = <span class="number">4194304</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># oracle-database-preinstall-19c setting for net.core.wmem_default is 262144</span></span><br><span class="line">net.core.wmem_default = <span class="number">262144</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># oracle-database-preinstall-19c setting for net.core.wmem_max is 1048576</span></span><br><span class="line">net.core.wmem_max = <span class="number">1048576</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># oracle-database-preinstall-19c setting for net.ipv4.conf.all.rp_filter is 2</span></span><br><span class="line">net.ipv4.conf.<span class="built_in">all</span>.rp_filter = <span class="number">2</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># oracle-database-preinstall-19c setting for net.ipv4.conf.default.rp_filter is 2</span></span><br><span class="line">net.ipv4.conf.default.rp_filter = <span class="number">2</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># oracle-database-preinstall-19c setting for fs.aio-max-nr is 1048576</span></span><br><span class="line">fs.aio-<span class="built_in">max</span>-nr = <span class="number">1048576</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># oracle-database-preinstall-19c setting for net.ipv4.ip_local_port_range is 9000 65500</span></span><br><span class="line">net.ipv4.ip_local_port_range = <span class="number">9000</span> <span class="number">65500</span></span><br></pre></td></tr></table></figure><h3 id="设置安装目录"><a href="#设置安装目录" class="headerlink" title="设置安装目录"></a>设置安装目录</h3><p>为数据库软件安装位置创建目录并设置权限：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">sudo mkdir -p /u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/db_1</span><br><span class="line">sudo chown -R oracle:oinstall /u01</span><br><span class="line">sudo chown <span class="number">775</span> /u01 -R</span><br></pre></td></tr></table></figure><h3 id="设置-oracle-用户"><a href="#设置-oracle-用户" class="headerlink" title="设置 oracle 用户"></a>设置 oracle 用户</h3><p>为 <code>oracle</code> 用户设置密码，方便后续的使用：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">[student@oel7 ~]$ echo oracle | sudo passwd --stdin oracle</span><br><span class="line">Changing password <span class="keyword">for</span> user oracle.</span><br><span class="line">passwd: <span class="built_in">all</span> authentication tokens updated successfully.</span><br></pre></td></tr></table></figure><p>还需为 oracle 用户设置环境变量用于后续连接数据库：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line">[student@oel7 ~]$ su - oracle</span><br><span class="line">Password:</span><br><span class="line">Last login: Fri Jan  <span class="number">3</span> <span class="number">17</span>:<span class="number">29</span>:<span class="number">40</span> CST <span class="number">2025</span> on pts/<span class="number">1</span></span><br><span class="line">[oracle@oel7 ~]$ cat .bash_profile</span><br><span class="line"><span class="comment"># .bash_profile</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Get the aliases and functions</span></span><br><span class="line"><span class="keyword">if</span> [ -f ~/.bashrc ]; then</span><br><span class="line">        . ~/.bashrc</span><br><span class="line">fi</span><br><span class="line"></span><br><span class="line"><span class="comment"># User specific environment and startup programs</span></span><br><span class="line"></span><br><span class="line">PATH=$PATH:$HOME/.local/<span class="built_in">bin</span>:$HOME/<span class="built_in">bin</span></span><br><span class="line"></span><br><span class="line">export PATH</span><br><span class="line">export ORACLE_SID=orcl</span><br><span class="line">export ORACLE_BASE=/u01/app/oracle</span><br><span class="line">export ORACLE_HOME=$ORACLE_BASE/product/<span class="number">19.3</span><span class="number">.0</span>/db_1</span><br><span class="line">export PATH=$PATH:$ORACLE_HOME/<span class="built_in">bin</span></span><br><span class="line">export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib</span><br><span class="line">export CLASSPATH=$ORACLE_HOME/JRE:ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib</span><br><span class="line"></span><br><span class="line">[oracle@oel7 ~]$ source .bash_profile</span><br></pre></td></tr></table></figure><h2 id="安装-Oracle-Database"><a href="#安装-Oracle-Database" class="headerlink" title="安装 Oracle Database"></a>安装 Oracle Database</h2><p>Oracle 提供了 rpm 包和 Zip 包两种安装方式，对应的下载地址为：<a href="https://www.oracle.com/database/technologies/oracle-database-software-downloads.html">https://www.oracle.com/database/technologies/oracle-database-software-downloads.html</a></p><h3 id="上传和解压安装包"><a href="#上传和解压安装包" class="headerlink" title="上传和解压安装包"></a>上传和解压安装包</h3><p>使用 Zip 包进行安装，首先需要将文件上传到 <code>ORACLE_HOME</code> 目录中，然后使用 <code>oracle</code> 用户进行解压：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7 db_1]$ pwd</span><br><span class="line">/u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/db_1</span><br><span class="line">[oracle@oel7 db_1]$ ls</span><br><span class="line">LINUX.X64_193000_db_home.<span class="built_in">zip</span></span><br><span class="line">[oracle@oel7 db_1]$ unzip LINUX.X64_193000_db_home.<span class="built_in">zip</span></span><br></pre></td></tr></table></figure><h3 id="通过图形化安装"><a href="#通过图形化安装" class="headerlink" title="通过图形化安装"></a>通过图形化安装</h3><p>使用 <code>oracle</code> 用户前往 <code>$ORACLE_HOME</code> 目录，在此目录下运行解压出来的 <code>runInstaller</code> 安装程序：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7 ~]$ cd $ORACLE_HOME</span><br><span class="line">[oracle@oel7 db_1]$ pwd</span><br><span class="line">/u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/db_1</span><br><span class="line">[oracle@oel7 db_1]$ ./runInstaller</span><br></pre></td></tr></table></figure><p>图形化安装步骤：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250103180751.png"></p><h2 id="创建监听"><a href="#创建监听" class="headerlink" title="创建监听"></a>创建监听</h2><p>使用 <code>oracle</code> 用户运行 <code>netca</code> 命令打开图形化配置监听：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250103183810.png"></p><p>使用默认的值创建一个名为 <code>LISTENER</code> 监听 TCP 1521 ，检查创建情况：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7 ~]$ lsnrctl status</span><br><span class="line"></span><br><span class="line">LSNRCTL <span class="keyword">for</span> Linux: Version <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production on 03-JAN-<span class="number">2025</span> <span class="number">18</span>:<span class="number">39</span>:<span class="number">33</span></span><br><span class="line"></span><br><span class="line">Copyright (c) <span class="number">1991</span>, <span class="number">2019</span>, Oracle.  All rights reserved.</span><br><span class="line"></span><br><span class="line">Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oel7)(PORT=<span class="number">1521</span>)))</span><br><span class="line">STATUS of the LISTENER</span><br><span class="line">------------------------</span><br><span class="line">Alias                     LISTENER</span><br><span class="line">Version                   TNSLSNR <span class="keyword">for</span> Linux: Version <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production</span><br><span class="line">Start Date                03-JAN-<span class="number">2025</span> <span class="number">18</span>:<span class="number">38</span>:<span class="number">53</span></span><br><span class="line">Uptime                    <span class="number">0</span> days <span class="number">0</span> hr. <span class="number">0</span> <span class="built_in">min</span>. <span class="number">39</span> sec</span><br><span class="line">Trace Level               off</span><br><span class="line">Security                  ON: Local OS Authentication</span><br><span class="line">SNMP                      OFF</span><br><span class="line">Listener Parameter File   /u01/app/oracle/product/<span class="number">19.3</span><span class="number">.0</span>/db_1/network/admin/listener.ora</span><br><span class="line">Listener Log File         /u01/app/oracle/diag/tnslsnr/oel7/listener/alert/log.xml</span><br><span class="line">Listening Endpoints Summary...</span><br><span class="line">  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oel7)(PORT=<span class="number">1521</span>)))</span><br><span class="line">  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))</span><br><span class="line">The listener supports no services</span><br><span class="line">The command completed successfully</span><br></pre></td></tr></table></figure><h2 id="创建数据库"><a href="#创建数据库" class="headerlink" title="创建数据库"></a>创建数据库</h2><p>使用 <code>dbca</code> 图形化方式创建数据库。<br>创建数据库步骤：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250103192123.png"></p><h2 id="命令行安装"><a href="#命令行安装" class="headerlink" title="命令行安装"></a>命令行安装</h2><p><code>dbca</code> 除了通过图形化方式创建数据库外还支持通过命令行方式创建数据库。</p><p>创建非容器数据库：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname test -sid test -responseFile NO_VALUE -characterSet AL32UTF8 -memoryPercentage <span class="number">30</span> -emConfiguration LOCAL</span><br></pre></td></tr></table></figure><p>执行之后的输出：</p><p><img src="https://image.imxcai.com/wp-content/uploads/2025/01/Pasted-image-20250103210606.png"></p><p>创建容器数据库：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">dbca -silent -createDatabase -createAsContainerDatabase true -templateName General_Purpose.dbc -gdbname mydb -sid mydb -responseFile NO_VALUE -characterSet AL32UTF8 -memoryPercentage <span class="number">30</span> -emConfiguration LOCAL</span><br></pre></td></tr></table></figure><p>命令中使用的参数：<br><code>-silent</code>：静默方式安装<br><code>--createDatabase</code>：创建数据库<br><code>--createAsContainerDatabase</code>：是否创建容器数据库<br><code>--templateName</code>：模板名称<br><code>--gdbname</code>：指定创建的全局数据库名称<br><code>-sid</code>：指定数据库系统标识符<br><code>-reposonseFile</code>：指定响应文件<br><code>-characterSet</code>：指定数据库使用的字符集<br><code>-memoryPercentage</code>：指定用于数据库的物理内存百分比<br><code>-emConfiguration</code>：指定 Enterprise Manager 的管理选择</p><p>测试部署的数据库：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7 ~]$ sqlplus / <span class="keyword">as</span> sysdba</span><br><span class="line"></span><br><span class="line">SQL*Plus: Release <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production on Fri Jan <span class="number">3</span> <span class="number">22</span>:01:<span class="number">58</span> <span class="number">2025</span></span><br><span class="line">Version <span class="number">19.3</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span></span><br><span class="line"></span><br><span class="line">Copyright (c) <span class="number">1982</span>, <span class="number">2019</span>, Oracle.  All rights reserved.</span><br><span class="line"></span><br><span class="line">Connected to:</span><br><span class="line">Oracle Database 19c Enterprise Edition Release <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production</span><br><span class="line">Version <span class="number">19.3</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span></span><br><span class="line"></span><br><span class="line">SQL&gt; show pdbs;</span><br><span class="line"></span><br><span class="line">    CON_ID CON_NAME                       OPEN MODE  RESTRICTED</span><br><span class="line">---------- ------------------------------ ---------- ----------</span><br><span class="line">         <span class="number">2</span> PDB$SEED                       READ ONLY  NO</span><br><span class="line">         <span class="number">3</span> PDB1                           READ WRITE NO</span><br><span class="line">         <span class="number">4</span> PDB2                           READ WRITE NO</span><br><span class="line">SQL&gt; conn sys/oracle@oel7:<span class="number">1521</span>/pdb1 <span class="keyword">as</span> sysdba</span><br><span class="line">Connected.</span><br><span class="line">SQL&gt; show pdbs;</span><br><span class="line"></span><br><span class="line">    CON_ID CON_NAME                       OPEN MODE  RESTRICTED</span><br><span class="line">---------- ------------------------------ ---------- ----------</span><br><span class="line">         <span class="number">3</span> PDB1                           READ WRITE NO</span><br></pre></td></tr></table></figure><h3 id="切换实例"><a href="#切换实例" class="headerlink" title="切换实例"></a>切换实例</h3><p>查找实例：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7 ~]$ ps -ef | grep pmon</span><br><span class="line">oracle    <span class="number">2722</span>     <span class="number">1</span>  <span class="number">0</span> <span class="number">20</span>:<span class="number">54</span> ?        <span class="number">00</span>:<span class="number">00</span>:<span class="number">00</span> ora_pmon_orcl</span><br><span class="line">oracle    <span class="number">6238</span>     <span class="number">1</span>  <span class="number">0</span> <span class="number">21</span>:<span class="number">11</span> ?        <span class="number">00</span>:<span class="number">00</span>:<span class="number">00</span> ora_pmon_test</span><br><span class="line">oracle   <span class="number">10247</span>     <span class="number">1</span>  <span class="number">0</span> <span class="number">21</span>:<span class="number">32</span> ?        <span class="number">00</span>:<span class="number">00</span>:<span class="number">00</span> ora_pmon_mydb</span><br></pre></td></tr></table></figure><p>使用 <code>. oraenv</code> 切换 SID，然后连接数据库进行验证：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7 ~]$ . oraenv</span><br><span class="line">ORACLE_SID = [test] ? mydb</span><br><span class="line">The Oracle base remains unchanged <span class="keyword">with</span> value /u01/app/oracle</span><br><span class="line">[oracle@oel7 ~]$ sqlplus / <span class="keyword">as</span> sysdba</span><br><span class="line"></span><br><span class="line">SQL*Plus: Release <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production on Fri Jan <span class="number">3</span> <span class="number">21</span>:<span class="number">40</span>:08 <span class="number">2025</span></span><br><span class="line">Version <span class="number">19.3</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span></span><br><span class="line"></span><br><span class="line">Copyright (c) <span class="number">1982</span>, <span class="number">2019</span>, Oracle.  All rights reserved.</span><br><span class="line"></span><br><span class="line">Connected to:</span><br><span class="line">Oracle Database 19c Enterprise Edition Release <span class="number">19.0</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span> - Production</span><br><span class="line">Version <span class="number">19.3</span><span class="number">.0</span><span class="number">.0</span><span class="number">.0</span></span><br><span class="line"></span><br><span class="line">SQL&gt; show parameters name;</span><br><span class="line"></span><br><span class="line">NAME                                 TYPE        VALUE</span><br><span class="line">------------------------------------ ----------- ------------------------------</span><br><span class="line">cdb_cluster_name                     string</span><br><span class="line">cell_offloadgroup_name               string</span><br><span class="line">db_file_name_convert                 string</span><br><span class="line">db_name                              string      mydb</span><br><span class="line">db_unique_name                       string      mydb</span><br><span class="line">global_names                         boolean     FALSE</span><br><span class="line">instance_name                        string      mydb</span><br><span class="line">lock_name_space                      string</span><br><span class="line">log_file_name_convert                string</span><br><span class="line">pdb_file_name_convert                string</span><br><span class="line">processor_group_name                 string</span><br><span class="line"></span><br><span class="line">NAME                                 TYPE        VALUE</span><br><span class="line">------------------------------------ ----------- ------------------------------</span><br><span class="line">service_names                        string      mydb</span><br></pre></td></tr></table></figure><p>除此之外还可以通过设置环境变量的方式来切换：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">export ORACLE_SID=mydb</span><br></pre></td></tr></table></figure><h2 id="增强体验的工具和设置"><a href="#增强体验的工具和设置" class="headerlink" title="增强体验的工具和设置"></a>增强体验的工具和设置</h2><p>可以为系统配置 <code>rlwrap</code> 工具和提示符。</p><h3 id="rlwrap-安装配置"><a href="#rlwrap-安装配置" class="headerlink" title="rlwrap 安装配置"></a>rlwrap 安装配置</h3><p><code>rlwrap</code> 可方便在 <code>sqlpuls</code> 中使用上下左右键。<br>在 RHEL7 中，<code>rlwrap</code> 不在 YUM 仓库中也不在 EPEL 仓库中，可以通过源代码编译进行安装。</p><p>解压：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[root@oel7 ~]<span class="comment"># tar xf rlwrap-0.37.tar.gz</span></span><br></pre></td></tr></table></figure><p>安装所需的依赖和编译所需的包：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[root@oel7 ~]<span class="comment"># yum install -y gcc gcc-c++ libtermcap-devel readline readline-devel</span></span><br></pre></td></tr></table></figure><p>配置、编译和安装：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[root@oel7 rlwrap-<span class="number">0.37</span>]<span class="comment"># ./configure  &amp;&amp; make &amp;&amp; make install</span></span><br></pre></td></tr></table></figure><p>安装后位于 <code>/usr/local/bin/rlwrap</code></p><p>随后在环境变量中添加别名进行使用：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">[oracle@oel7 ~]$ tail -<span class="number">1</span> .bash_profile</span><br><span class="line">alias sqlplus=<span class="string">&#x27;/usr/local/bin/rlwrap sqlplus&#x27;</span></span><br><span class="line">[oracle@oel7 ~]$ source .bash_profile</span><br></pre></td></tr></table></figure><h3 id="提示符配置"><a href="#提示符配置" class="headerlink" title="提示符配置"></a>提示符配置</h3><p>sqlplus 的提示符可以编辑 <code>$ORACLE_HOME/sqlplus/admin/glogin.sh</code> ，设置为以下内容：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">set</span> termout off</span><br><span class="line">column propmt_c new_value propmt_c</span><br><span class="line">SELECT SYS_CONTEXT (<span class="string">&#x27;USERENV&#x27;</span>, <span class="string">&#x27;CON_NAME&#x27;</span>) <span class="keyword">as</span> propmt_c FROM DUAL;</span><br><span class="line"><span class="built_in">set</span> sqlprompt <span class="string">&quot;_user&#x27;@&#x27;_connect_identifier(&amp;propmt_c)&gt; &quot;</span> </span><br></pre></td></tr></table></figure><p>使用 sqlplus 连接数据库后就有提示符：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">SYS@orcl(CDB$ROOT)&gt;</span><br><span class="line"><span class="meta">@(<span class="params">CDB$ROOT</span>)&gt; conn sys/oracle@oel7:<span class="number">1521</span>/pdb1 as sysdba</span></span><br><span class="line">Connected.</span><br><span class="line">SYS@oel7:<span class="number">1521</span>/pdb1(PDB1)&gt;</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://www.imxcai.com/database/oracle/ocp-01-deploy-oracle-19c-on-linux.html</id>
    <link href="https://www.imxcai.com/database/oracle/ocp-01-deploy-oracle-19c-on-linux.html"/>
    <published>2025-01-03T14:36:44.000Z</published>
    <summary>Oracle 19C 通过图形化和命令行安装。</summary>
    <title>OCP-01：在 Linux 上部署 Oracle database 19C</title>
    <updated>2025-01-11T08:23:02.000Z</updated>
  </entry>
</feed>
