环境准备
安装指导
CentOS6.7安装Oracle 11g2R傻瓜图文教程
oracle设置/etc/sysctl.conf参数详解
安装完成后可以通过浏览器访问http://10.110.181.99:5500/em
Oracle常用操作
- SQLPlus 在连接时通常有四种方式
- sqlplus / as sysdba
- sqlplus username/password
- sqlplus usernaem/password@orcl
- sqlplus username/password@//host:port/sid
- hostname设置需要一致
- /etc/hosts
127.0.0.1 localhost localhost.localdomain 10.110.181.99 oracle
- /etc/sysconfig/network
HOSTNAME=oracle
- app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
- app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
- 配置完成后重启网络服务
service network restart
。执行hostname
命令输出需为oracle
- /etc/hosts
- 重启监听listener
# su - oracle $ lsnrctl start #启用监听 $ lsnrctl stop #停止监听 $ lsnrctl status #检查监听器的状态 $ lsnrctl reload #重启监听器
- 重启数据库实例
# su - oracle $ sqlplus / nolog SQL> conn / as sysdba SQL> shutdown immediate #关闭数据库 SQL> startup #启动数据库 SQL> exit
- oracle新建数据库、新建用户并授权
- 创建表空间
create tablespace tablespacename datafile '/home/oracle/app/oradata/data.dbf' size xxxm;
tablespacename: 表空间的名字
/home/oracle/app/oradata/data.dbf: 表空间的存储位置 xxx:表空间的大小,m单位为兆 - 创建用户,并指定默认表空间
create user username identified by password default tablespace tablespacename;
username: 用户名
password: 密码
tablespacename: 表空间名字 - 给用户授权
grant create session,create table,unlimited tablespace to username;
- 使用创建的用户登录,登录之后即可创建表
conn username/password;
- 创建表空间
常见错误
- emctl start dbconsole遇到错误:OC4J Configuration issue
- ora-12541: tns no listener
- OC4J Configuration issue. /home/oracle/app/oracle/product/11.2.0/dbhome_1/oc4j/j2ee/OC4J_DBConsole_oracle_orcl not found.
- Oracle11g重建EM 报ORA-20001: SYSMAN already exists
- EM将配置数据上载到资料档案库出错
win7安装Oracle
- 安装包下载
- 安装指导
- Oracle服务状态查看
win+R
输入services.msc
,然后可以查看Oracle相关服务Oracle ORCL VSS Writer service OracleDBConsoleorcl #EM网页管理服务 OracleJobSchedulerORCL OracleMTSRecoveryService OracleOraDb11g_home1ClrAgent OracleOraDb11g_home1TNSListener #表示监听服务,如果客户端想要连接到数据库,此服务必须打开 OracleServiceORCL #表示数据库的主服务,命名规则:OracleService数据库名称。
- 修改主机名或IP地址
修改主机名或IP地址会造成listener监听服务及EM服务不可用,此时需要修改配置文件
listener.ora
和tnsnames.ora
。修改其中的SID_NAME
为数据库SID
,其值为orcl
;HOST
为计算机名。
listener.ora详细配置:SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = ORCL) (ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:D:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll") ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = BKC5EBXVFGUUW6E)(PORT = 1521)) ) ) ADR_BASE_LISTENER = D:\app\Administrator
tnsnames.ora详细配置:
ORACLR_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) (CONNECT_DATA = (SID = CLRExtProc) (PRESENTATION = RO) ) ) LISTENER_ORCL = (ADDRESS = (PROTOCOL = TCP)(HOST = BKC5EBXVFGUUW6E)(PORT = 1521)) ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = BKC5EBXVFGUUW6E)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) )
修改配置文件后需重启Oracle相关服务。
- Navicat连接Oracle时报错ORA-28547
主要是因为oci.dll版本不对。Navicat是通过Oracle客户端连接Oracle服务器的,可以下载相应版本的Instant Client,然后解压,打开Navicat软件配置oci.dll位置:工具
–>选项
–>环境
–>配置oci
,配置完成后需重启Navicat软件。
常用SQL语句
- 运行sql文件
SQL> @ d:\a.sql; SQL> start d:\a.sql;
- 编辑sql文件
SQL> edit d:\a.sql;
- 将sqlplus屏幕上的内容输出到指定文件中
SQL> spool d:\b.sql; SQL> select * from student; SQL> spool off;
- spool保存屏幕上内容到sql文件实例
SQL> disc; 从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开 SQL> conn system/123456@orcl 已连接。 SQL> show user; USER 为 "SYSTEM" SQL> create user xiaoming identified by 123456; 用户已创建。 SQL> password xiaoming 更改 xiaoming 的口令 口令已更改 SQL> alter user xiaoming identified by 123456; 用户已更改。 SQL> disc; 从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开 SQL> conn system/123456@orcl 已连接。 SQL> drop user xiaoming cascade; 用户已删除。 SQL> create table student(xh number(4), 2 xm varchar2(20), 3 sex char(2), 4 birthday date, 5 sal number(7,2)); 表已创建。 SQL> create table class( 2 classid number(2), 3 cname varchar2(40) 4 ); 表已创建。 SQL> alter table student add (classid number(2)); 表已更改。 SQL> alter table student drop column sal; 表已更改。 SQL> rename student to stu; 表已重命名。 SQL> alter session set nls_date_format='yyyy-mm-dd'; 会话已更改。 SQL> insert into stu values('001','mike','M','1990-05-06',10); 已创建 1 行。 SQL> insert into stu values('002','snowy','W','1990-05-06',10); 已创建 1 行。 SQL> insert into stu(xh,xm,sex) values ('003','john','W'); 已创建 1 行。 SQL> rename stu to student; 表已重命名。 SQL> select * from student; XH XM SE BIRTHDAY CLASSID ---------- -------------------- -- ---------- ---------- 1 mike M 1990-05-06 10 2 snowy W 1990-05-06 10 3 john W SQL> select * from student where birthday is not null; XH XM SE BIRTHDAY CLASSID ---------- -------------------- -- ---------- ---------- 1 mike M 1990-05-06 10 2 snowy W 1990-05-06 10 SQL> update student set sex='W' where xh='001'; 已更新 1 行。 SQL> select * from student; XH XM SE BIRTHDAY CLASSID ---------- -------------------- -- ---------- ---------- 1 mike W 1990-05-06 10 2 snowy W 1990-05-06 10 3 john W SQL> savepoint a; 保存点已创建。 SQL> delete from student; 已删除3行。 SQL> select * from student; 未选定行 SQL> rollback to a; 回退已完成。 SQL> select * from student; XH XM SE BIRTHDAY CLASSID ---------- -------------------- -- ---------- ---------- 1 mike W 1990-05-06 10 2 snowy W 1990-05-06 10 3 john W SQL> delete from student where xh='002'; 已删除 1 行。 SQL> select * from student; XH XM SE BIRTHDAY CLASSID ---------- -------------------- -- ---------- ---------- 1 mike W 1990-05-06 10 3 john W SQL> rollback to a; 回退已完成。 SQL> select * from student; XH XM SE BIRTHDAY CLASSID ---------- -------------------- -- ---------- ---------- 1 mike W 1990-05-06 10 2 snowy W 1990-05-06 10 3 john W SQL> truncate table student; 表被截断。 SQL> select * from student; 未选定行 SQL> rollback to a; rollback to a * 第 1 行出现错误: ORA-01086: 从未在此会话中创建保存点 'A' 或者该保存点无效 SQL> insert into student values('001','mike','M','1990-05-06',10); 已创建 1 行。 SQL> insert into student(xh,xm,sex) values ('003','john','W'); 已创建 1 行。 SQL> select count(*) from student; COUNT(*) ---------- 2 SQL> spool off;