在现代企业环境中,Oracle数据库作为关键的业务支撑平台,承载着大量的数据处理和事务管理任务。
无论是对于DBA(数据库管理员)还是开发人员来说,掌握Oracle数据库的基本操作和配置技巧都是至关重要的。本文提供了一份全面而实用的指南,涵盖Oracle数据库的启动、关闭以及如何配置PFILE(Parameter File)文件。
一、启动oracle
Linux下启动Oracle主要分为两步:
- 启动监听;
- 启动数据库实例;
1.切换为oracle用户
su - oracle
2.打开监听服务
可以通过 lsnrctl status 命令查看Oracle监听器运行状况
lsnrctl status
通过 lsnrctl start 启动监听
lsnrctl start
3.以SYSDBA用户身份登录Oracle
sqlplus / as sysdba
4.查看数据库的状态
select * from v$version;
5.启动oracle数据库
startup
二、关闭oracle
1.关闭数据库实例
关闭oracle执行以下命令
SQL> shutdown immediate;
2.关闭监听器
lsnrctl stop
3.关闭失败的解决办法
若关闭失败,后台报:ORA-01012: not logged on 的异常。问题原因:可能是应用程序有bug,没及时释放连接所导致。则执行以下命令,再重新启动。
SQL> shutdown abort;
三、启动参数的配置
(一)启动参数配置错误的解决
有时候会发现oracle无法启动成功,这时候需要检查初始化参数文件PFILE。
- Pfile(Parameter File):pfile是文本文件,包含了Oracle数据库实例的配置参数。这些参数控制着数据库的行为,如内存分配、并发连接数、日志文件位置等。pfile可以通过文本编辑器直接修改参数值,并且需要手动重新启动数据库实例才能使更改生效。
- Spfile(Server Parameter File):spfile是二进制文件格式,也包含了Oracle数据库实例的配置参数。与pfile不同,spfile是数据库实例当前正在使用的参数文件。它不能直接通过文本编辑器进行修改,而是通过Oracle提供的ALTER SYSTEM语句或图形界面工具进行更改。与pfile相比,spfile的一个主要优点是支持动态参数更改,即无需重启实例即可使参数更改生效。
两种文件的启动次序:SPfile优先于Pfile,Pfile低于Spfile
1.使用 NOMOUNT 模式启动
若参数配置不对,oracle无法加载实例时,首先尝试在 NOMOUNT 模式下启动数据库,以减少内存需求。
STARTUP NOMOUNT;
2.通过spfile创建pfile备份
一般启动失败是修改了spfile文件导致的,这时候没办法再进入ORACLE实例修改默认的spfile文件了。
所以需要从spfile中复制一个pfile文本文件出来做修改。
SQL> create pfile='<PFILE文件路径>' from spfile;
通过vi编辑器修改pfile文件后保存退出。
3.使用 PFILE 启动数据库
将修改后的pfile文件作为配置文件启动
STARTUP PFILE='/path/to/new_pfile.ora';
(二)参数的配置方法
1.检查参数
进入SQL数据库环境之后,可以查看各启动参数的值
SQL> SHOW PARAMETER sga_max_size;
SQL> SHOW PARAMETER memory_max_target;
2.修改参数
可以将修改后的参数写到 SPFILE 中。
ALTER SYSTEM SET SGA_MAX_SIZE=16G SCOPE=SPFILE;
ALTER SYSTEM SET MEMORY_MAX_TARGET=16G SCOPE=SPFILE;
修改后需要重启数据库应用配置新的修改
3.重新加载参数配置
在修改参数配置后,需要重新加载SPFILE文件以使更改生效。可以通过以下两种方法重新加载SPFILE文件:
- 重启数据库实例:可以通过关闭并重启数据库实例来重新加载SPFILE文件。可以使用SQL*Plus或者Oracle Enterprise Manager来进行数据库实例的启动和关闭。
- 使用ALTER SYSTEM命令:可以使用ALTER SYSTEM命令来重新加载SPFILE文件。在SQL*Plus中连接到数据库实例,并执行以下命令:
ALTER SYSTEM SET pfile='<PFILE文件路径>' SCOPE=SPFILE;
(三)pfile参数介绍
1.内存管理参数
sga_max_size
描述:定义了系统全局区 (SGA) 可以增长的最大值。
sga_max_size=32G
sga_target
描述:如果设置了 sga_target,Oracle 会自动调整 SGA 各个组成部分的大小,使其总和等于sga_target 的值。
sga_target=32G
memory_max_target
描述:定义了自动内存管理 (Automatic Memory Management, AMM) 的最大值。
memory_max_target=40G
memory_target
描述:如果设置了 memory_target,Oracle 会自动管理 SGA 和 PGA (Program Global Area) 的内存分配。
memory_target=40G
2. 文件系统和存储参数
db_create_file_dest
描述:指定数据库创建时数据文件的默认存储位置。
db_create_file_dest=/u01/app/oracle/oradata
db_recovery_file_dest
描述:指定恢复文件(如归档日志和恢复相关的文件)的存储位置。
db_recovery_file_dest=/u01/app/oracle/fast_recovery_area
control_files
描述:指定控制文件的位置和名称。
control_files="/u01/app/oracle/oradata/<SID>/control01.ctl", "/u01/app/oracle/oradata/<SID>/control02.ctl"
3. 日志管理参数
log_archive_dest_1
描述:指定归档日志的目标位置。
log_archive_dest_1='location=/u01/app/oracle/archivedlogs'
log_archive_format
描述:指定归档日志文件的命名格式。
log_archive_format='arch_%t_%s_%r.arc'
4. 安全和认证参数
remote_login_passwordfile
描述:指定是否允许远程登录,并指定密码文件的类型。
remote_login_passwordfile=EXCLUSIVE
5. 性能和优化参数
cursor_sharing
描述:控制SQL语句共享游标的程度。
cursor_sharing=SIMILAR
shared_pool_size
描述:定义共享池的大小。
shared_pool_size=2G
pga_aggregate_target
描述:定义程序全局区 (PGA) 的目标大小。
pga_aggregate_target=8G
6. 数据库启动模式参数
open_mode
描述:定义数据库启动模式(只读或读写)。
open_mode=READ_ONLY
7. 监听器参数
listen_address
描述:指定监听器的IP地址。
listen_address=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
8. 其他常用参数
processes
描述:定义数据库实例可以支持的最大并发进程数。
processes=300
sessions
描述:定义数据库实例可以支持的最大并发会话数。
sessions=200
background_dump_dest
描述:定义后台转储文件的位置。
background_dump_dest=/u01/app/oracle/diag/rdbms/<SID>/<SID>/trace
core_dump_dest
描述:定义核心转储文件的位置。
core_dump_dest=/u01/app/oracle/core
diag_trace_enabled
描述:启用诊断跟踪。
diag_trace_enabled=1
9.示例 PFILE
以下是一个示例 PFILE 的部分内容:
# Oracle Database Parameter File
#
# This is the text version of the parameter file.
#
# Memory management parameters
sga_max_size=32G
memory_max_target=40G
# File system and storage parameters
db_create_file_dest=/u01/app/oracle/oradata
db_recovery_file_dest=/u01/app/oracle/fast_recovery_area
control_files="/u01/app/oracle/oradata/<SID>/control01.ctl", "/u01/app/oracle/oradata/<SID>/control02.ctl"
# Log management parameters
log_archive_dest_1='location=/u01/app/oracle/archivedlogs'
log_archive_format='arch_%t_%s_%r.arc'
# Security and authentication parameters
remote_login_passwordfile=EXCLUSIVE
# Performance and optimization parameters
cursor_sharing=SIMILAR
shared_pool_size=2G
pga_aggregate_target=8G
# Database startup mode parameters
open_mode=READ_WRITE
# Listener parameters
listen_address=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
# Other common parameters
processes=300
sessions=200
background_dump_dest=/u01/app/oracle/diag/rdbms/<SID>/<SID>/trace
core_dump_dest=/u01/app/oracle/core
diag_trace_enabled=1