spool E:\\oracle_record\\record20230406.txt
...
spool off
老师问的问题
- 让我展示了一下open_cursor的alter操作
- 问我怎么查看spfile文件,实例,会话的参数内容
- 就这两个
1. 采用不同的方法查询Oracle数据库当前使用的初始化参数文件和控制文件。
- v$parameter:v$parameter是oracle数据库的动态字典表(视图),它保存了数据库参数的设置值。
- 查看当前使用的初始化参数文件
SQL> select value from v$parameter where name = 'spfile';VALUE
--------------------------------------------------------------------------------
D:\\ORACLE\\ORACLE_SOFTWARE\\DATABASE\\SPFILEORCL.ORA
SQL> show parameter spfileNAME TYPE VALUE
------------------------------------ ---------- ------------------------------
spfile string D:\\ORACLE\\ORACLE_SOFTWARE\\DATABASE\\SPFILEORCL.ORA
SQL> show parameter control_filesNAME TYPE VALUE
------------------------------------ ---------- ------------------------------
control_files string D:\\ORACLE\\ORADATA\\ORCL\\CONTROL01.CTL, D:\\ORACLE\\ORADATA\\ORCL\\CONTROL02.CTL
SQL> select name from v$controlfile;NAME
----------------------------------------
D:\\ORACLE\\ORADATA\\ORCL\\CONTROL01.CTL
D:\\ORACLE\\ORADATA\\ORCL\\CONTROL02.CTLSQL> select value from v$parameter where name = 'control_files';----------------------------------------
D:\\ORACLE\\ORADATA\\ORCL\\CONTROL01.CTL
D:\\ORACLE\\ORADATA\\ORCL\\CONTROL02.CTL
2. 练习从spfile创建pfile,以及pfile创建spfile。
- oracle数据库的初始化参数文件的两种类型
- 两种文件的默认路径:“/ORACLE_HOME/database”,window下
SQL> create pfile = 'E:\\oracle_record\\orclpfileA.ora' from spfile;文件已创建。
SQL> create spfile = 'E:\\oracle_record\\orclspfileA.ora' from pfile = 'E:\\oracle_record\\orclpfileA.ora';文件已创建。
startup pfile = 'E:\\oracle_record\\orclpfileA.ora'
3. 以open cursors初始化参数为例,学习修改当前实例、spfile,以及pfile中的这一参数值。
- open_cursors设定每个session(会话)最多能同时打开多少个cursor(游标)。
- session_cached_cursor设定每个session(会话)最多可以缓存多少个关闭掉的cursor。
SQL> show parameter open_cursorsNAME TYPE VALUE
------------------------------------ ---------- ------------------------------
open_cursors integer 300
SQL> alter system set open_cursors = 500 scope = memory;系统已更改。SQL> show parameter open_cursorsNAME TYPE VALUE
------------------------------------ ---------- ------------------------------
open_cursors integer 500
SQL> alter system set open_cursors = 500 scope = spfile;系统已更改。SQL> show parameter open_cursors;NAME TYPE VALUE
------------------------------------ ---------- ------------------------------
open_cursors integer 300
- 查看初始化参数
- v$parameter显示当前用户会话(当前cmd窗口)中生效的初始化参数信息
- v$pparameter显示spfile中的初始化参数信息
- v$system_parameter显示实例中(当前开启的数据库对应的实例)当前生效的初始化参数信息
SQL> desc v$parameter名称 是否为空? 类型----------------------------------------- -------- ----------------------------NUM NUMBERNAME VARCHAR2(80)TYPE NUMBERVALUE VARCHAR2(4000)DISPLAY_VALUE VARCHAR2(4000)DEFAULT_VALUE VARCHAR2(255)ISDEFAULT VARCHAR2(9)ISSES_MODIFIABLE VARCHAR2(5)ISSYS_MODIFIABLE VARCHAR2(9)ISPDB_MODIFIABLE VARCHAR2(5)ISINSTANCE_MODIFIABLE VARCHAR2(5)ISMODIFIED VARCHAR2(10)ISADJUSTED VARCHAR2(5)ISDEPRECATED VARCHAR2(5)ISBASIC VARCHAR2(5)DESCRIPTION VARCHAR2(255)UPDATE_COMMENT VARCHAR2(255)HASH NUMBERCON_ID NUMBER
SQL> select name,value from v$parameter;
NAME VALUE
------------------------------ ------------------------------
lock_name_space
processes 960
sessions 1464
timed_statistics TRUE
timed_os_statistics 0
resource_limit TRUE
license_max_sessions 0
license_sessions_warning 0
long_module_action TRUE
standby_db_preserve_states NONE
instance_abort_delay_time 0NAME VALUE
------------------------------ ------------------------------
cpu_count 12
cpu_min_count 12
instance_groups
event
sga_max_size 5100273664
use_large_pages TRUE
pre_page_sga TRUE
shared_memory_address 0
hi_shared_memory_address 0
lock_sga FALSE
processor_group_name...
4. 查询数据库控制文件信息
- 控制文件是一个二进制文件,无法直接查看内容,需要查看相应的动态性能试图来了解内容。
- 用于记录数据库的状态和物理结构。
SQL> show parameter control_filesNAME TYPE VALUE
------------------------------------ ---------- ------------------------------
control_files string D:\\ORACLE\\ORADATA\\ORCL\\CONTROL01.CTL, D:\\ORACLE\\ORADATA\\ORCL\\CONTROL02.CTL
5. 在现有控制文件基础上,为数据库再添加一个控制文件给出具体实现和验证步骤
- 多路存储:每个控制文件存储在不同的物理硬盘上,防止硬盘截止损坏而失去控制文件
- 控制文件的位置和数量由初始化参数(control_files)决定
- 控制文件多路存储后,在需要写入控制文件时,Oracle会同时写入control_files参数指定的所有控制文件,而在读取控制文件内容事则只读取参数列出的第一个控制文件
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。Total System Global Area 5100270616 bytes
Fixed Size 9278488 bytes
Variable Size 1006632960 bytes
Database Buffers 4076863488 bytes
Redo Buffers 7495680 bytes
ORA-00205: ?????????, ??????, ???????SQL> alter system set control_files='D:\\ORACLE\\ORADATA\\ORCL\\CONTROL01.CTL','D:\\ORACLE\\ORADATA\\ORCL\\CONTROL02.CTL','D:\\ORACLE\\ORADATA\\ORCL\\CONTROL03.CTL' scope=spfile;
SQL> shutdown
ORA-01507: ??????ORACLE 例程已经关闭。SQL> startup
ORACLE 例程已经启动。Total System Global Area 5100270616 bytes
Fixed Size 9278488 bytes
Variable Size 1006632960 bytes
Database Buffers 4076863488 bytes
Redo Buffers 7495680 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter control_filesNAME TYPE VALUE
------------------------------------ ---------- ------------------------------
control_files string D:\\ORACLE\\ORADATA\\ORCL\\CONTROL01.CTL, D:\\ORACLE\\ORADATA\\ORCL\\CONTROL02.CTL, D:\\ORACLE\\ORADATA\\ORCL\\CONTROL03.CTL
6.备份控制文件,并查看所备份的文件
alter database backup controlfile to trace;
,这种是把控制文件备份到一个跟踪文件,它不是控制文件的副本,而是用于创建控制文件的sql语句。所产生的跟踪文件的具体存储路径和名称记录在数据库的警告日志文件中。
alter database backup controlfile to ...;
SQL> alter database backup controlfile to trace;数据库已更改。