Linus下如何安装Oracle

**

CentOS7.2静默安装Oracle11G

**

目录

一、CentOS7.2静默安装Oracle11G
1.#查看系统性能参数
2.#查看安装包
3.#安装依赖包
4.#创建用户、组
5.#上传软件包
6.#创建安装包文件存放目录
7.#解压安装包文件
8.#创建目录
9.#修改内核参数
10.#修改用户限制
11.#修改/etc/pam.d/login 文件
12.#修改/etc/profile 文件
13.#设置 oracle 用户环境变量
14.#编辑静默安装响应文件
15.#安装
16.#打开终端,以 root 身份登录,执行脚本:
17.#查看监听响应文件配置信息
18.#用Oracle用户启动
19.#配置以静默方式建立新库,和实例 的响应文件
20.#查看建库响应文件配置信息
21.#启用配置,以静默方式建立新库,和实例
22.#检查实例后台进程
23.#以 sysdba 身份登录
24.#启动 oralce 数据库

正文

一、CentOS7.2静默安装Oracle11G
1.#查看系统性能参数

cat /etc/sysctl.conf 
2.#查看安装包

rpm -qa |grep -E ‘EMC|Ultra|multipath’ 
3.#安装依赖包
yum -y install gcc gcc-c++ make binutils compat-libstdc+±33 elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static glibc glibc-common glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc+±devel numactl-devel sysstat unixODBC unixODBC-devel kernelheaders pdksh pcre-devel readline rlwrap 
4.#创建用户、组

groupadd oinstall && groupadd dba && useradd -g oinstall -G dba oracle
echo “123456” | passwd --stdin oracle && id oracle

5.#上传软件包
1 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
2 [linux.x64_11gR2_database_1of2.zip]
3 [linux.x64_11gR2_database_2of2.zip]
4 可以下载到本地通过ftp上传到虚拟机中,也可以使用wget命令,下载到虚拟机中。
 
6.#创建安装包文件存放目录
mkdir -p /data/u01/software
mv linux.x64_11gR2_database_* /data/u01/software/ && cd /data/u01/software

7.#解压安装包文件
unzip linux.x64_11gR2_database_1of2.zip && unzip linux.x64_11gR2_database_2of2.zip 
 
8.#创建目录
mkdir -p /data/u01/app/oracle/product/11.2.0/dbhome_1
mkdir /data/u01/app/oracle/{oradata,inventory,fast_recovery_area}
chown -R oracle:oinstall /data/u01/app/oracle
chmod -R 775 /data/u01/app/oracle
  
9.#修改内核参数
vim /etc/sysctl.conf

#添加以下内容
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1073741824
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

10.#修改用户限制

vim /etc/security/limits.conf

#添加以下内容
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240 
 
11.#修改/etc/pam.d/login 文件

vim /etc/pam.d/login

#添加以下内容
session required /lib64/security/pam_limits.so
session required pam_limits.so 
 
12.#修改/etc/profile 文件

vim /etc/profile

#添加以下内容
if [ $USER = “oracle” ]; then
if [ $SHELL = “/bin/ksh” ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
  
13.#设置 oracle 用户环境变量

su - oracle
vim .bash_profile

#添加以下内容
export ORACLE_BASE=/data/u01/app/oracle
export ORACLE_HOME=/data/u01/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export ORACLE_UNQNAME= O R A C L E S I D e x p o r t P A T H = ORACLE_SID export PATH= ORACLE_HOME/bin:$PATH
export NLS_LANG=american_america.AL32UTF8
alias sqlplus=‘rlwrap sqlplus’
alias rman=‘rlwrap rman’

#生效
source .bash_profile
  
14.#编辑静默安装响应文件

cp -R /data/u01/software/database/response/ . && cd response/
vim db_install.rsp

#设置以下内容
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=自己的主机名
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/data/u01/app/oracle/inventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/data/u01/app/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/data/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
DECLINE_SECURITY_UPDATES=true

15.#安装

cd /data/u01/software/database/
./runInstaller -silent -responseFile /home/oracle/response/db_install.rsp -ignorePrereq
等待几分钟  
16.#打开终端,以 root 身份登录,执行脚本:

su - root
source .bash_profile
sh /data/u01/app/oracle/inventory/orainstRoot.sh
sh /data/u01/app/oracle/product/11.2.0/dbhome_1/root.sh
vim /etc/hosts
127.0.0.1 后面加上主机名 
 
17.#查看监听响应文件配置信息

egrep -v “(#|$)” /home/oracle/response/netca.rsp

#以静默方式配置监听
su - oracle
source .bash_profile
netca /silent /responsefile /home/oracle/response/netca.rsp

18.#用Oracle用户启动

su - oracle
lsnrctl start
netstat -tunlp|grep 1521

#查看监听状态
lsnrctl status

#查看监听器配置文件 listener.ora
cat $ORACLE_HOME/network/admin/listener.ora

#查看监听服务名配置文件 tnsnames.ora
cat $ORACLE_HOME/network/admin/tnsnames.ora
  
19.#配置以静默方式建立新库,和实例 的响应文件

vim /home/oracle/response/dbca.rsp

设置以下参数
GDBNAME = “orcl”
SID = “orcl”
SYSPASSWORD = “SYS 用户密码”
SYSTEMPASSWORD = “SYSTEM 用户密码”
SYSMANPASSWORD = “sysman”
DBSNMPPASSWORD = “dbsnmp”
DATAFILEDESTINATION =/data/u01/app/oracle/oradata
RECOVERYAREADESTINATION=/data/u01/app/oracle/fast_recovery_area
CHARACTERSET = “AL32UTF8”
TOTALMEMORY = “6144” 
 
20.#查看建库响应文件配置信息

egrep -v “(#|$)” /home/oracle/response/dbca.rsp
 
21.#启用配置,以静默方式建立新库,和实例

dbca -silent -responseFile /home/oracle/response/dbca.rsp
  
22.#检查实例后台进程

ps -ef | grep ora_ | grep -v grep

#查看 ORACLE_UNQNAME 环境变量
env|grep ORACLE_UNQNAME 
 
23.#以 sysdba 身份登录

sqlplus / as sysdba 
 
24.#启动 oralce 数据库

SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system

报错解决
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system
因为内存太小可以加大虚拟机的内存
或者临时解决如下:
解决方法

su - root
mount -o remount,size=4G /dev/shm
su - oracle
lsnrctl stop
lsnrctl start
sqlplus / as sysdba
SQL> startup

#ORA-28000: the account is locked
解决方法

[oracle@oracal ~]$ sqlplus /nolog
SQL>conn /as sysdba
SQL> alter profile default limit failed_login_attempts unlimited;
sqlplus /nolog
sqlplus /nolog

#ORA-01017: invalid username/password; logon denied
解决方法
密码不合适
用sys用户登录修改密码

[oracle@oracal ~]$ sqlplus / as sysdba
SQL> conn / as sysdba;
SQL> alter user scott identified by 123456;
SQL> alter user scott account unlock;
SQL> conn scott/123456;

#[ConfigureListener.isPortFree:1088] Returning is Port 1521 free: false

/etc/hosts里面127.0.0.0后面没有添加主机名

1. 创建表空间
create tablespace WHFC datafile ‘/data/u01/app/oracle/oradata/WHFC.dbf’ size 1024M extent management local;

2. 创建用户
create user whfc identified by 111111 default tablespace WHFC;
grant dba to whfc;

导出:exp wsnssb/wsnssb@orcl file=文件路径及文件名
导入:imp wsnssb/wsnssb@orcl full=y file=wsnssb.dmp ignore=y

alter user xcclf identified by 改后密码;

删除用户命令
drop user hfclf cascade;
删除表空间
DROP TABLESPACE xcclf INCLUDING CONTENTS AND DATAFILES;

解锁
用java连接oracle, 运行一段时间后,程序报错,连接失败,ora-28000 the account is locked, 出现这种原因,是因为用户被锁定了,但为什么释放锁后,一段时间用户又被锁定了呢?

一般出现这种原因,是因为程序连接数据库的数量大于配置的连接数,按照我的所遇到的问题,以下步骤可以解决。

  1. 程序连接大于 oracle 连接数;
    处理方式: 重新设置 连接数: 用管理员进去,执行以下脚本,
    alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS 10; --设定连接数

alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS UNLIMITED; --不限制连接数

  1. 程序连接大于 连接池配置的连接数;
    处理方式:把连接池的连接数设置大一些;

  2. 释放用户锁:
    用超级管理员,执行 alter user 用户名 account unlock;
    sys登录:在cmd中输入:sqlplus /nolog sql>conn /as sysdba sql>show uesr
    将密码有效期180天,修改为无限期
    ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

SELECT * FROM dba_profiles s WHERE s.profile=‘DEFAULT’ AND resource_name=‘PASSWORD_LIFE_TIME’;这查看密码的有效期的

SQL alter user test account unlock;
  User altered.
一般数据库默认是10次尝试失败后锁住用户
  1、查看FAILED_LOGIN_ATTEMPTS的值
  select * from dba_profiles
  2、修改为30次
  alter profile default limit FAILED_LOGIN_ATTEMPTS 30;
  3、修改为无限次(为安全起见,不建议使用)
  alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;
去除oracle的密码大写敏感设定:alter system set sec_case_sensitive_logon=false;

数据库密码过期后,业务进程一旦重启会提示连接失败。

【解决方案】

按照如下步骤进行操作:

1、查看用户的proifle是哪个,一般是default:

sql>SELECT username,PROFILE FROM dba_users;

2、查看指定概要文件(如default)的密码有效期设置:

sql>SELECT * FROM dba_profiles s WHERE s.profile=‘DEFAULT’ AND resource_name=‘PASSWORD_LIFE_TIME’;

3、将密码有效期由默认的180天修改成“无限制”:

sql>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

修改之后不需要重启动数据库,会立即生效。

4、修改后,还没有被提示ORA-28002警告的帐户不会再碰到同样的提示;

已经被提示的帐户必须再改一次密码,举例如下:

$sqlplus / as sysdba

sql> alter user smsc identified by <原来的密码> ----不用换新密码

oracle11g启动参数resource_limit无论设置为false还是true,密码有效期都是生效的,所以必须通过以上方式进行修改。以上的帐户名请根据实际使用的帐户名更改。

二、【问题描述】

近日H局点反馈,使用sqlplus登陆短消息oracle数据库时提示“ORA-28000: 帐号被锁定”。

【原因/触发因素】

确定是由于oracle11g中默认在default概要文件中设置了“FAILED_LOGIN_ATTEMPTS=10次”,当输入密码错误次数达到设置值将导致此问题。

【影响和风险】

影响

帐号被锁定后,业务进程连接数据库异常,影响业务使用。

问题发生频率

数据库帐号被锁定后,业务进程一旦重启会提示连接失败。

【解决方案】

按照如下步骤进行操作:

1、查看用户的proifle是哪个,一般是default:

sql>SELECT username,PROFILE FROM dba_users;

2、查看指定概要文件(如default)的密码有效期设置:

sql>SELECT * FROM dba_profiles s WHERE s.profile=‘DEFAULT’ AND resource_name=‘FAILED_LOGIN_ATTEMPTS’;

3、将尝试登录失败次数由默认的10次修改成“无限制”:

sql>ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;

4、修改后,还没有被提示ORA-28000警告的用户不会再碰到同样的提示;

已经被锁定的帐户必须解除锁定,举例如下:

$sqlplus / as sysdba

sql> alter user smsc identified by oracle account unlock;

5、修改后default profile应该如下:

sql> select * from dba_profiles WHERE dba_profiles.profile=‘DEFAULT’;

PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT


DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD UNLIMITED

DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED

修改之后不需要重启动数据库,会立即生效。

如果出现ORA-28000 the account is locked.错误

alter user 用户名 account unlock;

请问怎么用一条语句就能让A用户对B用户的所有表/视图拥有只读权限?
在B下执行
grant select any table to A;

sys密码忘了如何修改登录
1.启动sqlplus
2.请输入用户名: sqlplus/as sysdba
3.输入口令: 直接回车
4.连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>alter user sys identified by admin;
用户已更改。
SQL> conn sys/admin as sysdba;
已连接。
SQL> alter user system identified by manager;

//取得该用户下所有的表
select * from user_tables;

//取得表名以及注释信息
select * from user_tab_comments ;

查看某个表空间大小
select sum(bytes)/1024/1024 from user_extents;
要是用户有多个表空间数据的话可以在最后加个where tablespace_name=xxx;来限定某个表空间

(1)以DBA权限登录数据库执行,查询全部表空间使用情况。
SELECT c.tablespace_name,a.bytes/1048576 Megs_Total,(a.bytes-b.bytes)/1048576 Megs_Used,
b.bytes/1048576 Megs_Free,(a.bytes-b.bytes)/a.bytes * 100 Pct_Used, b.bytes/a.bytes * 100 Pct_Free
FROM (SELECT tablespace_name,SUM(a.bytes) bytes,MIN(a.bytes) minbytes,MAX(a.bytes) maxbytes
FROM sys.DBA_DATA_FILES a
GROUP BY tablespace_name) a,(SELECT a.tablespace_name,NVL(SUM(b.bytes),0) bytes
FROM sys.DBA_DATA_FILES a,sys.DBA_FREE_SPACE b
WHERE a.tablespace_name = b.tablespace_name (+)
AND a.file_id = b.file_id (+)
GROUP BY a.tablespace_name) b,sys.DBA_TABLESPACES c
WHERE a.tablespace_name = b.tablespace_name(+)
AND a.tablespace_name = c.tablespace_name
ORDER BY 6;

1,查看和修改oracle表空间
select dbf.tablespace_name,
dbf.totalspace “总量(M)”,
dbf.totalblocks as 总块数,
dfs.freespace “剩余总量(M)”,
dfs.freeblocks “剩余块数”,
(dfs.freespace / dbf.totalspace) * 100 “空闲比例”
from (select t.tablespace_name,
sum(t.bytes) / 1024 / 1024 totalspace,
sum(t.blocks) totalblocks
from dba_data_files t
group by t.tablespace_name) dbf,
(select tt.tablespace_name,
sum(tt.bytes) / 1024 / 1024 freespace,
sum(tt.blocks) freeblocks
from dba_free_space tt
group by tt.tablespace_name) dfs
where trim(dbf.tablespace_name) = trim(dfs.tablespace_name);

2,当发现有的表空间不够的错误时,处理如下:
  (1:找出该表空间对应的数据文件及路径
  select * from dba_data_files t
  where t.tablespace_name = ‘表空间名称’
  (2:增大数据文件
  alter database datafile ‘全路径的数据文件名称’ resize ***M
  (3:增加数据文件
  alter tablespace 表空间名称
  add datafile ‘全路径的数据文件名称’ ***M
3.修改表空间数据文件的自动扩展性
alter database datafile ‘d:\table.dbf’ AUTOEXTEND ON next 5m maxsize 50m;
  注解:表空间尽量让free百分比保持在10%以上,如果低于10%就增加datafile或者resizedatafile,一般数据文件不要超过2G

原创文章 8 获赞 3 访问量 275

猜你喜欢

转载自blog.csdn.net/qq_43380361/article/details/106025363