首页 > 数据库 >成为MySQL DBA后,再看ORACLE数据库(一、安装与启动)

成为MySQL DBA后,再看ORACLE数据库(一、安装与启动)

时间:2024-05-26 12:22:32浏览次数:27  
标签:文件 DBA 数据库 oracle MySQL ORACLE -- u01

一、前言

ORACLE作为世界上最牛逼的关系型数据库,也是我从事数据库行业入门学习的数据库,记得当时学习ORACLE数据库时就深感其复杂性,对很多概念一知半解、似懂非懂,当ORACLE管理员期间也遇到过不少问题,不过好在有ORACLE原厂工程师驻场,基本上问题都能解决。后来因为领导的安排和工作的变动,我开始搞MySQL和一些信创数据库,对于MySQL数据库,从存储引擎到主从复制,我也通读了业界有名的几本书,常年混迹于MySQL的论坛,给官方提过bug,研究过源码,发过文章,也在工作中解决了不少问题,可以说对于MySQL自认为比较擅长和拿手。但是目前国内的各大行业,尤其是金融行业的核心系统,几乎还是运行在ORACLE数据库上,掌握ORACLE数据库对以后的信创改造工作是十分重要的。因此,我重新拿起了ORACLE数据库的书籍,当年学习ORACLE的笔记,对ORACLE进行复习与实操,一是为了让以后的信创改造工作更顺利,二是对比MySQL,感悟ORACLE的不同与牛逼之处。

二、ORACE的安装

ORACLE数据库的安装肯定比MySQL数据库复杂得多,MySQL数据库的安装在官方文档上可以简化到只用几行命令就可以完成。在ORACLE官网上可以对ORACLE各个版本的数据库进行下载与学习使用,网址是:https://edelivery.oracle.com/ 。这也体现了ORACLE的开放,据说国内很多公司其实都是在使用盗版的ORACLE。

我下载的是11G版本,参考了墨天轮上面一个oracle 11g的数据库安装步骤,比较顺利地完成了ORACLE的安装。

--确保服务器可以yum安装包
yum  -y install unzip
--关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

--关闭selinux
vi  /etc/selinux/config
disable
setenforce 0

--查看swap是否存在(需要有swap)
free -m

--在/etc/hosts中添加主机名如下,前面为ip,后面为主机名称。
10.4.7.100  oracle

--安装依赖包
yum install -y gcc make binutils gcc-c++ compat-libstdc++-33 elfutils-libelf-devel elfutils-libelf-devel-static ksh libaio libaio-develnumactl-devel sysstat unixODBC unixODBC-devel pcre-devel

--确认安装无误
rpm -qa gcc make binutils gcc-c++ compat-libstdc++-33 elfutils-libelf-devel elfutils-libelf-devel-static ksh libaio libaio-develnumactl-devel sysstat unixODBC unixODBC-devel pcre-devel

--确认安装完包之后
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle
AxTemp##2022

--修改内核参数
vi  /etc/sysctl.conf 增加以下内容其中kernel.shmmax = 1073741824为本机物理内存(2G)的一半,单位为byte
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1073741824
4294967296
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
--修改完之后立即执行修改:
sysctl -p

--修改用户的限制文件/etc/security/limits.conf添加如下内容
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240

--修改/etc/pam.d/login文件:添加如下内容
session required /lib64/security/pam_limits.so
session required pam_limits.so

--修改/etc/profile文件
添加以下内容:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
---执行生效
source /etc/profile

--创建目录
mkdir -p /u01/oracle/product/11.2.0
mkdir /u01/oracle/oradata
mkdir /u01/inventory
mkdir /u01/oracle/fast_recovery_area
chown -R oracle:oinstall /u01/oracle
chmod -R 775 /u01/oracle
chown -R oracle:oinstall /u01/inventory
chmod -R 775 /u01/inventory

--上传1of7 2of7的linux oracle安装包到/opt/oracle下
chown -R oracle:oinstall /opt/oracle
chmod 755 -R /opt/oracle
su - oracle
cd /opt/oracle
unzip p13390677_112040_Linux-x86-64_1of7.zip && unzip p13390677_112040_Linux-x86-64_2of7.zip 

--编辑oracle环境变量
vi ~/.bash_profile
ORACLE_BASE=/u01/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0
ORACLE_SID=orcl
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH

--修改静默文件
vi /opt/oracle/database/response/db_install.rsp
需要设置的选项如下:

oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=oracle
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/inventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/u01/oracle/product/11.2.0
ORACLE_BASE=/u01/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
DECLINE_SECURITY_UPDATES=true

---安装数据库软件
cd /opt/oracle/database
./runInstaller -silent -responseFile /opt/oracle/database/response/db_install.rsp -ignorePrereq

--重要:用root执行下面两个脚本
As a root user, execute the following script(s):
        1. /u01/inventory/orainstRoot.sh
        2. /u01/oracle/product/11.2.0/root.sh

Successfully Setup Software.

--静默方式安装监听
netca /silent /responseFile /opt/oracle/database/response/netca.rsp

--创建数据库
vi /opt/oracle/database/response/dbca.rsp
修改如下内容
GDBNAME= "orcl"
SID ="orcl"
SYSPASSWORD= "Oracle_123"
SYSTEMPASSWORD= "Oracle_123"
SYSMANPASSWORD= "Oracle_123"
DBSNMPPASSWORD= "Oracle_123"
DATAFILEDESTINATION=/u01/oracle/oradata
RECOVERYAREADESTINATION=/u01/oracle/fast_recovery_area
CHARACTERSET= "ZHS16GBK"
TOTALMEMORY= "6550"
----TOTALMEMORY ="1638" 为1638MB,物理内存2G*80%。

dbca -silent -responseFile /opt/oracle/database/response/dbca.rsp

从以上安装步骤可以看出,主要步骤有:操作系统配置初始化、目录创建、环境变量配置、安装数据库软件、安装监听、创建数据库。首先需要按照oracle官方的建议值配置OS内核参数和用户资源限制参数,此外,和MySQL安装最大的区别在于多了安装数据库软件和安装监听这两个动作,MySQL官方提供了二进制包解压即安装,而ORACLE则需要调用静默安装脚本安装。ORACLE在创建数据库这一步等同于MySQL的初始化数据库,通过dbca完成这一步,也就生成了对应的数据文件和日志文件。而通过编辑dbca.rsp文件,可以定义数据文件目录、字符集、实例名、sys密码等数据库配置,在mysql中这些主要是通过my.cnf文件实现的。

三、ORACLE的启动

完成ORACLE的安装后,就可以通过sqlplus连接数据库,可以看到连接的是一个idle instance,意思就是闲置未启动的实例。这时候就需要通过startup命令来启动实例。

虽然启动数据库的命令非常简单,但是启动的三步骤却是需要理解的,这也是我当年学习oracle初期印象最深的地方。在启动的第一步骤,Oracle首先寻找参数文件(pfile/spfile),然后根据参数文件中的设置(如内存分配等设置),创建实例(INSTANCE),分配内存,启动后台进程。这时候数据库就到了nomount的状态,这也是启动实例的过程。观察ORACLE的告警日志,可以非常清晰的看到这一过程。从日志中可以看出,ORACLE读取的参数文件是spfile<ORACLE_SID>.ora,这也是ORACLE默认首选的参数文件。这里有一点要说一下,ORACLE_SID就是Oracle System Identifier的缩写,ORACLE_SID以环境变量的形式出现,当Oracle实例启动时,在操作系统上fork的进程就依据ORACLE_SID这个环境变量来创建,这就是SID的作用。而ORACLE实例后台进程的名称就是通过ORACLE_SID确定的。此外,在Oracle内部有个instance_name,用于标识数据库实例的名称,这个名称就是默认就是ORACLE_SID。除了instance_name,对于Oracle数据库更为重要的一个参数是DB_NAME,DB_NAME代表了实例即将挂接的数据库名称,关系到具体的物理文件。一个实例可以mount并打开任何数据库,但是同一时间一个实例只能打开一个数据库。一个数据库可以被一个或多个实例所mount并打开,比如在RAC环境下。

ORACLE启动的第二步,就是从nomount状态启动到mount状态,在这一步中ORACLE从参数文件中获得控制文件的位置信息,然后找到控制文件,并且根据控制文件中记录的数据文件位置进行数据文件的存在性判断。从参数文件中可以看出,控制文件一个放在数据区,一个放在闪回区,这两个控制文件的内容是完全一样的,这就是Oracle对控制文件的镜像安全保护。

在alert日志中,可以看到通过命令alter database mount对数据库完成了mount操作。

 ORACLE启动的第三步,就是从mount状态到open状态,控制文件中记录了数据库中数据文件、日志文件的位置信息,检查点信息等重要信息,在数据库的Open阶段,Oracle根据控制文件中记录的这些信息找到这些文件,然后进行检查点及完整性检查,如果不存在问题就可以正常打开数据库。在alert日志中,可以看到,通过alter database open命令进行数据库打开的操作,首先是读取redo log进行崩溃恢复操作,在日志中可以看到所前滚到的scn号。然后smon进程将undo表空间在线,并进行事务的回滚。在启动日志中记录了数据库的字符集:Database Characterset is ZHS16GBK,在每次数据库的启动过程中,Oracle都需要判断控制文件中记录的字符集和数据库中的字符集是否相符,如果相符,则记录如上一行日志;如果不相符合,则以数据库中的字符集为准更新控制文件中的字符集记录。

 

标签:文件,DBA,数据库,oracle,MySQL,ORACLE,--,u01
From: https://www.cnblogs.com/coygfly/p/18212719

相关文章

  • MySQL-存储引擎
    MySQL体系结构1).连接层最上层是一些客户端和链接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。2).服务层第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行......
  • Mysql-约束
    约束概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。目的:保证数据库中数据的正确、有效性和完整性。约束演示:外键约束左侧的emp表是员工表,里面存储员工的基本信息,包含员工的ID、姓名、年龄、职位、薪资、入职日期、上级主管ID、部门ID,在员......
  • Django和MySQL与Vue项目之间的数据是如何流动实现交互响应的
    在一个前后端分离的Django和Vue项目中,Django作为后端,MySQL作为数据库,Vue作为前端,数据的流动和交互可以通过API来实现。以下是数据流动的过程及交互的详细说明:1.数据流动过程概述前端发送请求:Vue应用通过HTTP请求向Django后端发送数据请求(例如获取、创建、更新或删除数据)。后......
  • Java项目:校园周边美食探索(java+SpringBoot+Mybaits+Vue+elementui+mysql)
    源码获取:俺的博客首页"资源"里下载! 项目介绍基于Springboot+vue实现的校园周边美食探索及分享平台本系统包含管理员、用户两个角色。管理员:用户管理、美食鉴赏管理、好友管理、收藏管理、系统管理用户:登录、注册、个人中心管理、美食鉴赏管理、好友管理、收藏管理......
  • MySQL报错注入之Xpath报错&floor函数报错
    目录前言Xpath报错注入updatexml()函数extractvalue()函数floor函数报错count与groupby的虚拟表总结前言报错注入的使用场景一般是页面无法正常回显数据库查询的内容,但是会详细显示查询过程的错误信息。如果连错误信息都没有,那就是盲注了。报错注入的原理就是将子查询语句查询......
  • MySQL入门——增删查改(下)
    数据库约束约束类型NOTNULL-指示某列不能存储NULL值。UNIQUE-保证某列的每行必须有唯一的值。DEFAULT-规定没有给列赋值时的默认值。PRIMARYKEY-NOTNULL和UNIQUE的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的......
  • MySQL函数
    MySQL数据库提供了很多函数包括:数学函数;字符串函数;日期和时间函数;条件判断函数;系统信息函数;加密函数;格式化函数;mysql高级教程:http://cainiao.guashuw.com/一、数学函数数学函数主要用于处理数字,包括整型、浮点数等。函数作用ABS(x)返回x的绝对值......
  • MySQL Grant命令
    MySQL赋予用户权限命令的简单格式可概括为:grant权限on数据库对象to用户 MySQL高级教程:http://cainiao.guashuw.com/一、grant普通数据用户,查询、插入、更新、删除数据库中所有表数据的权利。grantselectontestdb.*tocommon_user@'%'grantinsertontestdb.*......
  • 宠物服务系统 毕业设计 Springboot+Vue+Mysql+Java
    作者主页:毕业设计精选作者简介:9年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家摘要随着人类生存质量的提升以及生活模式的改变,越来越多的人在闲暇之余饲养宠物,来满足精神上的需求 。从而 使得宠物服务行业也得到了繁荣发展 ......
  • MySQL命令大全
    1、连接Mysql格式:mysql-h主机地址-u用户名-p用户密码1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql-uroot-p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。如果刚安装好MYSQL,超级......