Can I have more than one PDB$SEED?

No, one CDB can have and only have one PDB$SEED. But, we can put a database to read only as SEED database, and clone from it.

Can I close PDB$SEED?

By default, PDB$SEED cannot be modified and close

SQL> alter pluggable database PDB$SEED close;
alter pluggable database PDB$SEED close
                         *
ERROR at line 1:
ORA-65017: seed pluggable database may not be dropped or altered


SQL> alter pluggable database all close;

Pluggable database altered.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 HR                             MOUNTED

But, with dbms_pdb.exec_as_oracle_script, we can do this:

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 HR                             MOUNTED
SQL>  exec dbms_pdb.exec_as_oracle_script('alter pluggable database PDB$SEED close');

PL/SQL procedure successfully completed.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       MOUNTED
         3 HR                             MOUNTED
SQL> exec dbms_pdb.exec_as_oracle_script('alter pluggable database PDB$SEED open');

PL/SQL procedure successfully completed.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ WRITE NO
         3 HR                             MOUNTED
SQL> exec dbms_pdb.exec_as_oracle_script('alter pluggable database PDB$SEED close');

PL/SQL procedure successfully completed.

SQL> exec dbms_pdb.exec_as_oracle_script('alter pluggable database PDB$SEED open read only');

PL/SQL procedure successfully completed.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 HR                             MOUNTED

How to modify PDB$SEED?

How To Modify the Common Profile Limit in Multitenant Database? (Doc ID 2328994.1)

alter session set "_oracle_script"=true;

SQL> alter session set container=pdb$seed;

Session altered.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
SQL> alter session set "_oracle_script"=true;

Session altered.

SQL> shutdown immediate;
Pluggable Database closed.
SQL> startup
Pluggable Database opened.
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ WRITE NO
SQL> create tablespace test datafile size 10M;

Tablespace created.

SQL> shutdown immediate;
Pluggable Database closed.

SQL> startup open read only;
Pluggable Database opened.
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO

-- after reconnect to cdb
SQL> startup force;
ORACLE instance started.

Total System Global Area  713031680 bytes
Fixed Size                  2928488 bytes
Variable Size             520093848 bytes
Database Buffers          184549376 bytes
Redo Buffers                5459968 bytes
Database mounted.
Database opened.
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 HR                             MOUNTED

What will happen if the datafile of PDB$SEED missing and how to recreate without backup?

CDB can open, PDB$SEED can open read only if the missing datafile is not SYSTEM/UNDO.

SQL> select file_name from dba_data_files;         
select file_name from dba_data_files
                      *
ERROR at line 1:
ORA-01157: cannot identify/lock data file 13 - see DBWR trace file
ORA-01110: data file 13: '/opt/oracle/oradata/O12102/7DE2B53C634D1689E053291010532345/datafile/o1_mf_test_g6pwnokd_.dbf'

If you don’t clone an new PDB, there is no impact.

There is no simple way to create PDB$SEED with some scripts.
The standard way is recreate a new CDB and unplug from the old cdb and plug into the new one.

Missing PDB$SEED's Datafiles with no backup (Doc ID 2104370.1)

How to create a new PDB$SEED from an existing PDB?

We can use dbms_pdb.exec_as_oracle_script to drop PDB$SEED and clone a new one from an existing PDB
But it is not an documented way.

SQL> exec dbms_pdb.exec_as_oracle_script('alter pluggable database PDB$SEED close');

PL/SQL procedure successfully completed.

SQL> exec dbms_pdb.exec_as_oracle_script('drop pluggable database PDB$SEED including datafiles');

PL/SQL procedure successfully completed.

SQL> show pdbs   

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         3 HR                             MOUNTED
         
SQL> alter pluggable database hr open;

Pluggable database altered.

SQL> create pluggable database PDB$SEED FROM HR;

Pluggable database created.

SQL> show pdbs              

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       MOUNTED
         3 HR                             READ WRITE NO
         
SQL> alter pluggable database PDB$SEED open;
alter pluggable database PDB$SEED open
                         *
ERROR at line 1:
ORA-65017: seed pluggable database may not be dropped or altered         

SQL>  exec dbms_pdb.exec_as_oracle_script('alter pluggable database PDB$SEED open');

PL/SQL procedure successfully completed.

SQL> exec dbms_pdb.exec_as_oracle_script('alter pluggable database PDB$SEED close');   

PL/SQL procedure successfully completed.

SQL> exec dbms_pdb.exec_as_oracle_script('alter pluggable database PDB$SEED open read only');

PL/SQL procedure successfully completed.

Do I need to patch PDB$SEED manually?
Patching the PDB$SEED (Doc ID 2038564.1)
PDB$SEED patching is automatically handled through datapatch so we shouldn’t have to manually patch the PDB$SEED.

What can I redefine when create a new PDB from PDB$SEED?

create pluggable database pdb1 
admin user ctais2 identified by oracle roles=(dba)
parallel 2
default tablespace test datafile size 10M
storage unlimited
tempfile reuse
logging
-- file_name_convert    # useful is we don't use OMF
-- create_file_dest     # useful is we don't use OMF
-- service_name_convert # there is no other service in the PDB$SEED
-- path_prefix          # used to restrict the path of directory objects
-- standbys             # used to exclude this PDB in the standby side
-- user_tablespaces     # not useful, PDB$SEED doesn't have other tablespaces
-- host= port=          # not useful, we create from PDB locally.
/