更新时间:2022-09-08 12:13:24
SYS@test> @ver
BANNER CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production 0
SYS@test> select name,open_mode,con_id from v$pdbs;
NAME OPEN_MODE CON_ID
-------------------- ---------- ----------
PDB$SEED READ ONLY 2
TEST01P READ WRITE 3
SYS@test> show parameter spfile ;
NAME TYPE VALUE
------- ------- -------------------------------------------------------------------
spfile string D:\APP\ORACLE\PRODUCT\12.1.0\DBHOME_1\DATABASE\SPFILETEST.ORA
D:\tools\rlwrap>sqlplus sys/xxxxx@test01p as sysdba
sqlplus sys/17cao1MS@test01p as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on Fri Jan 17 21:02:17 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SYS@test01p> show parameter spfile ;
NAME TYPE VALUE
------- ------- --------------------------------------------------------------------
spfile string D:\APP\ORACLE\PRODUCT\12.1.0\DBHOME_1\DATABASE\SPFILETEST.ORA
--可以发现spfile都是一样。如果Pluggable Databases或者他们之间的数据库不同情况如何呢?
SYS@test> show parameter db_file_multiblock_read_count
NAME TYPE VALUE
------------------------------ -------- --------
db_file_multiblock_read_count integer 128
SYS@test> alter session set container=test01p;
Session altered.
SYS@test> show parameter db_file_multiblock_read_count
NAME TYPE VALUE
------------------------------ -------- ------
db_file_multiblock_read_count integer 128
SYS@test> alter system set db_file_multiblock_read_count=8 ;
System altered.
SYS@test> connect / as sysdba
Connected.
SYS@test> column name format a30
SYS@test> column value format a30
SYS@test> select name,value,con_id from v$system_parameter where name='db_file_multiblock_read_count';
NAME VALUE CON_ID
------------------------------ ------ ------
db_file_multiblock_read_count 128 0
db_file_multiblock_read_count 8 3
--ok! 但这些参数保存在那里呢?
--看看D:\APP\ORACLE\PRODUCT\12.1.0\DBHOME_1\DATABASE\SPFILETEST.ORA参数文件。
strings D:\APP\ORACLE\PRODUCT\12.1.0\DBHOME_1\DATABASE\SPFILETEST.ORA | grep -i db_file_multiblock_read_count
--没有输出!那么参数db_file_multiblock_read_count在Pluggable Databases参数保存在那里呢?
--做一个跟踪看看。
SYS@test> connect sys@test01p as sysdba
Enter password: a
Connected.
SYS@test01p> @p
SYS@test01p> @10046on 12
old 1: alter session set events '10046 trace name context forever, level &1'
new 1: alter session set events '10046 trace name context forever, level 12'
Session altered.
SYS@test01p> alter system set db_file_multiblock_read_count=10 ;
System altered.
SYS@test01p> @10046off
Session altered.
--看看跟踪文件:
alter system set db_file_
----------奇怪,跟踪文件看到执行命令的一部分,不知道为什么??
END OF STMT
PARSE #35872808:c=0,e=509,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,plh=0,tim=3503720106
WAIT #35872808: nam='reliable message' ela= 96 channel context=8793436588552 channel handle=8793436463408 broadcast message=8793439208240 obj#=-1 tim=3503720814
=====================
PARSING IN CURSOR #35870384 len=102 dep=1 uid=0 oct=2 lid=0 tim=3503722381 hv=4009187694 ad='7ff5af62a28' sqlid='0h3wm2vrgfqbf'
insert into pdb_spfile$(db_uniq_name, pdb_uid, sid, name, value$, comment$) values(:1,:2,:3,:4,:5,:6)
END OF STMT
PARSE #35870384:c=0,e=1265,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=3503722379
BINDS #35870384:
Bind#0
oacdty=01 mxl=32(04) mxlc=00 mal=00 scl=00 pre=00
oacflg=10 fl2=0001 frm=01 csi=852 siz=32 off=0
kxsbbbfp=30d76612 bln=32 avl=04 flg=09
value="test"
Bind#1
oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
oacflg=00 fl2=1000001 frm=00 csi=00 siz=24 off=0
kxsbbbfp=02241d70 bln=22 avl=06 flg=05
value=1652643119
Bind#2
oacdty=01 mxl=32(01) mxlc=00 mal=00 scl=00 pre=00
oacflg=10 fl2=0001 frm=01 csi=852 siz=32 off=0
kxsbbbfp=30d754c8 bln=32 avl=01 flg=09
value="*"
Bind#3
oacdty=01 mxl=32(29) mxlc=00 mal=00 scl=00 pre=00
oacflg=10 fl2=0001 frm=01 csi=852 siz=32 off=0
kxsbbbfp=485c4f28 bln=32 avl=29 flg=09
value="db_file_multiblock_read_count"
Bind#4
oacdty=01 mxl=32(02) mxlc=00 mal=00 scl=00 pre=00
oacflg=10 fl2=0001 frm=01 csi=852 siz=32 off=0
kxsbbbfp=30d7551c bln=32 avl=02 flg=09
value="10"
Bind#5
oacdty=01 mxl=32(00) mxlc=00 mal=00 scl=00 pre=00
oacflg=10 fl2=0001 frm=01 csi=852 siz=32 off=0
kxsbbbfp=00000000 bln=32 avl=00 flg=09
....
update pdb_spfile$ set value$=:5, comment$=:6 where name=:1 and pdb_uid=:2 and db_uniq_name=:3 and sid=:4
END OF STMT
PARSE #35867208:c=0,e=530,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=3503755991
BINDS #35867208:
Bind#0
oacdty=01 mxl=32(02) mxlc=00 mal=00 scl=00 pre=00
oacflg=10 fl2=0001 frm=01 csi=852 siz=32 off=0
kxsbbbfp=30d7551c bln=32 avl=02 flg=09
value="10"
=====================
--很明显插入失败再修改了pdb_spfile$系统表。
SYS@test01p> select * from sys.pdb_spfile$;
no rows selected
--奇怪没有输出。难道在
SYS@test01p> connect / as sysdba
Connected.
SYS@test> select * from sys.pdb_spfile$;
DB_UNIQ_NA PDB_UID SID NAME VALUE$ COMMENT$ SPARE1 SPARE2 SPARE3
---------- ---------- ---------- ------------------------------- ---------- -------------------- ---------- ---------- ----------
test 1652643119 * db_file_multiblock_read_count 10
--可以发现信息保存主数据库的sys.pdb_spfile$。
SYS@test> select * from v$pdbs;
CON_ID DBID CON_UID GUID NAME OPEN_MODE RES OPEN_TIME CREATE_SCN TOTAL_SIZE
------ ---------- ---------- -------------------------------- --------- ---------- --- -------------------------- ---------- ----------
2 4063864810 4063864810 E328565B49E148BDBA65856218380E9D PDB$SEED READ ONLY NO 17-JAN-14 08.59.22.957 PM 2256383 283115520
3 1652643119 1652643119 A1EEB4B6462C40349D6EE072862CABA8 TEST01P READ WRITE NO 17-JAN-14 09.32.36.752 PM 2454021 498073600