1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 阿里云服务器安装oracle11g-整理实战各路大神汇总

阿里云服务器安装oracle11g-整理实战各路大神汇总

时间:2022-07-05 19:20:38

相关推荐

阿里云服务器安装oracle11g-整理实战各路大神汇总

Oracle静默安装,是一种高效、便捷的安装方法。很多时候我们在服务器上安装oracle,只有终端环境,用不了OUI(即图形界面)的安装方式,只能采用静默安装。

一、安装前准备

1.检查swap

关于swap是什么就不赘述了,可以自行百度

**Linux下有两种类型的swap空间,swap分区和swap文件,他们有各自的特点:

(1)swap分区上面由于没有文件系统,所以相当于内核直接访问连续的磁盘空间,效率相对要高点,但由于swap分区一般安装系统时就分配好了了,后期要缩减空间和扩容都很不方便。

加一个交换分区

步骤如下:

$1 使用fdisk来创建交换分区(假设 /dev/sdb2 是创建的交换分区)

$2 使用 mkswap 命令来设置交换分区:

# mkswap /dev/sdb2

$13启用交换分区:

# swapon /dev/sdb2

$14写入/etc/fstab,以便在引导时启用:

/dev/sdb2swap swap defaults 0 0

---------------------------------------------------------------------------------------------------

(2)swap文件放在指定分区的文件系统里面,所以有可能受文件系统性能的影响,但据说2.6版本以后的内核可以直接访问swap文件对应的物理磁盘地址,相当于跳过了文件系统直接访问磁盘,不过如果swap文件在磁盘上的物理位置不连续时,还是会对性能产生不利影响,但其优点就是灵活,随时可以增加和移除swap文件。

创建swap分区交换文件: 阿里云的ECS默认是不启用swap分区的,但是安装Oracle又必须要这个分区。那我们就来创建一个

$1.dd if=/dev/zero of=/mnt/swap bs=1M count=1024。dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。linux下mnt目录的作用:mount 可直接理解为“挂载”挂接光驱、USB设备的目录,加载后,会在mnt里多出相应设备的目录。

$2.将该文件的权限设置为 600 这样只有 root 用户可以访问这个文件

sudo chmod 600 /swapfile1

$2.格式化swap分区 mkswap /mnt/swap

$3.启用swap分区 swapon /mnt/swap

$4.将新创建的交换文件添加到 fstab 文件中,这样交换分区空间的修改即使在重启后也可以生效。

vi /etc/fstab

/mnt/swap swap swap defaults 0 0

( - 要挂载的分区或存储设备.

- 的挂载位置。

- 要挂载设备或是分区的文件系统类型,支持许多种不同的文件系统:ext2, ext3, ext4, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap 及 auto。 设置成auto类型,mount 命令会猜测使用的文件系统类型,对 CDROM 和 DVD 等移动设备是非常有用的。

- 挂载时使用的参数,注意有些mount 参数是特定文件系统才有的。

dump 工具通过它决定何时作备份. dump 会检查其内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 。0 表示忽略, 1 则进行备份。大部分的用户是没有安装 dump 的 ,对他们而言 应设为 0。

fsck 读取 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为 2. 0 表示设备不会被 fsck 所检查。)

(命令解释:if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >

of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >

/dev/zero也是一个伪文件,但它实际上产生连续不断的null的流(二进制的零流,而不是ASCII型的)。写入它的输出会丢失不见,/dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,像临时交换文件。

mkswap命令用于在一个文件或者设备上建立交换分区

bs=1M:同时设置读入/输出的块大小为1M。

count=blocks:仅拷贝blocks个块

/etc/fstab是用来存放文件系统的静态信息的文件, 当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。)

注:本人买的阿里云ECS服务器事先已经分好了区,且云服务器一般swap都是为0,因此需要且只能采用第二种swap文件方式,或者有经济实力的土豪也可以再购买一个硬盘挂载到服务器上,采用第一种方式设置swap分区。

**查看linux的swap大小

(1)free -h命令

(2)使用命令swapon -s即可查看系统中在用的swap

**cat /proc/sys/vm/swappiness

有时我们桌面环境确实配置了比较充裕的内存,并且也配置了swap空间,这个时候就希望尽量减少swap空间的使用,避免对系统性能造成影响,Linux早就帮我们考虑到这种情况了,在2.6内核中,增加了一个叫做swappiness的参数,用于配置需要将内存中不常用的数据移到swap中去的紧迫程度。这个参数的取值范围是0~100,0告诉内核尽可能的不要将内存数据移到swap中,也即只有在迫不得已的情况下才这么做,而100告诉内核只要有可能,尽量的将内存中不常访问的数据移到swap中。

Ubuntu的desktop和server的默认配置都是60(可能会随着版本变化),对于桌面环境来说,界面的响应速度直接关系到系统的流畅程度,如果内存比较充裕的话,可以将这个值设置的小一点,这样就尽可能的把数据留在内存中,从而唤醒后台界面程序会更快一些,Ubuntu desktop建议将该值设置为10,当然大家可以根据swap空间的实际使用情况,任意调整这个参数,直到自己满意的水平为止。对于服务器来说,主要性能衡量标准是整体的处理能力,而不是具体某一次的响应速度,能把更多的内存用来做I/O cache可能效果更好,所以Ubuntu server建议保持60的默认值。

**修改swap大小

*修改swappiness的值

临时性修改,系统重启后会失效:sysctl vm.swappiness=10或者echo 10 >/proc/sys/vm/swappiness

永久修改:在/etc/sysctl.conf 文件里添加如下参数:vm.swappiness=10

(sysctl命令用于运行时配置内核参数,这些参数位于/proc/sys目录下。sysctl配置与显示在/proc/sys目录中的内核参数

/proc/sys目录下存放着大多数内核参数,并且可以在系统运行时进行更改,不过重新启动机器就会失效。/etc/sysctl.conf是一个允许改变正在运行中的Linux系统的接口,它包含一些TCP/IP堆栈和虚拟内存系统的高级选项,修改内核参数永久生效。也就是说/proc/sys下内核文件与配置文件sysctl.conf中变量存在着对应关系。)

2.安装依赖包,需要的依赖可以看

rpm -q 可以查看某个需要的包是否已经被安装以及对应的版本

(可以通过该命令查看需要的安装包是否已经被安装

rpm -q binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc+±devel make sysstat unixODBC unixODBC-devel)

rpm -ivh example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度(-i, --install安装,-v,–verbose显示详细, -h,–hash显示进度)

rpm -Uvh 升级一个rpm包(-U,–upgrade更新)

*下载rpm包可以到,下载到本地再弄到服务器上/执行 yum install 出现下载列表并提示 【y/d/n】,这里选择d,d是仅下载不安装的意思。会下载到/var/cache/yum/x86_64/7/目录的相应位置。(/var/cache应用程序本身运作过程中会产生的一些暂存档)

*建议使用yum而不是rpm去安装对应的包,因为用rpm安装对应的依赖,整天安装会提示某个依赖会被安装,很麻烦,而yum会自动帮你发现并安装这些依赖

创建用户和组

groupadd oinstall:创建osintall组

groupadd dba:创建dba组

useradd -g oinstall -G dba oracle -d /home/db :创建oracle用户并指定所属组、附加组、用户目录

passwd oracle :给oracle用户设置密码

(-g 用户所属组,-G 用户附加组

一个用户只能且必须属于一个g,可以属于多个G。 用户testuser 同时用户所属g和G的权限

-d<登入目录> 指定用户登入时的起始目录)

cat /etc/passed:查看用户信息

cat /etc/group :查看组信息

groups oracle:查询oracle用户属于哪个组

(1)oracle清单组(一般为oinstall)

oinstall组的成员被视为oracle软件的“所有者”,拥有对oracle中央清单(oraInventory)的写入权限。在一个Linux系统上首次安装Oracle软件时,OUI会创建/etc/oraInst.loc文件。该文件指定Oracle清单组的名称(默认为oinstall)以及Oracle中央清单目录的路径、

(2)数据库管理员(OSDBA,一般为dba)

OSDBA组的成员可通过操作系统身份验证使用SQL以SYSDBA身份连接到一个Oracle实例。该组的成员可以执行关键的数据库管理任务,如创建数据库,启动,关闭实例。该组的默认名称为dba。SYSDBA系统权限甚至再数据库未打开时也允许访问数据库实例。对此权限的控制完全超出了数据库本身的范围。

不要混淆SYSDBA系统权限和数据库角色DBA。DBA角色不包括SYSDBA或SYSOPER系统权限。

(3)数据库操作员组(OSOPER,一般为oper)

OSOPER组的成员可通过操作系统身份验证使用SQL以SYSOPER身份连接到一个Oracle实例。这个可选组的成员拥有一组有限的数据库管理权限,如管理和运行备份。该组的默认名称未oper。SYSOPER系统权限甚至再数据库未打开时也允许访问数据库实例。对此权限的控制完全超出了数据库本身的范围。要使用该组,选择Advanced安装类型来安装Oracle数据库软件。

无论安装什么版本的Oracle,在安装之前,都需要配置 /etc/pam.d/login /etc/profile /etc/security/limits.conf这三个文件,那这三个文件究竟是做什么用的呢?答案就是设置对oracle用户的shell limits.

Linux PAM(插件式认证模块,Pluggable Authentication Modules)

为安全起见,计算机系统只有经过授权的合法用户才能访问。这就需要程序提供鉴别登陆用户身份信息的代码。原本实现鉴别功能的代码是作为应用程序的一部分,这种情况下,如果发现所用算法存在某些缺陷或想采用另一种鉴别方法时,用户不得 不重写然后重新编译原本的整个程序。很显然这种鉴别方式缺乏灵活性。因此,人们开始寻找一种更好的鉴别方案:一方面,要把鉴别功能代码从应用中独立出来,形成独立模块,单独进行维护,另一方面,为这些鉴别模块建立标准API,以便各应用程序能方便地使用他们提供的各种功能。插件式鉴别模块(PAM)机制采用模块化设计和插件功能,使得我们可以轻易地在应用程序中插入新的鉴别模块或替换原先的组件,而不必对应用程序做任何修改,从而使软件的定制、维持和升级更加轻松

1995年SUN公司提出PAM方式,实现了以上要求,达到了应用程序和鉴别机制的分离,并且PAM可以集成多种鉴别机制,轻松实现应用程序的鉴别部分的灵活性。

除了具体实现不同外,各种版本 Unix 系统上的 PAM 的框架是相同的,所以我们在这里介绍的 Linux PAM 框架知识具有普遍性。因此在本文介绍其框架的过程中可以看到,我们并没有刻意区分 PAM 与 Linux-PAM 这两个术语。PAM 为了实现其插件功能和易用性,它采取了分层设计思想:让各鉴别模块从应用程序中独立出来,然后通过PAM API作为两者联系的纽带,这样应用程序就可以根据需要灵活地在其中"插入"所需鉴别功能模块,从而真正实现了"鉴别功能,随需应变"。

在rhel中,

**PAM的验证模块,存放位置在/lib/security,如pam_limits.so、pam_group.so等

**PAM验证模块的配置文件,存放位置 /etc/security中,如pam_limits.so验证模块对应的配置文件limits.conf,pam_group.so验证模块对应的配置文件group.conf。

**PAM验证模块和应用程序的对应关系,存放位置/etc/pam.d文件夹。通过修改此文件夹下的配置文件,可以为应用选定具体的验证模块

4.修改内核参数

修改内核参数

vi /etc/sysctl.conf

追加如下内容:

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmni = 4096

kernel.shmmax 参数设置为物理内存的一半

kernel.shmmax = 1073741824

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 = 1048586

#使修改立即生效

sysctl -p

5.限制oracle用户的shell权限,实现对用户资源进行限制,如进程数/文件数等等。

vi /etc/security/limits.conf

#末尾追加

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

oracle soft stack 10240

limits.conf的格式如下:

–domain:username|@groupname 设置需要被限制的用户名或组,组名前面加@和用户名区别;也可以用通配符*来做所有用户的限制。

–type:有 soft,hard 和 - 。soft 指的是当前系统生效的设置值(警告)

hard 表明系统中所能设定的最大值(错误)。soft 的限制不能比har 限制高,- 表明同时设置了 soft 和 hard 的值。

–item:有以下几种

core - 限制内核文件的大小(KB)

date - 最大数据大小(KB)

fsize - 最大文件大小(KB)

memlock - 最大锁定内存地址空间(KB)

nofile - 打开的文件描述符的最大数目**(经常设置)**

rss - 最大持久设置大小(KB)

stack - 最大堆栈大小(KB)

cpu - 最大CPU时间(min)

noproc - 过程最大数量

as - 地址空间限制(KB)

maxlogins - 此用户的最大登录数量

maxsyslogins - 在系统上登录的最大数目

priority - 优先级运行用户进程

locks - 文件的最大数量锁定用户可容纳

sigpending - 最大挂起信号的数量

msgqueue - 通过POSIX消息队列使用的最大内存(字节)

nice - 最大不错优先允许提高到值:[-20,19]

rtprio - 最大实时优先

6.修改用户验证选项

要使/etc/security/limits.conf 文件配置生效,必须要确保 PAM验证模块pam_limits.so 文件被加入到启动文件中

vi /etc/pam.d/login

#末尾追加

session required /lib64/security/pam_limits.so

session required pam_limits.so

Pam.d文件夹下配置文件的语法为

Service model_type control_flag model_path options

(1)Service :使用PAM验证模块的应用程序,如ftp、telnet、login等。其中other一行指本文件中没有单独列出的其他应用程序

验证模块的类型,主要有以下几种

auth :鉴别类模块 account:账户类模块

session:会话类模块 password:口令类模块

每行只能指定一中类型模块,如果应用程序需要多种模块组合使用,则需要在多行中分别规定。

(2)Control_flag:对模块验证成功或者失败的结果的处理情况

Required:该模块验证成功是用户通过鉴别的必要条件。只有当应用程序对应的所有带有required标记的模块全部成功后,该应用程序才能通过 鉴别。同时,如果任何带有required标记的模块出现了错误,PAM并不立刻将错误信息返回给应用程序,而是在所有模块都调用完毕后,再将错误信息返回给调用它的应用程序。

Requisite:与required相似,只有带有此标记的模块返回成功后,用户才能通过鉴别,不同之处在于,一旦失败就不再执行堆中后面的其他模块,并且鉴别过程到此结束。

(3)Optiona: 即使该模块验证失败,用户仍能通过鉴别。在PAM体系中,带有该标记的模块失败后,将继续处理下一模块。

7.为oracle用户在bash和ksh中设定资源限制

修改/etc/profile文件,全局环境变量文件

vi /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

8.创建对应安装目录

[root@oracledb ~]# mkdir -p /home/db/oracle/product/11.2.0:仍然是Oracle RDBMS的软件存放目录。

[root@oracledb ~]# mkdir /home/db/oracle/oradata:存放数据文件

[root@oracledb ~]# mkdir /home/db/oracle/oraInventory:oraInventory存放的是Oracle软件安装的目录信息,Oralce的安装升级都需要用到这个目录,

[root@oracledb ~]# mkdir /home/db/oracle/fast_recovery_area:闪回恢复区,存放回闪恢复需要的文件的一块磁盘大小,缺省2G

[root@oracledb ~]# chown -R oracle:oinstall /home/db/oracle:chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID。-R:处理指定目录以及其子目录下的所有文件

[root@oracledb ~]# chmod -R 775 /home/oracle

9.下载oracle11g_R2包

官网下载的有两个包,不知道为啥分个两个

linux.x64_11gR2_database_1of2_4.zip

linux.x64_11gR2_database_2of2.zip

首先将两个压缩包放到同一目录,先后解压

unzip linux.x64_11gR2_database_1of2_4.zip

unzip linux.x64_11gR2_database_2of2.zip

20.编辑数据库安装文件db_install.rsp

解压完成后会生成database目录,解压后的文件中database/response下有有db_install.rsp、dbca.rsp和netca.rsp三个应答文件,

db_install.rsp:分别数据库安装文件、

dbca.rsp:建立数据库实例

netca.rsp:监听配置安装文件

随便挑个目录,拷贝这三个文件,我选择的是和oracle安装的同级目录(安装包的同级目录)mkdir /home/db/oracle/etc

cp /home/db/oracle/database/response/* /home/db/oracle/etc

这个响应文件其实就是配置文件,里面可以配置一些安装的细节,在DBCA图形界面中能够看到的安装选项,在响应文件中都有体现。可以通过响应文件来设置安装企业版、个人版、标准版、安装的语言包、字符集等。

vim db_install.rsp

#标注响应文件版本,这个版本必须和要#安装的数据库版本相同,安装检验无法通过,不能更改

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0

#选择安装类型:1. INSTALL_DB_SWONLY只装数据库软件 2.INSTALL_DB_AND_CONFIG安装数据库软件并建库 3.UPGRADE_DB升级数据库

oracle.install.option=INSTALL_DB_SWONLY

#指定操作系统主机名,通过hostname命令获得

ORACLE_HOSTNAME=SunnyBlog

#指定oracle inventory目录的所有者,通常会是oinstall或者dba

UNIX_GROUP_NAME=oinstall

#指定产品清单oracle inventory目录的路径,如果是Win平台下可以省略

INVENTORY_LOCATION=/home/db/oracle/oraInventory

#指定数据库语言,可以选择多个,用逗号隔开。选择en, zh_CN(英文和简体中文)

SELECTED_LANGUAGES=en,zh_CN

#设置ORALCE_HOME的路径

ORACLE_HOME=/home/db/oracle/product/11.2.0

#设置ORALCE_BASE的路径

ORACLE_BASE=/home/db/oracle

#选择Oracle安装数据库软件的版本(企业版,标准版,标准版1),不同的版本功能不同EE: EnterpriseEdition SE:Standard Edition SEONE:Standard Edition OnePE: Personal Edition (WINDOWS ONLY)

oracle.install.db.InstallEdition=EE

#是否自定义Oracle的组件,如果选择false,则会使用默认的组件,如果选择true否则需要自己在下面一条参数将要安装的组件一一列出。安装相应版权后会安装所有的组件,后期如果缺乏某个组件,再次安装会非常的麻烦

oracle.install.db.isCustomInstall=false

#手工选择需要安装组件的话(设置了oracle.install.db.isCustomInstall=true)

oracle.install.db.customComponents=oracle.server:11.2.0.1.0,r:10.2.7.0.0,oracle.xdk:11.2.0.1.0,oracle.rdbms.oci:11.2.0.1.0,work:11.2.0.1.0,work.listener:11.2.0.1.0,oracle.rdbms:11.2.0.1.0,oracle.options:11.2.0.1.0,oracle.rdbms.partitioning:11.2.0.1.0,oracle.oraolap:11.2.0.1.0,oracle.rdbms.dm:11.2.0.1.0,oracle.rdbms.dv:11.2.0.1.0,orcle.rdbms.lbac:11.2.0.1.0,oracle.rdbms.rat:11.2.0.1.0

#指定拥有OSDBA、OSOPER权限的用户组,通常会是dba组

oracle.install.db.DBA_GROUP=dba

#oper用户组

oracle.install.db.OPER_GROUP=oinstall

#选择数据库的用途,一般用途/事物处理,数据仓库

oracle.install.db.config.starterdb.type=GENERAL_PURPOSE

#指定globalDBName

oracle.install.db.config.starterdb.globalDBName=orcl

#指定SID

oracle.install.db.config.starterdb.SID=orcl

#自动管理内存的最小内存(M)

oracle.install.db.config.starterdb.memoryLimit=800

#设定所有数据库用户使用同一个密码

oracle.install.db.config.starterdb.password.ALL=oracle

#设置安全更新(貌似是有bug,这个一定要选true,否则会无限提醒邮件地址有问题,终止安装。PS:不管地址对不对)

DECLINE_SECURITY_UPDATES=true

11.配置 oracle 用户环境变量

每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.

此文件类似于/etc/profile,也是需要需要重启才会生效,/etc/profile对所有用户生效,~/.bash_profile只对当前用户生效。

先切换到oracle用户,su - oracle

编辑 bash_profile ,输入命令:vi .bash_profile,添加如下环境变量。

[oracle@oracledb ~]$ vim .bash_profile

#在末尾添加

ORACLE_BASE=/home/db/oracle

ORACLE_HOME=$ORACLE_BASE/product/11.2.0

ORACLE_SID=orcl

PATH=PATH:PATH:PATH:ORACLE_HOME/bin 修改path的值,将oracle的bin路径添加到PATH环境变量中

export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH

12.根据静默文件安装oracle11g

cd /home/db/database

./runInstaller -silent -responseFile /home/db/oracle/etc/db_install.rsp -ignorePrereq

安装过程可能比较长,别管它,再开一个窗口,tail -f /home/db/oracle/oraInventory/logs/installActions-07-27_11-34-06PM.log查看安装日志

当原安装窗口出现Successfully Setup Software.

说明安装成功

打开新的终端,以root身份登录,执行脚本:

[root@oracledb oraInventory]# sh /home/db/oracle/oraInventory/orainstRoot.sh

[root@oracledb 11.2.0]# sh /home/db/oracle/product/11.2.0/root.sh

orainstRoot.sh:

设置产品目录位置与拥有该目录的操作系统组,并产生/etc/oraInst.loc。

root.sh:

用来设置必要的操作系统权限,并将orahome,oraenv,coraenv复制到/usr/local/bin目录下。生成/etc/oratab,其中存放一些数据库相关信息。

/qq_36856983/article/details/105906662?utm_medium=distribute.pc_relevant_download.none-task-blog-2defaultBlogCommendFromBaidudefault-1.test_version_3&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-2defaultBlogCommendFromBaidudefault-1.test_version_

切换回oracle用户

su oracle

$ORACLE_HOME/bin/netca /silent /responseFile /home/db/oracle/etc/netca.rsp

用户可以静默模式运行netca 命令去配置并启动 Oracle 网络监听( listener.ora )、配置命名方式和配置配置网络服务名( tnsnames.ora )。Oracle 提供了一个响应文件模板,叫做 netca.rsp 。这里的netca命令是oracle的,先前配置了环境变量,因此可以使用。

命令运行后提示:

Parsing command line arguments:

Parameter “silent” = true

Parameter “responsefile” = /home/db/oracle/etc/netca.rsp

Done parsing command line arguments.

Oracle Net Services Configuration:

Profile configuration complete.

Oracle Net Listener Startup:

Running Listener Control:

/home/db/oracle/product/11.2.0/bin/lsnrctl start LISTENER

Listener Control complete.

Listener started successfully.

Listener configuration complete.

Oracle Net Services configuration successful. The exit code is 0

成功运行后,在/opt/oracle/product/11.2.0/network/admin中生成listener.ora和sqlnet.ora

查看端口是否占用/监听状态:

$ ss -tnl|grep 1521

$ lsnrctl status

lsnrctl:oracle命令

lsnrctl start:启动指定的监听器

lsnrctl stop:关闭指定的监听器

lsnrctl status:显示监听器的状态。status命令显示监听器是不是活动的,日志与跟踪文件的位置,监听器已经持续运行了多长时间,以及监听器所监听的任务。

ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。ss是Socket Statistics的缩写。

-t, --tcp #显示tcp套接字

-n, --numeric #不解析服务名

-l, --listening #显示监听状态的socket

15…以静默方式建立新库,同时也建立一个对应的实例(安装数据库)

su - oracle

vim /home/db/oracle/etc/dbca.rsp

模板1这是我本来想用的,后来报错,用了简单的模板2就行了

[GENERAL]

oracle版本,不能更改

RESPONSEFILE_VERSION = “11.2.0”

Description : Type of operation

操作类型:可选有创建数据库,从数据库创建模版,创建克隆模版,删除数据库,配置数据库,添加实例(只限RAC),删除实例(只限RAC),创建pdb,拔出pdb,删除pdb,配置pdb

OPERATION_TYPE = “createDatabase”

[CREATEDATABASE]

Description : Global database name of the database

全局数据库的名字=SID+主机域名

第三方工具链接数据库的时候使用的service名称

GDBNAME = “orcl”

Description : System identifier (SID) of the database

对应的实例名字

SID = “orcl”

Description : Name of the template

建库用的模板文件

TEMPLATENAME = “General_Purpose.dbc”

Description : Password for SYS user

SYS, 数据库管理帐户

SYSPASSWORD = “oracle”

Description : Password for SYSTEM user

SYSTEM, 数据库管理帐户

SYSTEMPASSWORD = “oracle”

Description : Password for SYSMAN user

SYSMAN,企业管理器帐户

SYSMANPASSWORD = “oracle”

Description : Password for DBSNMP user

DBSNMP,目录集成平台用户

DBSNMPPASSWORD = “oracle”

Description : Location of the data file’s

数据文件存放目录

DATAFILEDESTINATION =/home/db/oracle/oradata

Description : Location of the data file’s

恢复数据存放目录

RECOVERYAREADESTINATION=/home/db/oracle/fast_recovery_area

Description : Character set of the database

字符集,重要!!! 建库后一般不能更改,所以建库前要确定清楚。

(CHARACTERSET = “AL32UTF8” NATIONALCHARACTERSET= “UTF8”)

CHARACTERSET = “AL32UTF8”

Description : total memory in MB to allocate to Oracle

oracle内存1638MB,物理内存2G*80%

TOTALMEMORY = “1638”

模板2:

[GENERAL]

RESPONSEFILE_VERSION = “11.2.0”

OPERATION_TYPE = “createDatabase”

[CREATEDATABASE]

GDBNAME = “orcl”

SID = “orcl”

TEMPLATENAME = “/home/db/oracle/product/11.2.0/assistants/dbca/templates/General_Purpose.dbc”

CHARACTERSET = “AL32UTF8”

开始安装数据库实例:

dbca -silent -responseFile /home/db/oracle/etc/dbca.rsp

模板一执行后报错

Exception in thread “main” java.lang.NullPointerException

at oracle.sysman.assistants.util.INIFileIniPair.<init>(INIFile.java:88)atoracle.sysman.assistants.util.INIFileIniPair.<init>(INIFile.java:88) at oracle.sysman.assistants.util.INIFileIniPair.<init>(INIFile.java:88)atoracle.sysman.assistants.util.INIFileIniSection.addPair(INIFile.java:225)

at oracle.sysman.assistants.util.INIFile.readINIFile(INIFile.java:827)

at oracle.sysman.assistants.util.INIFile.getProfileString(INIFile.java:439)

at oracle.sysman.assistants.mandLineArguments.processResponseFile(CommandLineArguments.java:4340)

at oracle.sysman.assistants.mandLineArguments.process(CommandLineArguments.java:3564)

at oracle.sysman.assistants.dbca.Dbca.execute(Dbca.java:109)

at oracle.sysman.assistants.dbca.Dbca.main(Dbca.java:184)

百度了问题是没有安装jdk,于是安装了java se以后,还是报这个错…

百度说/home/db/oracle/cfgtoollogs/下可看日志,结果也没找到,后来使用模板2,执行成功了,Copying database files

1% complete

3% complete

11% complete

18% complete

26% complete

37% complete

Creating and starting Oracle instance

40% complete

45% complete

50% complete

55% complete

56% complete

60% complete

62% complete

Completing Database Creation

66% complete

70% complete

73% complete

85% complete

96% complete

100% complete

Look at the log file “/opt/oracle/cfgtoollogs/dbca/orcl/orcl.log” for further details.

安装完进行实例进程检查:

ps -ef | grep ora_ | grep -v grep

oracle 3977 1 0 22:44 ? 00:00:00 ora_pmon_orcl

oracle 3979 1 0 22:44 ? 00:00:00 ora_vktm_orcl

oracle 3983 1 0 22:44 ? 00:00:00 ora_gen0_orcl

oracle 3985 1 0 22:44 ? 00:00:00 ora_diag_orcl

oracle 3987 1 0 22:44 ? 00:00:00 ora_dbrm_orcl

oracle 3989 1 0 22:44 ? 00:00:00 ora_psp0_orcl

oracle 3991 1 0 22:44 ? 00:00:00 ora_dia0_orcl

oracle 3993 1 0 22:44 ? 00:00:00 ora_mman_orcl

oracle 3995 1 0 22:44 ? 00:00:00 ora_dbw0_orcl

oracle 3997 1 0 22:44 ? 00:00:00 ora_lgwr_orcl

oracle 3999 1 0 22:44 ? 00:00:00 ora_ckpt_orcl

oracle 4001 1 0 22:44 ? 00:00:00 ora_smon_orcl

oracle 4003 1 0 22:44 ? 00:00:00 ora_reco_orcl

oracle 4005 1 0 22:44 ? 00:00:00 ora_mmon_orcl

oracle 4007 1 0 22:44 ? 00:00:00 ora_mmnl_orcl

oracle 4009 1 0 22:44 ? 00:00:00 ora_d000_orcl

oracle 4011 1 0 22:44 ? 00:00:00 ora_s000_orcl

再次查看监听状态:

$ lsnrctl status

**在查看监听状态是可能会有以下错误

(1)TNS-12545: Connect failed because target host or object does not exist

这个是修改了机器的主机名,但host和listener.ora文件并没有修改,因此需要修改、etc/host和监听/home/db/oracle/product/11.2.0/network/adminlistener.ora。使得其与hostname命令查看的结果一致。修改后,执行lsnrctl start重新启动监听

名词解释:

**数据库实例

用Oracle官方描述:实例是访问Oracle数据库所需的一部分计算机内存和辅助处理后台进程,是由进程和这些进程所使用的内存(SGA)所构成一个集合。

其实就是用来访问和使用数据库的一块进程,它只存在于内存中。就像Java中new出来的实例对象一样。

我们访问Oracle都是访问一个实例,但这个实例如果关联了数据库文件,就是可以访问的,如果没有,就会得到实例不可用的错误。

实例名指的是用于响应某个数据库操作的数据库管理系统的名称。她同时也叫SID。实例名是由参数instance_name决定的。

查询当前数据库实例名:

select instance_name from v$instance;

数据库实例名(instance_name)用于对外部连接。在操作系统中要取得与数据库的联系,必须使用数据库实例名。比如我们作开发,要连接数据库,就得连接数据库实例名:

jdbc:oracle:thin:@localhost:1521:orcl(orcl就为数据库实例名)

一个数据库可以有多个实例,在作数据库服务集群的时候可以用到。

15.6、linux下创建oracle用户表空间

就是在已有的数据库实例上创建一个新的帐号,访问一些新的表。安装完之后是没有自定义的用户名账号的。

操作步骤如下:

(1)登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切换成oracle用户)

(2)以sysdba方式来打开sqlplus,命令如下: sqlplus “/as sysdba”

(3)查看我们常规将用户表空间放置位置:执行如下sql:

select name from v$datafile

(4)创建用户表空间:

CREATE TABLESPACE NOTIFYDB DATAFILE ‘/home/oracle/app/oradata/orcl/scsdb.dbf’ SIZE 200M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

(5)创建用户,指定密码和上边创建的用户表空间

CREATE USER scs IDENTIFIED BY scs DEFAULT TABLESPACE NOTIFYDB;

(6)赋予权限

grant connect,resource to scs;

grant unlimited tablespace to scs;

grant create database link to scs;

grant select any sequence,create materialized view to scs;

–经过以上操作,我们就可以使用scs/scs登录指定的实例,创建我们自己的表了

ps:第一次执行sql得时候提示了:

ERROR at line 1:ORA-01109: database not open

百度了一下,发现是数据库实例状态不对,执行 select status from v$instance查看数据库实例状态为mounted,执行alter database open将实例状态置为open就能顺利执行sql了。

实例状态:nomount->mount->open

nomount:此时实例开启,分配SGA、启动一些后台程序

mount:连接上数据库,但此时仅限数据库管理员操作数据库

open:Oracle数据可以真正的对外服务

15.7使用plsql远程连接服务器oracle服务

一开始配置好了plsql后死活都连接不上oracle服务,还觉得奇怪,ps一下进程也是正常运行,netstat端口也起来了,后来telnet一下1521端口发现不通,发现是防火墙拦截住了,放开一下就行;另外如果使用得得是云服务器,需要在网络安全组策略中放开1521端口得访问,否则依然是不能被访问到。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。