https://blogs.oracle.com/UPGRADE/entry/spfile_parameter_max_pdbs_a
時として、私の仕事は一日の最後に笑顔にする側面があります。
オスロからキールへ向かう船上でのOUGN Conferenceの講演の中で、Johannes Ahrendsと同席しました。
CarajanDB - Blog Johannes Ahrendsその後、シングルテナントを指向するお客様に不可欠なPDBの個数を制限する公式の方法がなぜ存在しないのかを議論していました。ハンズオン環境を立ち上げ、休憩の間ちょっと試してみましたが、DROP PLUGGABLE DATABASEを実行しない限り、unplug/plugオペレーションでCONTAINER$中に残ってしまうため、CONTAINER$の制限は正しいソリューションではないことがわかりました。たとえ残りを削除したとしても、COTAINER$への制約をつける方法は上手くいきません。
http://www.carajandb.com/en/blogs/blog-jahrends-en
翌朝の朝食でヨハネスはトリガーについて言及し、すぐにトリガーを発行しました。しかしながら、データ・ディクショナリを使いこなす場合にデータベースのサポートを維持することはよい考えではありません。
そのため、私は社内に問合せ、はっきりと「これを望んでいない人がいる」というメッセージを受け取りました。
オラクルで長く働いているので、この意味がわかります、物事をさらに議論したくないときは、「誰か」を責めるのが一般的です。 「誰か」の背後に完全に隠れることができますからね。
Oracle Database 12.2のテストおよび試用を開始し、リリースラベル間のinit.oraパラメータを収集し、変更点や追加箇所を検出していたときに大きな驚きがありました。そして明らかに、その驚きがここに現れたのです。
MAX_PDBSつまり、パラメータの説明によると、CDBやApplication ROOTで許容するPDBの最大個数という意味です。
http://docs.oracle.com/database/122/REFRN/MAX_PDBS.htm#REFRN-GUID-55526BAC-DCB2-4C76-9ACF-1E3D2047E267
私は驚き、うれしくなり、そして自分の環境ですぐに試さなくては、と思いました。既に自身の環境には3個のPDB(PDB$SEEDは含めていません)がありました。
そんなわけで、(少なくとも私の環境では)エラーメッセージが少々粗いですが、このパラメータは求めていたことを実現してくれています。シングルテナント環境では、この値を1に設定し、このコンテナデータベースに対し、2個目のPDBの作成やプラグインをさせないようにしましょう。SQL> alter system set max_pdbs=3; System altered. SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ------ ---------------------- ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB1 READ WRITE NO 4 PDB2 READ WRITE NO 5 CLONE_PDB MOUNTED SQL> alter system set max_pdbs=2; alter system set max_pdbs=2 * ERROR at line 1: ORA-32017: failure in updating SPFILE ORA-65331: DDL on a data link table is outside an application action.
まっさらのコンテナデータベースを使い別のテストを実施しました。
確かなソリューションのように見えます。SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ------ ------------- ---------- ---------- 2 PDB$SEED READ ONLY NO SQL> alter system set max_pdbs=1; System altered. SQL> show parameter max_pdbs NAME TYPE VALUE ------------------------ -------- ----- max_pdbs integer 1 SQL> create pluggable database pdb1 admin user adm identified by adm file_name_convert=('/u02/oradata/CDB2/pdbseed','/u02/oradata/CDB2/pdb1'); Pluggable database created. SQL> create pluggable database pdb2 admin user adm identified by adm file_name_convert=('/u02/oradata/CDB2/pdbseed','/u02/oradata/CDB2/pdb2'); create pluggable database pdb2 admin user adm identified by adm file_name_convert=('/u02/oradata/CDB2/pdbseed','/u02/oradata/CDB2/pdb2') * ERROR at line 1: ORA-65010: maximum number of pluggable databases created SQL> drop pluggable database pdb1 including datafiles; Pluggable database dropped. SQL> create pluggable database pdb2 admin user adm identified by adm file_name_convert=('/u02/oradata/CDB2/pdbseed','/u02/oradata/CDB2/pdb2'); Pluggable database created.
しかしながら、Oracle ACE DirectorのFranck Pachotのエントリもご覧ください。このパラメータによって発生する問題について記載しています。
Oracle 12cR2: MAX_PDBS
http://blog.dbi-services.com/oracle-12cr2-max_pdbs/
0 件のコメント:
コメントを投稿