CentOS7.2静默安装Oracle11G
- 一、安装Oracle
- 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用户启动
- 查看监听器配置文件 listener.ora
- 19.配置以静默方式建立新库,和实例 的响应文件
- 21.启用配置,以静默方式建立新库,和实例
- 22.检查实例后台进程
- 23.以 sysdba 身份登录
- 24.启动 oralce 数据库
- 二、创建表空间、用户授权
一、安装Oracle
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.上传软件包
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html [linux.x64_11gR2_database_1of2.zip]
[linux.x64_11gR2_database_2of2.zip]
可以下载到本地通过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=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, 出现这种原因,是因为用户被锁定了,但为什么释放锁后,一段时间用户又被锁定了呢?
一般出现这种原因,是因为程序连接数据库的数量大于配置的连接数,按照我的所遇到的问题,以下步骤可以解决。
- 程序连接大于 oracle 连接数;
处理方式: 重新设置 连接数: 用管理员进去,执行以下脚本,
alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS 10; --设定连接数
alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS UNLIMITED; --不限制连接数
- 程序连接大于 连接池配置的连接数;
处理方式:把连接池的连接数设置大一些; - 释放用户锁:
用超级管理员,执行 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