Centos7静默安装Oracle11g
系统包要求
以下系统包或以上版本(32个)必须满足:
binutils-2.17.50.0.6
compat-libstdc+±33-3.2.3
compat-libstdc+±33-3.2.3 (32 bit)
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
gcc-4.1.2
gcc-c+±4.1.2
glibc-2.5-24
glibc-2.5-24 (32 bit)
glibc-common-2.5
glibc-devel-2.5
glibc-devel-2.5 (32 bit)
glibc-headers-2.5
libaio-0.3.106
libaio-0.3.106 (32 bit)
libaio-devel-0.3.106
libaio-devel-0.3.106 (32 bit)
libgcc-4.1.2
libgcc-4.1.2 (32 bit)
libstdc+±4.1.2
libstdc+±4.1.2 (32 bit)
libstdc+±devel 4.1.2
make-3.81
numactl-devel-0.9.8.x86_64
sysstat-7.0.2
unixODBC-2.2.11
unixODBC-2.2.11 (32 bit)
unixODBC-devel-2.2.11
elfutils-libelf-devel-static-0.125
kernel-headers-2.6.18
libgomp-4.1.2
- 检查命令:
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc-2.5 glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
安装oracle软件
- 创建组及用户
root用户下执行如下命令
groupadd oinstall
groupadd dba
useradd -m -d /u01/oracle -g oinstall -G dba oracle
- 系统参数修改
kernel.shmmni = 4096
kernel.shmmax = 8589934592
kernel.shmall = 2097152
fs.file-max = 6815744
kernel.sem = 500 65280 500 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default=8388608
net.core.rmem_max=8388608
net.core.wmem_default=262144
net.core.wmem_max=1048576
fs.aio-max-nr=1048576
修改后,使设置生效sysctl -p
- 用户限制设置
在文件/etc/security/limits.conf中加入以下内容:
vi /etc/security/limits.conf
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 65536
oracle hard nproc 65536
在/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
- 关闭SELinux
vi /etc/sysconfig/selinux
#SELINUX=enforcing
SELINUX=disabled
- 创建安装目录
mkdir -p /u01/oracle
mkdir -p /u01/oracle/product/11gR2
mkdir -p /u01/dbdata/appdata
mkdir -p /u01/dbdata/oradata
mkdir -p /u01/dbdata/flash_recovery_area
chown oracle.oinstall -R /u01/dbdata
chown oracle.oinstall -R /u01/oracle/*
- 设置环境变量
su - oracle
vi ~/.bash_profile
该文件位置在product同级目录
unset USERNAME
export ORACLE_BASE=/u01/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11gR2
export PATH=.:$ORACLE_HOME/bin:$PATH:$HOME/bin:$PATH
export ORACLE_SID=ORAC
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export NLS_LANG=american_america.ZHS16GBK
export ORA_NLS33=$ORACLE_HOME/nls/admin/data
注意,除了ORACLE_BASE和ORACLE_SID,( /etc/profile和.bash_profile中)不设置任何oracle相关环境变量(ORACLE_HOME, PATH,LD_LIBRARY_PATH等)。
- 静默安装软件
- 创建oraInst.loc
su - root
vi /etc/oraInst.loc
inventory_loc=/u01/oracle/oraInventory
inst_group=oinstall
chown oracle:oinstall /etc/oraInst.loc
chmod 664 /etc/oraInst.loc
- 创建响应文件,并安装oracle软件
su - oracle
- 修改
database/response/db_install.rsp
文件,如下所示:
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=db
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/oracle/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/u01/oracle/product/11gR2
ORACLE_BASE=/u01/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.EEOptionsSelection=false
oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.4.0,oracle.oraolap:11.2.0.4.0,oracle.rdbms.dm:11.2.0.4.0,oracle.rdbms.dv:11.2.0.4.0,oracle.rdbms.lbac:11.2.0.4.0,oracle.rdbms.rat:11.2.0.4.0
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=ORAC
oracle.install.db.config.starterdb.SID=ORAC
oracle.install.db.config.starterdb.characterSet=ZHS16GBK
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=7168
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/u01/dbdata/oradata
oracle.install.db.config.starterdb.password.ALL=dba
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
oracle.install.db.CLUSTER_NODES=
oracle.install.db.isRACOneInstall=
oracle.install.db.racOneServiceName=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=/u01/dbdata/flash_recovery_area
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
PROXY_PORT=
PROXY_HOST=
PROXY_USER=
PROXY_PWD=
PROXY_REALM=
COLLECTOR_SUPPORTHUB_URL=
AUTOUPDATES_MYORACLESUPPORT_USERNAME=
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=
oracle.installer.autoupdates.option=
oracle.installer.autoupdates.downloadUpdatesLoc=
- 执行如下命令:
./runInstaller -silent -showProgress -responseFile /u01/oracle/database/response/db_install.rsp
出现类似如下提示表示安装完成:
#-------------------------------------------------------------------
Starting Oracle Universal Installer...
Checking Temp space: must be greater than 120 MB. Actual 460082 MB Passed
Checking swap space: must be greater than 150 MB. Actual 17407 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2016-04-12_12-47-08AM. Please wait ...[oracle@ip-10-0-4-21 database]$ You can find the log of this install session at:
/u01/oracle/oraInventory/logs/installActions2016-04-12_12-47-08AM.log
Prepare in progress.
.................................................. 9% Done.
Prepare successful.
Copy files in progress.
.................................................. 14% Done.
.................................................. 20% Done.
.................................................. 26% Done.
.................................................. 31% Done.
.................................................. 36% Done.
.................................................. 41% Done.
.................................................. 47% Done.
.................................................. 52% Done.
.................................................. 57% Done.
.................................................. 63% Done.
.................................................. 68% Done.
.................................................. 73% Done.
.................................................. 78% Done.
.................................................. 83% Done.
..............................
Copy files successful.
Link binaries in progress.
..........
Link binaries successful.
Setup files in progress.
.................................................. 88% Done.
.................................................. 94% Done.
Setup files successful.
The installation of Oracle Database 11g was successful.
Please check '/u01/oracle/oraInventory/logs/silentInstall2016-04-12_12-47-08AM.log' for more details.
Execute Root Scripts in progress.
As a root user, execute the following script(s):
1. /u01/oracle/oraInventory/orainstRoot.sh
2. /u01/oracle/product/11gR2/root.sh
.................................................. 100% Done.
Execute Root Scripts successful.
Successfully Setup Software.
#-------------------------------------------------------------------
-
使用root用户执行脚本
/u01/oracle/product/11gR2/root.sh
-
NET配置的响应文件,并安装配置监听
使用Oracle默认即可,无需修改,该文件在Oracle安装包的路径:
netca /silent /responsefile /u01/oracle/database/response/netca.rsp
- 执行后出现如下提示:
----------------------------------------------------------------------------
Parsing command line arguments:
Parameter "silent" = true
Parameter "responsefile" = /u01/oracle/database/response/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
Running Listener Control:
/u01/oracle/product/11gR2/bin/lsnrctl start LISTENER
Listener Control complete.
Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0
----------------------------------------------------------------------------
- 创建数据库的响应文件,并安装数据库实例
修改dbca.rsp,如下所示:
[GENERAL]
RESPONSEFILE_VERSION = "11.2.0"
OPERATION_TYPE = "createDatabase"
[CREATEDATABASE]
GDBNAME = "ORAC"
SID = "ORAC"
TEMPLATENAME = "General_Purpose.dbc"
DATAFILEDESTINATION = "/u01/dbdata/oradata"
RECOVERYAREADESTINATION= "/u01/dbdata/flash_recovery_area"
CHARACTERSET = "ZHS16GBK"
NATIONALCHARACTERSET= "AL16UTF16"
- 执行如下命令:
$ORACLE_HOME/bin/dbca -silent -cloneTemplate -gdbName ORAC -sid ORAC -sysPassword dba -systemPassword dba -datafileDestination /u01/dbdata/oradata -responseFile /u01/oracle/database/response/dbca_orac.rsp
执行结果如下所示:
-------------------------------------------------------------------------
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 "/u01/oracle/cfgtoollogs/dbca/erp/erp.log" for further details.
-------------------------------------------------------------------------
- 更改process数量
查看当前process数量show parameter process
alter system set processes=800 scope = spfile;
重启数据库
- 查看1521端口是否已经开始服务
Oracle命令行使用
在sql语句的后面都需要commit;
-
进入实例
/u01/oracle/product/11gR2/bin
然后sqlplus /nolog
-
管理员连接
connect sys/bookstore as sysdba
-
普通用户连接
connect username/password
-
管理员创建新用户
CREATE USER stu1 IDENTIFIED BY password123;
-
查看当前用户下表
SELECT table_name FROM user_tables;
-
更改数据
UPDATE 表名 SET 字段=值 WHERE 字段=值
-
添加数据
insert into table2 values (2,'cbvv');
-
删除数据
delete from table2 where name='ccc';
-
修改表名
Alter Table table2 Rename to table22;
-
修改表字段大小
Alter Table 表名 Modify 字段名 数据类型(约束);
-
删除表记录
Delete From 表名 Where 列名称 = 值
-
创建表create table1是不可以的,要有括号
CREATE TABLE employees (
employee_id NUMBER PRIMARY KEY,
first_name VARCHAR2(50),
last_name VARCHAR2(50),
hire_date DATE
);
- 创建库是使用脚本建库,根据报错内容里的1504结合看
- 添加表字段
ALTER TABLE table2 ADD note VARCHAR2 (200);
- SELECT
SELECT * FROM 表名 WHERE 字段>=2000 AND 字段<=2500;
SELECT * FROM 表明 WHERE 字段 BETWEEN 2000 AND 2500;
- 查询排序
select 字段1,字段2 from 表名 where 字段1 is not null order by 字段1 desc;
ASC:正序;DESC:倒序 - 分组查询
select 字段2, count(*) from 表名 group by 字段2;
- having 查询是对分组之后的结果进行查询
SELECT 字段2,COUNT(*) FROM 表名 GROUP BY 字段2 HAVING AVG(字段1)>2000
- 模糊查询
SELECT * FROM TABLE2 WHERE NAME LIKE '%v%';
%
:表示任意0到多个字符 ;_
: 表示任意单个字符left join on … and …
: 以左表为基,保留所有左边查询数据,查不到为空left join on … where …
: 先匹配,后筛选,不符合条件的会被去除- 查找最近表的修改记录
SELECT * FROM tableName AS OF TIMESTAMP(SYSDATE-30/24/60)
- 查找是否存在重复数据
SELECT COUNT(NAME) as 出现次数, NAME FROM 表名
GROUP BY NAME HAVING count(NAME) >= 2 ORDER BY 出现次数 DESC
关联查询
- 关联查询:内连接(等值、不等值)、外连接(左、右、全)、交叉连接
根据两个表或多个表的列之间的关系,从这些表中查询数据。
FROM join_table join_type join_table[ON (join_condition)]
其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表操作的连接又称做自连接。join_type 指出连接类型。join_condition指连接条件。
连接分为三种:内连接、外连接、交叉连接
- 内连接(INNER JOIN)
select * from T_student s,T_class c where s.classId = c.classId
使用比较运算符(包括=、>、<、<>、>=、<=、!>和!<)进行表间的比较操作,查询与连接条件相匹配的数据。根据比较运算符不同,内连接分为等值连接和不等连接两种。
- 外连接分为左连接(LEFT JOIN)或左外连接(LEFT OUTER JOIN)、右连接(RIGHT JOIN)或右外连接(RIGHT OUTER JOIN)、全连接(FULL JOIN)或全外连接(FULL OUTER JOIN)。我们就简单的叫:左连接、右连接和全连接
- 左连接:返回左表中的所有行,如果左表中行在右表中没有匹配行,则结果中右表中的列返回空值。
select * from T_student s left join T_class c on s.classId = c.classId
总结:左连接显示左表全部行,和右表与左表相同行(没有的用NULL填上)。 - 右连接:恰与左连接相反,返回右表中的所有行,如果右表中行在左表中没有匹配行,则结果中左表中的列返回空值。
- 全连接:返回左表和右表中的所有行。当某行在另一表中没有匹配行,则另一表中的列返回空值
- 交叉连接(CROSS JOIN):也称迪卡尔积。不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积(例如:T_student和T_class,返回4*4=16条记录),如果带where,返回或显示的是匹配的行数。
plsql远程操作Oracle
报错集合
ORA-00906:缺失左括号
create table 表名
create table myTable(id number(5,2),name varchar(10))
括号里是字段约束
ORA-01031: 权限不足
在创建表的时候,报错了,于是在系统管理员权限中:
GRANT CREATE TABLE TO username;
即可
ORA-01501创建库失败/01504名称不符合参数
一个用户在一个数据库实例(一个oracle安装包)里面只拥有一个数据库,数据库的名称就是SID的配置值。在新建用户时,也可以自动创建这个库。如果手动创建,名字也需要和SID一样。所以新创建用户就相当于新创建一个库。
可以理解为创库就是新建用户
ORA-01100 数据库已挂载
数据库已挂载,意思是挂载之前你创新数据库才行,别挂载再创建
关闭数据库,然后在命名阶段启动它,然后应用create database语句
SQL>shutdown immediate;
SQL>startup nomount;
SQL>CREATE database name
startup一句话等于下面三句话,不要startup,要把他们分开
startup nomount
alter database mount
alter database open
可以自动创建这个库。如果手动创建,名字也需要和SID一样,否则报错1504
ORA-12170: TNS:Connect timeout occurred
plsql连接时,记得关闭虚拟机防火墙
systemctl stop firewalld
plsql 连接以后远程数据库有数据,但是查询没有显示结果
plsql动态执行表不可访问,本会话的自动统计被禁止
- select不显示
并不是版本不对,11g对应11.2的远程client
grant select on v_$session to username;
grant select on v_$sesstat to username;
grant select on v_$statname to username;
grant select on v_$mystat to username;
Insert不成功
insert into table2 values (2,'cbc');
select * from table2;
这样可以正确显示和插入数据,但是分开执行insert就不能插入数据,单独执行select也不显示数据,为什么?
事务未提交:在一个事务中分开执行这两个语句,并且没有显式地提交事务,那么在第一个语句执行后插入的数据尚未被提交到数据库中,在执行第二个语句时可能看不到插入的数据。解决方法是在插入数据后执行 COMMIT;
提交事务。
ORA 1701
connect sys as sysdba
然后再输入密码
还有就是记得su - oracle
在root肯定报错
sqlplus / as sysdba
也可以
ORA 12514/12505
在/u01/oracle/product/11gR2/network/admin/listener.ora
修改
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.19.200.167)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/oracle
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = ORAC)
(ORACLE_HOME = /u01/oracle/product/11gR2)
)
)
然后lsnrctl stop 再 start
1521端口没启动
su - oracle
图形化参考文章
麒麟服务器操作系统V10sp2-0524-x86_64安装Oracle11gr2
【银河麒麟V10】【服务器】Oracle11g部署