> 文章列表 > JMU Oracle实验四

JMU Oracle实验四

JMU Oracle实验四

  • 用来记录实验操作的
spool E:\\oracle_record\\record20230406.txt
...
spool off

老师问的问题

  • 让我展示了一下open_cursor的alter操作
  • 问我怎么查看spfile文件,实例,会话的参数内容
  • 就这两个

1. 采用不同的方法查询Oracle数据库当前使用的初始化参数文件和控制文件。

  • v$parameter:v$parameter是oracle数据库的动态字典表(视图),它保存了数据库参数的设置值。
  • 查看当前使用的初始化参数文件
# 方法1:直接打开初始化参数文件
# 方法2: 查看数据库参数的设置值是否有spfile,有则说明当前使用的初始化参数文件是spfile
SQL> select value from v$parameter where name = 'spfile';VALUE
--------------------------------------------------------------------------------
D:\\ORACLE\\ORACLE_SOFTWARE\\DATABASE\\SPFILEORCL.ORA# SQL*PLUS命令,原理同上,show parameter相当于模糊匹配
SQL> show parameter spfileNAME                                 TYPE       VALUE
------------------------------------ ---------- ------------------------------
spfile                               string     D:\\ORACLE\\ORACLE_SOFTWARE\\DATABASE\\SPFILEORCL.ORA
  • 查看当前使用控制文件
# 法1:SQL*PLUS命令
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数据库的初始化参数文件的两种类型
    • pfile
    • spfile
  • 两种文件的默认路径:“/ORACLE_HOME/database”,window下
# 从spfile创建pfile
SQL> create pfile = 'E:\\oracle_record\\orclpfileA.ora' from spfile;文件已创建。# 从pfile创建spfile
SQL> create spfile = 'E:\\oracle_record\\orclspfileA.ora' from pfile = 'E:\\oracle_record\\orclpfileA.ora';文件已创建。# 启动pfile,这个没测试
startup pfile = 'E:\\oracle_record\\orclpfileA.ora'

3. 以open cursors初始化参数为例,学习修改当前实例、spfile,以及pfile中的这一参数值。

  • open_cursors设定每个session(会话)最多能同时打开多少个cursor(游标)。
  • session_cached_cursor设定每个session(会话)最多可以缓存多少个关闭掉的cursor。
# 查看当前open_cursors
SQL> show parameter open_cursorsNAME                                 TYPE       VALUE
------------------------------------ ---------- ------------------------------
open_cursors                         integer    300
# 修改open_cursors,memory表示修改当前实例的初始化参数
SQL> alter system set open_cursors = 500 scope = memory;系统已更改。SQL> show parameter open_cursorsNAME                                 TYPE       VALUE
------------------------------------ ---------- ------------------------------
open_cursors                         integer    500# 我又改回300试了一下
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参数指定的所有控制文件,而在读取控制文件内容事则只读取参数列出的第一个控制文件
# 第一次修改控制进程,地址出错,重启后(因为重启的时候忘了拷贝新的控制文件CONTROL03.CTL),那一堆???
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
数据库装载完毕。
数据库已经打开。
# 这次ok了
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

JMU Oracle实验四

6.备份控制文件,并查看所备份的文件

  • alter database backup controlfile to trace;,这种是把控制文件备份到一个跟踪文件,它不是控制文件的副本,而是用于创建控制文件的sql语句。所产生的跟踪文件的具体存储路径和名称记录在数据库的警告日志文件中。
  • alter database backup controlfile to ...;
SQL> alter database backup controlfile to trace;数据库已更改。

JMU Oracle实验四