手动启动oracle, 以下以oracle 9i为例, 数据库为BOOKMARK:
oracleStart.bat
@echo off
net start OracleOraHome90Agent
net start OracleOraHome90TNSListener
net start OracleServiceBOOKMARK
oracleStop.bat
@echo off
net stop OracleOraHome90Agent
net stop OracleOraHome90TNSListener
net stop OracleServiceBOOKMARK
创建临时表空间
CREATE TEMPORARY TABLESPACE test_temp
TEMPFILE 'C:\oracle\product\10.1.0\oradata\orcl\test_temp01.dbf'
SIZE 32M
AUTOEXTEND ON
NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;
创建用户表空间
CREATE TABLESPACE test_data
LOGGING
DATAFILE 'C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\TEST_DATA01.DBF'
SIZE 32M
AUTOEXTEND ON
NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;
创建用户并制定表空间
CREATE USER username IDENTIFIED BY password
DEFAULT TABLESPACE TEST_DATA
TEMPORARY TABLESPACE TEST_TEMP;
给用户授予权限
GRANT CREATE SESSION, CREATE ANY TABLE, CREATE ANY VIEW ,CREATE ANY INDEX, CREATE ANY PROCEDURE,
ALTER ANY TABLE, ALTER ANY PROCEDURE,
DROP ANY TABLE, DROP ANY VIEW, DROP ANY INDEX, DROP ANY PROCEDURE,
SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE
TO username;
将role这个角色授与username,也就是说,使username这个用户可以管理和使用role所拥有的资源
GRANT role TO username;
-----------------------------------------------查看用户权限---------------------------------------------------------
查看所有用户
SELECT * FROM DBA_USERS;
SELECT * FROM ALL_USERS;
SELECT * FROM USER_USERS;
查看用户系统权限
SELECT * FROM DBA_SYS_PRIVS;
SELECT * FROM USER_SYS_PRIVS;
查看用户对象或角色权限
SELECT * FROM DBA_TAB_PRIVS;
SELECT * FROM ALL_TAB_PRIVS;
SELECT * FROM USER_TAB_PRIVS;
查看所有角色
SELECT * FROM DBA_ROLES;
查看用户或角色所拥有的角色
SELECT * FROM DBA_ROLE_PRIVS;
SELECT * FROM USER_ROLE_PRIVS;
下面介绍一下关于sequence 的生成,修改,删除等常用的操作:
1. 创建 Sequence
使用如下命令新建sequence(用户需要有CREATE SEQUENCE 或者CREATE ANY SEQUENCE权限):
CREATE SEQUENCE test_sequence INCREMENT BY 1 -- 每次加的个数据 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10 ; [注意] 如果设置了CACHE值,ORACLE将在内存里预先放置一些sequence,以使存取速度更快。cache里面的取完后,oracle自动再取一组到 cache。 但是,使用cache可能会跳号, 当遇到数据库突然异常down掉(shutdown abort),cache中的sequence就会丢失. 因此,推荐在create sequence的时候使用 nocache 选项。
2. 使用 sequence:
sequence.CURRVAL -- 返回 sequence的当前值 sequence.NEXTVAL -- 增加sequence的值,然后返回 sequence 值
[注意] 第一次NEXTVAL返回的是初始值; 随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。
CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。 一次NEXTVAL会增加一次 SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。
sequence 存储在数据字典中,存储于user_sequences表 LAST_NUMBER 为最终序列号,也就是sequence游标当前所在的位置。
//get sequence last_number
SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME=TEST_SEQNAME
// NEXTVAL 使游标指向下一位(增一或减一)
SELECT SEQNAME.NEXTVAL FROM USER_SEQUENCES 得到下一位游标的值
3. 修改 Sequence
用户必须拥有ALTER ANY SEQUENCE 权限才能修改sequence. 可以alter除start至以外的所有sequence参数. 如果想要改变start值,必须 drop sequence 再 re-create.
命令格式如下:
ALTER SEQUENCE test_sequence INCREMENT BY 10 MAXVALUE 10000 CYCLE -- 到10000后从头开始 NOCACHE ;
4. 删除 Sequence DROP SEQUENCE order_seq;
参考资料:http://www.yuloo.com/jsjks/sthb/Oraclerenzheng/98165.html
<script type="text/javascript"></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
Oracle SQL Plus命令:
执行SQL 文件:@D:\....\sql.sql;
查询当前数据库名字:
show parameter db_name 或者 select * from v$database
Oracle环境变量TNS_ADMIN - [ORACLE]
Nov 14, 2009
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://fbirdzp.blogbus.com/logs/51371540.html
大多时候报"TNS”相关的错误都是由于tnsnames.ora的书写问题,当然万事不是没有例外。
主机/oracle/10g_db/network/admin/tnsnames.ora添加远程数据库的SQL*Net串,如下:
RMAN_CLO = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.0.17)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = clo) (INSTANCE_NAME = clo) ) ) |
sqlplus连接远程RMAN_CLO的时候提示如下错误:
[test2]@dbserver8[/oracle]$sqlplus system/oracle@RMAN_CLO SQL*Plus: Release 10.2.0.3.0 - Production on Sat Nov 14 21:22:38 2009 Copyright (c) 1982, 2006, Oracle. All Rights Reserved. ERROR: ORA-12154: TNS:could not resolve the connect identifier specified Enter user-name: ^C [test2]@dbserver8[/oracle]$ |
使用tnsping进行检查,报错如下:
[test2]@dbserver8[/oracle]$tnsping RMAN_CLO
TNS Ping Utility for IBM/AIX RISC System/6000: Version 10.2.0.3.0 -
Production on 14-NOV-2009 21:22:45
Copyright (c) 1997, 2006, Oracle. All rights reserved.
Used parameter files:
/oracle/10g_asm/network/admin/sqlnet.ora
TNS-03505: Failed to resolve name
[test2]@dbserver8[/oracle]$ |
tnsping给了一个重要的提示,它检查的tnsnames.ora文件是"/oracle/10g_asm/network/admin/sqlnet.ora”,与我添加的tnsnames.ora并不是同一个文件。
检查数据库环境变量,发现问题原因:
[test2]@dbserver8[/oracle]$more .profile
export ORACLE_BASE=/oracle
export ORACLE_HOME=$ORACLE_BASE/10g_db
export ORACLE_HOME=$ORACLE_BASE/10g_db
export ORA_CRS_HOME=$ORACLE_BASE/crs
export CRS_HOME=$ORA_CRS_HOME
export ORA_ASM_HOME=$ORACLE_BASE/10g_asm
export TNS_ADMIN=$ORA_ASM_HOME/network/admin
... ... |
搭建数据库的时候如果没有设置,TNS_ADMIN默认值为"$ORACLE_HOME/network/admin”。由于没有考虑到搭建环境的同事自定义了该值,直接对$ORACLE_HOME/network/admin/tnsnames.ora进行了修改,所以出现问题。
当然,如果环境搭建人员自定义了该变量需要告知其他数据库管理员,特别注意tnsnames.ora的实际位置,避免生产环境出现重大误操作。