【数据库管理】②实例管理及数据库启动关闭

1. 实例和参数文件

1.1 instance

用于管理和访问 database.

instance 在启动阶段读取初始化参数文件(init parameter files).

1.2 init parameter files

[root@oracle-db-19c ~]# su - oracle
[oracle@oracle-db-19c ~]$ 
[oracle@oracle-db-19c ~]$ cd $ORACLE_HOME/dbs
[oracle@oracle-db-19c dbs]$ pwd
/u01/app/oracle/product/19.3.0/dbhome_1/dbs
[oracle@oracle-db-19c dbs]$ ll
total 10261428
-rw-rw----. 1 oracle oinstall     1544 Mar 30 11:17 hc_cdb1.dat
-rw-r--r--. 1 oracle oinstall     1188 Feb  2 19:19 initcdb1.ora
-rw-r--r--. 1 oracle oinstall     3079 May 14  2015 init.ora
-rw-r--r--. 1 oracle oinstall     3079 May 14  2015 init.ora.bkp
-rw-r-----. 1 oracle oinstall       24 Nov  2 15:03 lkCDB1
-rw-r-----. 1 oracle oinstall     3072 Feb  1 13:41 orapwcdb1
-rw-r-----. 1 oracle oinstall 18989056 Mar 30 11:23 snapcf_cdb1.f
-rw-r-----. 1 oracle oinstall     3584 Mar 30 11:17 spfilecdb1.ora
-rw-r-----. 1 oracle oinstall     3584 Nov 27 16:55 spfilecdb1.ora.bkp
[oracle@oracle-db-19c dbs]$ 

 1.3 pfile

(parameter file)文本初始化参数文件 -- 静态参数文件.

1)文本文件,必须通过编辑器修改参数.

2)修改参数下次重启实例才生效.

3)pfile参数文件可以不在database server上.

命名方式: init+SID.ora

1.4 spfile

(system parameter file)服务器参数文件 -- 动态参数文件.

1)二进制文件,不可以通过编辑器修改.

2)Linux下strings 可以查看 .

3)必须在database server段的指定路径下.
 

[oracle@oracle-db-19c dbs]$ string spfilecdb1.ora

1.5 静态参数和动态参数 (和动态静态参数文件两码事)

在spfile读到内存后,有一部分参数是可以直接在内存中修改,并对当前instance立即生效,这样的参数叫动态参数.除了动态参数都是静态参数.静态参数修改spfile文件.动态参数在instance关闭后失效,而静态参数是下次instance启动后才生效.

1.5.1 修改spfile文件的方法:

alter system set 参数=值 [scope=memory |spfile |both]
alter system reset 参数 [scope=memory |spfile |both] SID='*'  -- 恢复缺省值.

第一种scope=memory 参数修改立刻生效,但不修改spfile文件.

第二种scope=spfile 修改了spfile文件,重启后生效.

第三种scope=both 前两种都要满足.

如果不写scope,即缺省,那就是第三种.

*NOTE: 如果不修改spfile,将无法更改静态参数.

-- 通过查看v$parameter ,可以确定哪些参数可以在memory修改,制定scope.
SQL> desc v$parameter;
 Name                                                                                                              Null?    Type
 ----------------------------------------------------------------------------------------------------------------- -------- ----------------------------------------------------------------------------
 NUM                                                                                                                        NUMBER
 NAME                                                                                                                       VARCHAR2(80)
 TYPE                                                                                                                       NUMBER
 VALUE                                                                                                                      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                                                                                                                       NUMBER
 CON_ID                                                                                                                     NUMBER

SQL> 

1.5.2 ISSYS_MODIFIABLE

SQL> select distinct issys_modifiable from v$parameter;

ISSYS_MODIFIABLE
---------------------------
IMMEDIATE                        -- (动态参数)对应scope=memory
DEFERRED                         -- 其他session有效
FALSE                            -- (静态参数)只能scope=spfile,即修改spfile文件,下次启动才生效.

SQL> 


1.5.3 ISSES_MODIFIABLE

SQL> 
SQL> -- 对应alter session命令,即session级修改
SQL> select distinct isses_modifiable from v$parameter;

ISSES_MODIFIABL
---------------
TRUE
FALSE

SQL> select ISSES_MODIFIABLE, ISSYS_MODIFIABLE from v$parameter where name='sql_trace';

ISSES_MODIFIABL ISSYS_MODIFIABLE
--------------- ---------------------------
TRUE            IMMEDIATE

SQL> -- 这个结果表示 sql_trace参数在session级别可以改,在system级也可以both修改(动态参数).
SQL> 

1.6 startup时读取参数文件

找到$ORACLE_HOME/dbs目录,顺序是优先spfile启动,没有 spfile 才从pfile启动.

1.6.1 查看启动的参数

SQL> 
SQL> show parameter spfile;

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
spfile                               string                            /u01/app/oracle/product/19.3.0
                                                                       /dbhome_1/dbs/spfilecdb1.ora
SQL> -- 如果Value有值 说明是spfile,否则pfile启动

1.6.2 pfile和spfile可以相互生成

SQL> create pfile from spfile;
SQL> create spfile from pfile;
create spfile from pfile
ERROR at line 1:
ORA-32002: cannot create SPFILE already being used by the instance

1.6.3 通过当前内存参数生成pfile和spfile

-- (11g新特性):
SQL> create pfile from memory;
SQL> create spfile from memory;

1.6.4 使用pfile启动

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> 
SQL> startup pfile=$ORACLE_HOME/dbs/initcdb1.ora
ORACLE instance started.

Total System Global Area  629145392 bytes
Fixed Size                  9137968 bytes
Variable Size             406847488 bytes
Database Buffers          197132288 bytes
Redo Buffers               16027648 bytes
Database mounted.
Database opened.
SQL> 
SQL> show parameter spfile

NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
spfile                               string

SQL> -- *NOTE:
SQL> -- 如果使用pfile启动,设置scope=spfile将失败!(因为是pfile启动的)
SQL> -- 但可以设置scope=memory,要修改pfile 文件,使用文本编辑工具.
SQL> show parameter log_buffer

NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
log_buffer                           big integer
15000K
SQL> alter system set log_buffer=1 scope=spfile;
alter system set log_buffer=1 scope=spfile
*
ERROR at line 1:
ORA-32001: write to SPFILE requested but no SPFILE is in use


SQL> -- 设置scope=memory
SQL> show parameter db_16

NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
db_16k_cache_size                    big integer
0
SQL> --- 如果db_16k_cache_size的值不为0的话,则需要执行alter system set db_16k_cache_size=0 scope=memory;
SQL> startup force
ORACLE instance started.

Total System Global Area  629145392 bytes
Fixed Size                  9137968 bytes
Variable Size             419430400 bytes
Database Buffers          184549376 bytes
Redo Buffers               16027648 bytes
Database mounted.
Database opened.
SQL> 

2. 数据库启动与关闭

2.1 启动分为三个阶段

 2.1.1 nomount阶段

实例启动,读取init parameter

SQL> 
SQL> startup nomount;
ORACLE instance started.

Total System Global Area  629145392 bytes
Fixed Size                  9137968 bytes
Variable Size             419430400 bytes
Database Buffers          184549376 bytes
Redo Buffers               16027648 bytes
SQL> -- (这条命令很实用,是看当前数据库启动的状态,有三个 started, mounted, open.)
SQL> select status from v$instance;

STATUS
------------------------------------
STARTED

SQL> 

2.1.2 mount阶段:

读取控制文件

SQL> alter database mount;

Database altered.

SQL> -- 刻意将数据库状态改成mounted
SQL> select status from v$instance;

STATUS
------------------------------------
MOUNTED

SQL> 

2.1.3 open阶段:

1、检查所有的datafile、redo log、 group 、password file.

2、检查数据库的一致性(controlfile、datafile、redo file的检查点是否一致)

SQL> alter database open;

Database altered.

SQL> -- 刻意将数据库状态改成open
SQL> select file#, checkpoint_change# from v$datafile;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1           23854725
         3           23854725
         4           23854725
         5            2160789
         6            2160789
         7           23854725
         8            2160789
         9           23854867
        10           23854867
        11           23854867
        12           23854867

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
        13           23854861
        14           23854861
        15           23854861
        16           23854861
        85           23854867
       126           23854867
       127           23854867
       154           23854867
       155           23854725
       162           21742070
       163           23854867

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
       164           21742070
       165           21742070
       166           21742070
       169           23854867
       181           23854867

27 rows selected.

SQL> -- 从控制文件读出
SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
          23854725

SQL> -- 从控制文件读出
SQL> select file#, checkpoint_change# from v$datafile_header;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1           23854725
         3           23854725
         4           23854725
         5            2160789
         6            2160789
         7           23854725
         8            2160789
         9           23854867
        10           23854867
        11           23854867
        12           23854867

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
        13           23854861
        14           23854861
        15           23854861
        16           23854861
        85           23854867
       126           23854867
       127           23854867
       154           23854867
       155           23854725
       162           21742070
       163           23854867

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
       164           21742070
       165           21742070
       166           21742070
       169           23854867
       181           23854867

27 rows selected.

SQL> -- 从 datafile header 读出
SQL> -- 数据库open之前要检查controlfile所记录SCN和datafile header 记录的SCN是否一致;一致就正常打开库,不一致需要做media recover
SQL> select status from v$instance;

STATUS
------------------------------------
OPEN

SQL> 

2.2 启动数据库时的特殊选项

SQL> alter database open read only;
SQL> startup force
SQL> startup upgrade						-- (只有sysdba能连接)
SQL> startup restrict						-- (有restrict session权限才可登录,sys不受限制)
SQL> alter system enable restricted session;-- (open后再限制)

2.3 实例关闭shutdown:

SQL> shutdown normal:					-- 拒绝新的连接,等待当前事务结束,等待当前会话结束,生成检查点
SQL> shutdown transactional:			-- 拒绝新的连接,等待当前事务结束,生成检查点
SQL> shutdown immediate:				-- 拒绝新的连接,未提交的事务回滚,生成检查点
SQL> shutdown abort(startup force):		-- 事务不回滚,不生成检查点,下次启动需要做 instance  recovery

 *NOTE: shutdown abort 不会损坏database. -- 实例保护

 如下是关闭选项

2.3.1 SHUTDOWN NORMAL

如果不指定模式,则默认关闭模式为NORMAL.正常关闭数据库时会发生以下情况:

• 不可以建立新连接.

• Oracle 服务器在完成关闭之前先等待所有用户断开连接.

• 数据库和重做缓冲区被写入磁盘.

• 后台进程终止,从内存中删除SGA.

• Oracle 服务器在关闭实例之前关闭并卸装数据库.

• 下一次启动不需要进行实例恢复.

2.3.2 SHUTDOWN TRANSACTIONAL

采用TRANSACTIONAL 关闭方式可防止客户机丢失数据,其中包括客户端当前活动的结果.执行事务处理数据库关闭时会发生以下情况:

 

• 任何客户机都不能在这个特定实例上启动新事务处理.

• 会在客户机结束正在进行的事务处理后断开客户机.

• 完成所有事务处理后立即执行关闭.

• 下一次启动不需要进行实例恢复.

 2.3.3 SHUTDOWN IMMEDIATE

采用IMMEDIATE 关闭模式会出现以下情况:

• Oracle DB 正在处理的当前SQL 语句不会完成执行.

• Oracle 服务器不会等待当前连接到数据库的用户断开连接.

• Oracle 服务器会回退活动的事务处理,并会断开所有连接用户.

• Oracle 服务器在关闭实例之前关闭并卸装数据库.

• 下一次启动不需要进行实例恢复.

注:IMMEDIATE 是使用Enterprise Manager 时的默认关闭模式.

2.3.4 SHUTDOWN ABORT

如果NORMAL、TRANSACTIONAL 和IMMEDIATE 关闭模式都不起作用,则可以选择中止当前的数据库实例.中止实例时会发生以下情况:

• Oracle DB 正在处理的当前SQL 语句会立即终止.

• Oracle 服务器不等待当前连接到数据库的用户断开连接.

• 数据库和重做缓冲区未写入磁盘.

-- Dirty buffers in the buffer cache and unwritten redo are not written to the data files and redo log files respectively

• 不回退未提交的事务处理.

• 实例终止,但不关闭文件.

• 数据库未关闭或未卸装.

• 下一次启动时需要进行实例恢复,实例恢复是自动进行的.

 注:不建议备份处于不一致状态的数据库.

3. 自动诊断信息库ADR

11g新特性:Automatic Diagnostic Repository

存储在操作系统下的一个目录(树)结构,包括: 预警日志文件,跟踪文件,健康检查,DUMP 转储文件等

11g 用 DIAGNOSTIC_DEST 一个参数代替了许多老版本的参数,如 BACKGROUND_DUMP_DEST,CORE_DUMP_DEST,USER_DUMP_DEST等.

3.1 ADR的基目录

[oracle@oracle-db-19c ~]$ 
[oracle@oracle-db-19c ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Mar 30 14:43:44 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> show user;
USER is "SYS"
SQL> 
SQL> set pagesize 200 linesize 200
SQL> 
SQL> show parameter diag

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
diagnostic_dest                      string                            /u01/app/oracle

-- NOTE:  这是ADR的基目录
-- 如果你设置了ORACLE_BASE环境变量,则diagnostic_dest默认值被设置为同样的目录,否则oracle设置的目录是$ORALE_HOME/log

SQL> show parameter dump

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
background_core_dump                 string                            partial
background_dump_dest                 string                            /u01/app/oracle/product/19.3.0
                                                                       /dbhome_1/rdbms/log
core_dump_dest                       string                            /u01/app/oracle/diag/rdbms/cdb
                                                                       1/cdb1/cdump
max_dump_file_size                   string                            unlimited
shadow_core_dump                     string                            partial
user_dump_dest                       string                            /u01/app/oracle/product/19.3.0
                                                                       /dbhome_1/rdbms/log
SQL> 

 在 oracle 11g 中,故障诊断及跟踪的文件路径改变较大,告警文件分别以两种文件格式存在,xml的文件格式和普通文本格式.这两份文件的位置分别是V$DIAG_INFO中的Diag Alert 和Diag Trace 对应的目录.

熟悉9i的话,会发现11g将bdump和udump合并到一个目录/u01/diag/rdbms/XXXX/trace下了.

-- 其命名方法依然是
Background Trace Files	(针对background process) : 	SID_processname_PID.trc	如: orcl_m001_5616.trc 
User Trace Files		(针对server process) : 		SID_ora_PID.trc  		如: orcl_ora_6278.trc
-- 另外增加.trm(trace map)文件,记录trc文件的结构信息.

SQL> col NAME format a20
SQL> col VALUE format a30
SQL> col INST_ID default
SQL> select * from V$DIAG_INFO;

   INST_ID NAME                 VALUE                              CON_ID
---------- -------------------- ------------------------------ ----------
         1 Diag Enabled         TRUE                                    0
         1 ADR Base             /u01/app/oracle                         0
         1 ADR Home             /u01/app/oracle/diag/rdbms/cdb          0
                                1/cdb1

         1 Diag Trace           /u01/app/oracle/diag/rdbms/cdb          0
                                1/cdb1/trace

         1 Diag Alert           /u01/app/oracle/diag/rdbms/cdb          0
                                1/cdb1/alert

         1 Diag Incident        /u01/app/oracle/diag/rdbms/cdb          0
                                1/cdb1/incident

         1 Diag Cdump           /u01/app/oracle/diag/rdbms/cdb          0
                                1/cdb1/cdump

         1 Health Monitor       /u01/app/oracle/diag/rdbms/cdb          0
                                1/cdb1/hm

         1 Default Trace File   /u01/app/oracle/diag/rdbms/cdb          0
                                1/cdb1/trace/cdb1_ora_60719.tr
                                c

         1 Active Problem Count 0                                       0
         1 Active Incident Coun 0                                       0
           t

         1 ORACLE_HOME          /u01/app/oracle/product/19.3.0          0
                                /dbhome_1


12 rows selected.

SQL> 

 3.2 Diag Trace

其中Diag Trace对应的目录里为文本格式的告警日志和跟踪文件,并沿用在10g中命名方法

告警日志:alter_SID.log 包含通知性的消息,如数据库启动或关闭,以及有关 TBS创建和删除的信息,也包括一些内部错误信息等.

alter_SID.log不断增长,定期清理是必要的

$cat dev/null > alert_orcl.log	# 将文件清空或
$rm alter_orcl.log              # 删掉也没有关系,下次启动会自动创建(NOTE)

检查告警日志和跟踪文件的有关错误信息的记录,如LGWR不能写日志组时,会创建一个跟踪文件,并将一条信息放入告警日志.

 

[oracle@oracle-db-19c log]$ pwd
/u01/app/oracle/product/19.3.0/dbhome_1/rdbms/log
[oracle@oracle-db-19c log]$ tail -f alert_cdb1.log 
Wed Nov 30 10:26:15 2022
Process termination requested for pid 2613 [source = rdbms], [info = 2] [request issued by pid: 2607, uid: 1501]

^C
[oracle@oracle-db-19c log]$

 3.3 查看预警日志

 每个数据库都有一个alert_sid.log文件.此文件位于数据库所在的服务器中,如果设置了ORACLE_BASE,则此文件默认存储在相同的目录$ORACLE_BASE/diag/rdbms/db_name/SID/trace中.

使用以下命令可以查询警告日志位置

SQL> SHOW PARAMETER BACKGROUND_DUMP_DEST;

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
background_dump_dest                 string                            /u01/app/oracle/product/19.3.0
                                                                       /dbhome_1/rdbms/log
SQL> 

 数据库预警文件是按时间顺序列出消息的日志文件,例如:

l 启动时使用的任何非默认初始化参数

l 已发生的所有Internal Error内部错误(ORA-600)、data block corrupted块损坏错误(ORA-1578)和deadlock errors死锁错误(ORA-60)

l 管理操作,如SQL 语句CREATE、ALTER、DROP DATABASE 和TABLESPACE,以及Enterprise Manager 或SQL*Plus 语句STARTUP、SHUTDOWN 、ARCHIVE LOG和RECOVER

l 与共享服务器和分派程序进程的功能相关的多个消息和错误

l 自动刷新实体化视图时发生的错误

Oracle DB 使用预警日志来保留这些事件的记录,以此作为在操作员控制台上显示这些信息的替代方法.(许多系统会同时在控制台中显示这些信息).例如管理操作成功完成,系统会将”completed(已完成)”消息和一个时间戳写入预警日志中.

Enterprise Manager 可监视预警日志文件,并向你通知严重的错误.你还可以查看日志,以检查不严重的错误和参考性消息.由于预警文件会增长到无法管理的大小,因此可以定期备份该文件,并删除当前的预警文件.当数据库尝试再次写入预警文件时,会重新创建一个新预警文件.

注:$ORACLE_BASE/diag/rdbms/db_name/SID/alert 目录中有一个XML 版本的预警日志.

 

3.4 DDL Log(12c新特性)

 

在之前的版本中没有可选方法来对DDL操作进行日志记录.而在12c R1中,可以将DDL操作写入xml和日志文件中.这对于了解谁在什么时间执行了create或drop命令是十分有用的.要开启这一功能必须对ENABLE_DDL_LOGGING 初始参数加以配置.这一参数可以在数据库或会话级别设置.当此参数为启用状态,一些DDL命令会记录在$ORACLE_BASE/diag/rdbms/DBNAME/log/ddl 路径下(非alert log里)的xml和日志文件中.一个xml中包含DDL命令,IP地址,时间戳等信息.这可以帮助确定在什么时候对用户或表进行了删除或是一条DDL语句在何时触发.

The DDL log is a file that has the same format and basic behavior as the alert log, but it only contains the DDL statements issued by the database. The DDL log is created only for the RDBMS component and only if the ENABLE_DDL_LOGGING initialization parameter is set to true. When this parameter is set to false, DDL statements are not included in any log.

The DDL log contains one log record for each DDL statement issued by the database. The DDL log is included in IPS incident packages.

There are two DDL logs that contain the same information. One is an XML file, and the other is a text file. The DDL log is stored in the log/ddl subdirectory of the ADR home.

When ENABLE_DDL_LOGGING is set to true, the following DDL statements are written to the log:
 

l ALTER/CREATE/DROP/TRUNCATE CLUSTER

l ALTER/CREATE/DROP FUNCTION

l ALTER/CREATE/DROP INDEX

l ALTER/CREATE/DROP OUTLINE

l ALTER/CREATE/DROP PACKAGE

l ALTER/CREATE/DROP PACKAGE BODY

l ALTER/CREATE/DROP PROCEDURE

l ALTER/CREATE/DROP PROFILE

l ALTER/CREATE/DROP SEQUENCE

l CREATE/DROP SYNONYM

l ALTER/CREATE/DROP/RENAME/TRUNCATE TABLE

l ALTER/CREATE/DROP TRIGGER

l ALTER/CREATE/DROP TYPE

l ALTER/CREATE/DROP TYPE BODY

l DROP USER

l ALTER/CREATE/DROP VIEW

SQL> ALTER SYSTEM|SESSION SET ENABLE_DDL_LOGGING=TRUE;
-- 以下的DDL语句可能会记录在xml或日志文件中:
CREATE|ALTER|DROP|TRUNCATE TABLE
DROP USER
CREATE|ALTER|DROP PACKAGE|FUNCTION|VIEW|SYNONYM|SEQUENCE
-- ADR的概述在053试题中较多,因为它涉及了11g在数据库自动管理方面的一些重要知识,如度量、阀值、预警系统、健康监测等等

 4. 口令文件

PASSWORD FILE

oracle登录认证方式有多种

4.1 sys的两种常用的登录认证方式

OS认证(本地认证、操作系统认证)和口令文件认证.

1).OS认证

:本地认证方式.Oracle不验证用户密码,前提:用户必须属于DBA组,且使用本地登录.

如: sqlplus a / as sysdba

2).口令文件认证

:是一种网络远程认证方式,只有sysdba权限的用户可以使用口令文件,必须输入密码和网络连接符.

如: sqlplus sys/PWD@orcl as sysdba

4.2 普通用户登录

普通用户是指没有sysdba权限的用户,比如system、scott,登录都必须输入口令,不管是本地或者远程,它们的口令密码不是以文件形式存放的,而是由 oracle保管在其内部的数据字典里.

本节讨论的口令文件是 sysdba 用户的远程登录认证密码文件,主要用于 sys 用户远程登录的认证.

位置: $ORACLE_HOME/dbs/orapwSID, 所谓口令文件,指的就是sys的口令文件,可以通过 remote_login_passwordfile参数控制是否生效

4.3 remote_login_passwordfile

none		-- 拒绝sys用户从远程连接
exclusive	-- sys用户可以从远程连接
share		-- 多个库可以共享口令文件
SQL> show parameter rem
NAME							TYPE			VALUE
------------------------------	------------	-----------------------------------
remote_dependencies_mode		string			TIMESTAMP
remote_listener					string
remote_login_passwordfile		string			EXCLUSIVE
remote_os_authent				boolean	FALSE
remote_os_roles					boolean	FALSE
result_cache_remote_expiration	integer	0

4.4 sec_case_sensitive_logon

通过设置参数为TURE,可以让口令是大小写敏感的(11g新特性)

SQL> 
SQL> show parameter case

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
sec_case_sensitive_logon             boolean                           TRUE
SQL> 

4.5 重建口令文件

[oracle@oracle-db-19c ~] $ cd $ORACLE_HOME/dbs
[oracle@oracle-db-19c dbs] $ ll
total 32
-rw-rw---1 oracle oinstall 1544 Sep 13 22:36 hc_orcl.dat
-rw-r--r-- 1 oracle oinstall 2992 Feb 3 2012 init.ora
-rw-r--r-- 1 oracle oinstall 1026 Sep 12 22:14 initorcl.ora
-rw-r----- 1 oracle oinstall   24 Aug 18 22:02 lkORCL
-rw-r----- 1 oracle oinstall 7680 Aug 18 22:08 orapworcl
-rw-r----- 1 oracle oinstall 2165 Aug 18 22:02 orcl.ora
-rw-r----- 1 oracle oinstall 3584 Sep 13 22:38 spfileorcl.ora
-- $ORACLE_HOME/dbs放参数文件和(sys)口令文件的地方, orapworcl就是sys口令文件
-- 你可以先删掉它,再创建它: 使用orapwd命令创建新的sys口令文件:
[oracle@oracle-db-19c dbs]$ rm orapworcl	-- 删除sys口令文件
-- 远程无法登陆sql
-- 重新建立口令文件
-- 注意:  file=orapw+sid的写法
[oracle@oracle-db-19c dbs]$ orapwd file=orapworcl password=Oracle#2020 entries=5 force=y		
-- entries的含义是表示口令文件中可包含的SYSDBA/SYSOPER权限登录的最大用户数5.

5. 恢复scott 案例

-- 如果scott用户被误删,可以通过执行下列脚本重新建立.
SQL> drop user scott cascade;
SQL> @$ORACLE_HOME/rdbms/admin/utlsampl.sql
-- (不是所有案例都有恢复脚本,HR就没有)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/4685.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker 翻脸,不再开源,期待后续

前几日,Docker Hub出了一件大事!但凡创建了“organisation”的用户都收到了一封含有简短PDF链接的邮件。邮件的内容“金钱味”十足:如果不按照要求升级付费,用户就将失去对数据的访问权限。此举不仅会破坏开源项目的自动化构建&am…

GPT-4发布,这类人才告急,大厂月薪10W+疯抢

ChatGPT最近彻底火出圈,各行各业都在争相报道,甚至连很多官媒都下场“跟风”。ChatGPT的瓜还没吃完,平地一声雷,GPT-4又重磅发布! 很多小伙伴瑟瑟发抖:“AI会不会跟自己抢饭碗啊?” 关于“如何…

C++ 16 vector容器

目录 一、vector容器 1.1 简介 1.2 构造函数 1.3 赋值操作 1.4 容量和大小 1.5 插入删除 1.6 数据存取 1.7 互换容器 1.8 预留空间 一、vector容器 1.1 简介 ① vector数据结构和数组非常相似,也称为单端数组。 ② vector与普通数组区别:不同…

6.链路层和局域网

链路层链路层的主体是网络适配器,也称为网络接口卡2. 变换局域网链路层交换机的任务是在主机和路由器之间承载数据报没有两个适配器有相同的MAC地址适配器到哪里,MAC地址都不会改变主机移动时,主机的IP地址需要随之改变,以改变连接…

Vue+springboot 高校图书馆座位预约选座系统java毕业设计项目推荐

目前现有的图书馆选座管理系统对于用户而言其选座管理流程仍然过于繁琐,对于图书馆选座管理而言其系统安全性并不能保障。同时整套系统所使用的技术相对较为落后,界面不能动态化展示。相比较于其它同类型网站而言不能体现技术先进性。 1.2 项目目标 图书…

Python视频软件解析教程【源码可送】

人生苦短,我用python 快放假了… 有的人出去玩~ 有的人在家里呆着看电视~ 这次就来康康怎么做一个好玩的小软件~ (嘘~自己用) 瓜子花生小零食准备好了吗? 效果展示 我们先看看效果 这是本次要写的界面 主流视频都可以看&…

JDK20正式发布了GA版本,短期维护支持,以及JDK21预览

最近,Oracle发布了JDK20,相比对于Java开发者来说,JDK的发版是比较收关注的事情了,小简也来和大家一起了解了解JDK20发生了什么变化呢? 首先,JDK20是一个短周期版本,有6个月的维护时间&#xff0…

Maven和Gradle的区别

首先谈谈为什么要学习Maven? 依赖管理 大家还记得在学习JavaWeb时需要向web项目中引入少许jar包嘛?还记得引入jar包的繁琐过程嘛?实际项目中可能光基座需要引入的jar包就成千上万,jar包从哪里获取也是一个问题。项目中的jar包不仅…

ChatGPT写作文章-快速使用ChatGPT不用注册方式

如何更好地使用ChatGPT批量生成文章:详细教程 作为一款强大的文本生成器,ChatGPT可以帮助您快速、高效地批量生成文章。但如果您还不知道如何更好地使用ChatGPT,那么这篇详细的列表教程将会指导您如何使用它来生成高质量的文章,提…

“工业转型,大势所趋”:ITES深圳工业展暨阿里巴巴1688工业采购节开幕

2023年以来,中国制造业快速发展、需求深度释放,创造了大量的产业机遇。与此同时,国内外社会经济发展不确定因素众多,制造类企业、专业买家呼唤提升发展确定性;面临时代变局,工业品市场渴望在发展模式、合作…

华为OD机试题,用 Java 解【删除指定目录】问题 | 含解题说明

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典本篇题目:删除指定目录 题目 某文件系统…

JDK 中用到了哪些设计模式?

以下是整理的⼏个在JDK 库中 常⽤的⼏个设计模式。桥接模式这个模式将抽象和抽象操作的实现进⾏了解耦,这样使得抽象和实现可以 独⽴地变化。 在Java 应⽤中,对于桥接模式有⼀个⾮常典型的例⼦,就是应⽤程序使⽤ JDBC 驱动程序进⾏开发的⽅式…

Node.js 中的线程 与 并发

Node.jsNode.js 中的线程 与并发jcLee95 :https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/129784985 目 录1. JavaScript 与线程1.1 Java…

8种特“坑”的 SQL 写法,性能降低100倍

给大家分享几个SQL常见的“坏毛病”及优化技巧。 SQL语句的执行顺序: 1、LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type、 name、 create_time 字段上加组…

春分-面试

青岛 zc: 1.String的类型 string、stringbuilder 、stringbuffer? String不可变、另外两个可变、StringBuilder线程不安全、但是效率高、并且String不能被继承。 JVM是C写的编译后的机器码, 2.集合类的用法,还问了键值对。key如果…

06solr 文件删除

文章目录 0x01 漏洞介绍0x02 影响版本0x03 漏洞环境0x04 漏洞复现0x05 修复建议摘抄免责声明0x01 漏洞介绍 Apache Solr 存在任意文件删除漏洞,在目前的最新版本(8.8.2)中仍然未被修复,漏洞的根本成因是函数 **Files.deleteIfExists()**对要删除的文件名并未做校验。同时 Apa…

小程序面试题(day07)

文章目录前言微信小程序自定义tabbar的理解?微信小程序怎么缓存数据?微信小程序怎么进行网络请求?微信小程序路由跳转以及传参如何实现?微信小程序生命周期的理解?微信小程序模块化?微信小程序所有api放在哪…

高并发系统设计:缓存、降级、限流、(熔断)

高并发系统设计:缓存、降级、限流、(熔断) 在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。 非核心服务可以采用降级、熔断,核心服务采用缓存和限流(隔离流量可以最大限度的保障业务无损)。 缓存 缓…

Scala隐式转换

Scala 的隐式转换是一种自动类型转换机制,它可以在编译器自动插入一些代码,将一个类型自动转换成另一个类型。这种转换可以发生在函数调用、赋值、类型转换等多种场景中。 隐式转换的机制可以让 Scala 代码更加简洁、优雅。例如,我们可以通过…

“体育游戏第一股”投资未来,望尘科技走向价值兑现周期

2022年的游戏市场,遗憾以疲弱之势落下帷幕。游戏市场规模与用户数量,均出现了小幅下降,显示出存量市场的典型特征。 但与此同时,更多垂直领域的拳头产品、响应市场需求的精品游戏,却屡屡掀起热潮。去年随世界杯而来的…