oracle收集

oracle收集
2010年07月03日
  全数据库的导入与导出
  exp username/password full=y file=yourdata.dmp grants=y rows=y
  imp username/password full=y ignore=y file=yourdata.dmp grants=y
  复制空表结构
  create table new_table
  as select * from old_table where 1=2;
  复制表(含记录)
  create table new_table
  as select * from old_table ;
  把一个用户下的表导入到另一个用户下,但需要改名
  先用exp导出所有的表;
  用imp将导出的表导入到新用户;
  在新用户下,执行
  select 'RENAME TABLE '||tname||' TO NEW_'||tname||';'
  from tab
  where tabtype='TABLE';
  将上面的查询结果保存到一个sql文件中,处理后执行就可以了。
  BFILE的用法
  (1)、create or replace directory
  BFILE_TEST
  as
  '/oracle/oradata/bfiles';
  (2)、grant read on directory BFILE_TEST to SCOTT;
  (3)、host ls -l /oracle/oradata/bfiles/1.TXT
  (4)、connect SCOTT/TIGER
  create table BFILES (ID number, TEXT bfile );
  (5)、insert into BFILES values ( 1,
  bfilename ( 'BFILE_TEST', '1.TXT' ) );
  如何使用SQLPLUS和SVRMGRL运行脚本
  (1)、用sqlplus调用:
  c:script.txt的内容
  startup;
  命令行:sqlplus internal/oracle @c:script.txt
  (2)、用svrmgrl调用:
  c:script.txt的内容
  connect internal/oracle;
  startup;
  命令行:svrmgrl @c:script.txt
  DROP掉名字是小写的表(用双引号括起来)
  drop table "tablename"
  select * from "tablename"
  日期的显示格式
  注意:SIMPLIFIED CHINESE(简体中文需要" "括起来)
  别的国家不用" " 例如:ENGLISH
  select to_char(sysdate,'DAY','NLS_DATE_LANGUAGE=''SIMPLIFIED CHINESE''') from dual;
  ------------
  星期四
  ------------
  使触发器无效(login_on)
  svrmgrl
  connect internal/oracle
  alter trigger login_on disable;
  使触发器为无效alter trigger yourtriggername disable
  如果是对于某一个表的所有的触发器:
  alter table yourtablename disable all triggers
  关于创建重建查看索引
  创建索引:
  CREATE INDEX IND_NAME ON TABLE_NAME(COL1,COL2,...);
  重建索引:
  ALTER INDEX IND_NAME REBUILD;
  查看索引:
  SELECT * FROM USER_INDEXES WHERE INDEX_NAME='IND_NAME';
  ORACLE如何查杀用户的进程
  一、
  根据用户的应用程序和SQL语句,在DBA STUDIO找到用户的SESSION并断开其连接
  二、
  (1)、要杀掉一个session应先应知道其sid和serial#,假设你已经知道。
  (2)、select paddr from v$session where sid=v_sid and serial#=v_serial#
  select spid from v$process where addr=paddr(以上语句所查出的);
  (3)、使用ALTER SYSTEM KILL SESSION 'v_sid,v_serial#' immediate; 试一试如不行转
  三、LINUX和UNIX下
  转到操作系统下执行:kill -9 spid (以上语句所查出的)
  关于如何建立数据库链接(DBlink)
  可以通过建立客户机数据库网络服务名的办法,将服务器的名字或是IP地址设置为你需要连接的那个机器就行
  如果你要在一个应用中连接它,现在做好上步工作,然后按如下处理
  建立数据库连接
  CREATE DATABASE LINK DBaseLinkName CONNECT TO UserName IDENTIFIED BY Password USING 'NetServiceName';
  DBaseLinkName 是建立的数据连接名称
  UserName 是可以连接到的用户名
  Password 是可以连接到的用户的密码
  NetServiceName 是可以连接的数据库网络服务名或是数据库名
  查询建立数据连接的表实例
  Select * From TableName@ DBaseLinkName;
  注意:如果在CREATE DATABASE LINK DBaseLinkName CONNECT TO UserName IDENTIFIED BY Password USING 'NetServiceName';中NetServiceName 是数据库名修改init.ora中:global_names = true
  否则global_names = false
  init.ora中:global_names = false
  ORACLE中如何实现自增字段:
  (1)第一种方法
  ORACLE一般的做法是同时使用序列和触发器来生成一个自增字段.
  CREATE SEQUENCE SEQname
  INCREMENT BY 1
  START WITH 1
  MAXVALUE 99999999
  /
  CREATE TRIGGER TRGname
  BEFORE INSERT ON table_name
  REFERENCING
  NEW AS :NEW
  FOR EACH ROW
  Begin
  SELECT SEQname.NEXTVAL
  INTO :NEW.FIELDname
  FROM DUAL;
  End;
  (2)第二种方法:
  CREATE OR REPLACE TRIGGER TR1
  BEFORE INSERT ON temp_table
  FOR EACH ROW
  declare
  com_num NUMBER;
  BEGIN
  SELECT MAX(ID) INTO COM_NUM FROM TEMP_TABLE;
  :NEW.ID:=COM_NUM+1;
  END TR1;
  job的使用:
  修改initsid.ora参数
  job_queue_processes = 4 8i,9i (允许同时执行的JOB数)
  job_queue_interval = 10 8i
  job_queue_keep_connections=true 8i
  DBMS_JOB.SUBMIT(:jobno,//job号
  'your_procedure;',//要执行的过程
  trunc(sysdate)+1/24,//下次执行时间
  'trunc(sysdate)+1/24+1'//每次间隔时间
  );
  删除job:dbms_job.remove(jobno);
  修改要执行的操作:dbms_job.what(jobno,what);
  修改下次执行时间:dbms_job.next_date(job,next_date);
  修改间隔时间:dbms_job.interval(job,interval);
  停止job:dbms.broken(job,broken,nextdate);
  启动job:dbms_job.run(jobno);
  注意:修改后一定要COMMIT;
  例子:
  VARIABLE jobno number;
  begin
  DBMS_JOB.SUBMIT(:jobno,
  'Procdemo;',//Procdemo为过程名称
  SYSDATE, 'SYSDATE + 1/720');
  commit;
  end;
  Oracle常见服务
  几个主要的:
  OracleOraHome81TNSListener 监听服务
  OracleServiceSID ORACLE服务
  OracleOraHome81Agent 智能代理服务
  OracleOraHome81CMan 连接管理服务
  OracleOraHome81HTTPServer APACHE WEB 服务
  OracleOraHome81ManagementServer ORACLE 企业管理器服务
  OracleOraHome81Names ORACLE命名服务
  剩下的也不常用。
  ORACLE的热备份
  在不关闭数据库的时候进行ORACLE的备份。
  原理停复杂的,你去找本书看看吧。
  举个简单的例子:备份表空间USERS
  ALTER TABLESPACE USERS BEGIN BACKUP
  COPY USERS TABLESPACE 的数据文件到备份目录
  ALTER TABLESPACE USERS END BACKUP
  导致索引不起作用的解决办法
  是由optimizer_mode参数引起的,该参数的默认值为choose,即为如表有statis则查询走基于cost的方式,否则走基于rule的方式,因些你可以有以下几个解决方法。
  (1)、简单的在init.ora中设optimizer_mode=rule,重起数据库。
  (2)、使用analyze table table_name(索引基表) delete statistics;
  (3)、最后一个万能办法,将表和索引drop掉,重建。
  删除重复列的方法
  (1) DELETE FROM table_name A WHERE ROWID > (
  SELECT min(rowid) FROM table_name B
  WHERE A.key_values = B.key_values);
  (2) create table table2 as select distinct * from table1;
  drop table1;
  rename table2 to table1;
  (3) Delete from mytable where rowid not in(
  select max(rowid) from mytable
  group by column_name );
  (4) delete from mytable t1
  where exists (select 'x' from my_table t2
  where t2.key_value1 = t1.key_value1
  and t2.key_value2 = t1.key_value2
  ...
  and t2.rowid > t1.rowid);
  oracle如何设置查询超时
  select /*+ timeout 30*/ * from veryLargeTable
  修改字符集
  (1)、ALTER DATABAE CHARACTER SET SIMPLIFIED CHINESE_CHINA.ZHS16GBK ;
  (2)、update props$ set value$='ZHS16CGB231280'
  where name='NLS_CHARACTERSET';
  update props$ set value$='ZHS16CGB231280'
  where name='NLS_NCHAR_CHARACTERSET';
  建议不使用(2)
  注意:
  (1)、执行ALTER DATABASE CHARACTER SET必须有SYSDBA权限,并且在STARTUP RESTRICT模式下执行
  (2)、原字符集必须是目标字符集的一个真子集(就是浪子所说的只能从WE8ISO8859P1转到ZHS16GBK的原因)
  (3)、CLOB字段装换可能有问题,建议在转换以前把有CLOB字段的表导出后DROP,转换以后再导回
  (4)、该转换不可逆,所以在做这个操作以前建议做数据库全备份
  修改数据库名字
  (1)、启动svrmgrl,以文本方式备份控制文件
  oracle>svrmgrl
  svrmgrl>connect internal
  svrmgrl>alter system backup controlfile to trace
  (2)、编辑产生的跟踪文件,在udump目录下
  改CREATE CONTROLFILE REUSE DATABASE "CTC" NORESETLOGS ARCHIVELOG
  中的REUSE为SET
  然后把create controlfile这段语句拷出
  (3)、正常宕库,后启动到nomount下
  svrmgrl>shutdown immediate
  svrmgrl>startup nomount
  (4)、执行create controlfile那段语句
  (5)、打开数据库
   svrmgrl>alter database open
   如提示用resetlogs选项则使用
  svrmgrl>alter database open resetlogs
  (8)、相应修改初始化参数
  如何知道一个表空间还有多少可以用
  (1)、
  SELECT upper(f.tablespace_name) 表空间名,
  d.Tot_grootte_Mb "表空间大小(M)",
  d.Tot_grootte_Mb - f.total_bytes "已使用空间(M)",
  round((d.Tot_grootte_Mb - f.total_bytes) / d.Tot_grootte_Mb * 100,2) "使用比",
  f.total_bytes "空闲空间(M)",
  f.max_bytes "最大块(M)"
  FROM
  (SELECT tablespace_name,
  round(SUM(bytes)/(1024*1024),2) total_bytes,
  round(MAX(bytes)/(1024*1024),2) max_bytes
  FROM sys.dba_free_space
  GROUP BY tablespace_name) f,
  (SELECT dd.tablespace_name, round(SUM(dd.bytes)/(1024*1024),2) Tot_grootte_Mb
  FROM sys.dba_data_files dd
  GROUP BY dd.tablespace_name) d
  WHERE d.tablespace_name = f.tablespace_name
  ORDER BY 4 DESC
  (2)、select tablespace_name,round(sum(bytes)/1024/1024,2) "M" from dba_free_space
  group by tablespace_name
  使索引无效
  ALTER INDEX idx UNUSABLE;
  ALTER INDEX idx_acctno DISABLE;(only to a function based index)
  --------------------------------------------------------------------------------------------
  在SQLPLUS中调用存储过程
  SET SERVEROUTPUT ON
  declare
  out_param varchar2(100);
  begin
  your_proc(1,out_param);
  dbms_output.put_line(out_param);
  end;
  /
  SET SERVEROUTPUT OFF
  ORACLE9i中删除表空间中数据文件的方法
  drop tablespace tbsname including contents
  分析表
  analyze table mzbs.db_code ESTIMATE STATISTICS SAMPLE 20 PERCENT;
  [b][/b]
  [b]:[/b]
  [b][/b]?
  --> -->23 09, 2006LINUX、UNIX下自动启动ORACLE服务作者 fevair 17:40 |
  
   静态链接网址 |
  
   最新回复 (0) |
  
   引用 (0) | oracle数据库开发[收集]
  (1)
  !/bin/sh
  # chkconfig: 345 51 49
  # description: starts the oracle dabase deamons
  #
  ORA_HOME=/u01/app/oracle/product/8.1.7
  ORA_OWNER=oracle
  case "$1" in
  'start')
  echo -n "Starting Oracle8i: "
  su - $ORA_OWNER -c $ORA_HOME/bin/dbstart
  touch /var/lock/subsys/oracle8i
  echo
  ;;
  'stop')
  echo -n "Shutting down Oracle8i: "
  su - $ORA_OWNER -c $ORA_HOME/bin/dbshut
  rm -f /var/lock/subsys/oracle8i
  echo
  ;;
  'restart')
  echo -n "Restarting Oracle8i: "
  $0 stop
  $0 start
  echo
  ;;
  *)
  echo "Usage: oracle8i { start | stop | restart }"
  exit 1
  esac
  exit 0
  我仿照su - $ORA_OWNER -c $ORA_HOME/bin/dbshut 的形式
  添加su - $ORA_OWNER -c $ORA_HOME/bin/lsnrctl start
  但是在系统启动的时候listener启动不了
  (2)
  /etc/rc.local
  改成如下就可以了
  touch /var/lock/subsys/local
  #echo 2147483648 > /proc/sys/kernel/shmmax
  echo -n "Starting Oracle Database:"
  date +"%D %T %a"
  su - oracle -c "lsnrctl start"
  #su - oracle -c "sqlplus /nolog @startmaster.sql"
  echo -n "Oracle Database Started:"
  date +"%D %T %a"
  -------------
  第一个#是改共享内存大小的
  第二个#是启动数据库的。
  (3)
  ftp://ftp.rpmfind.net/linux/rhcontri ... lerun9i-1.0-1.i386.rpm
  下载这个软件包并安装。
  里面每个文件都有一些要修改的地方。配置完成之后,就可以在系统服务配置中找到它,选中它就可能以自启动了。
  -->23 09, 2006ORACLE的临时表作者 fevair 17:39 |
  
   静态链接网址 |
  
   最新回复 (0) |
  
   引用 (0) | oracle数据库开发[收集]
  CREATE GLOBAL TEMPORARY TABLE TABLENAME (
  COL1 VARCHAR2(10),
  COL2 NUMBER
  ) ON COMMIT PRESERVE(DELETE) ROWS ;
  这种临时表不占用表空间,而且不同的SESSION之间互相看不到对方的数据
  在会话结束后表中的数据自动清空,如果选了DELETE ROWS,则在提交的时候即清空数据,PRESERVE则一直到会话结束
  在Oracle8i中,可以创建以下两种临时表:
  (1)会话特有的临时表
  CREATE GLOBAL TEMPORARY ()
  ON COMMIT PRESERVE ROWS;
  (2)事务特有的临时表
  CREATE GLOBAL TEMPORARY ()
  ON COMMIT DELETE ROWS;
  CREATE GLOBAL TEMPORARY TABLE MyTempTable
  所建的临时表虽然是存在的,但是你试一下insert 一条记录然后用别的连接登上去select,记录是空的,明白了吧,我把下面两句话再贴一下:
  --ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)
  --ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表。
  冲突的问题更本不用考虑.
  临时表只是保存当前会话(session)用到的数据,数据只在事务或会话期间存在。
  通过CREATE GLOBAL TEMPORARY TABLE命令创建一个临时表,对于事务类型的临时表,
  数据只是在事务期间存在,对于会话类型的临时表,数据在会话期间存在。
  会话的数据对于当前会话私有。每个会话只能看到并修改自己的数据。DML锁不会加到
  临时表的数据上。下面的语句控制行的存在性。
  ● ON COMMIT DELETE ROWS 表名行只是在事务期间可见
  ● ON COMMIT PRESERVE ROWS 表名行在整个会话期间可见
  可以对临时表创建索引,视图,出发器,可以用export和import工具导入导出表的
  定义,但是不能导出数据。表的定义对所有的会话可见。
  例如:
  CREATE GLOBAL TEMPORARY TABLE TEMP_TAB1(
  table_name VARCHAR2(20),
  primary_key VARCHAR2(100),
  field VARCHAR2(1000))
  ON COMMIT PRESERVE ROWS;
  CREATE GLOBAL TEMPORARY TABLE TEMP_TAB2(
  table_name VARCHAR2(20),
  primary_key VARCHAR2(100),
  field VARCHAR2(1000))
  ON COMMIT DELETE ROWS;
  -->23 09, 2006JOB中日期的使用作者 fevair 17:31 |
  
   静态链接网址 |
  
   最新回复 (0) |
  
   引用 (0) | oracle数据库开发[收集]
  每个月1号:
  last_day(sysdate)+1
  每个季度的第一天:
  to_date(decode(to_char(sysdate,'q'),'1',to_char(sysdate,'yyyy')||'0101',
  '2',to_char(sysdate,'yyyy')||'0401','3',to_char(sysdate,'yyyy')||'0701',
  '4',to_char(sysdate,'yyyy')||'1001'),'yyyymmdd')
  每天:
  sysdate+1
  每个星期几:
  decode(to_char(sysdate,'w'),'1',sysdate+7,
  to_char(sysdate,'w'),'2',sysdate+6,to_char(sysdate,'w'),'3',sysdate+5,
  to_char(sysdate,'w'),'4',sysdate+4,to_char(sysdate,'w'),'5',sysdate+3,
  to_char(sysdate,'w'),'6',sysdate+2,to_char(sysdate,'w'),'7',sysdate+1)
  每个星期x下午三点:interval(21, 'next_day(trunc(sysdate),x+1)+15/24');
  每个季度的第一个星期x:
  interval(21, 'next_day(trunc(sysdate,''Q''),3),5)');
  -->23 09, 2006表空间管理和用户管理作者 fevair 17:27 |
  
   静态链接网址 |
  
   最新回复 (0) |
  
   引用 (0) | oracle数据库开发[收集]
  --查看表空间和数据文件
  select file_name,tablespace_name,autoextensible from dba_data_files;
  --数据表空间
  CREATE TABLESPACE USER_DATA
  LOGGING
  DATAFILE 'D:ORACLEORADATAORCLtest.DBF' SIZE 50m REUSE ,
  'c:USERS01112.DBF' SIZE 50m REUSE
  AUTOEXTEND
  ON NEXT 1280K MAXSIZE 16383M EXTENT MANAGEMENT LOCAL
  --临时表空间
  CREATE TEMPORARY
  TABLESPACE USER_DATA_TEMP TEMPFILE 'D:TEMP0111.DBF'
  SIZE 50M REUSE AUTOEXTEND
  ON NEXT 1024K MAXSIZE 16383M EXTENT MANAGEMENT LOCAL UNIFORM
  SIZE 1024K
  --增加数据文件
  ALTER TABLESPACE USER_DATA
  ADD DATAFILE 'c:USERS01113.DBF' SIZE 50M;
  ALTER TABLESPACE USER_DATA
  ADD DATAFILE 'c:USERS01114.DBF' SIZE 50M
  AUTOEXTEND ON
  ;
  --删除表空间
  DROP TABLESPACE USER_DATA INCLUDING CONTENTS;
  --修改数据文件大小
  ALTER DATABASE
  DATAFILE 'c:USERS01113.DBF' RESIZE 40M;
  --创建用户、赋予权限
  CREATE USER USER_DATA PROFILE DEFAULT IDENTIFIED BY USER_DATA
  DEFAULT
  TABLESPACE USER_DATA TEMPORARY
  TABLESPACE USER_DATA ACCOUNT UNLOCK;
  GRANT CONNECT TO USER_DATA;
  GRANT RESOURCE TO USER_DATA;
  --把表移到另一个表空间
  ALTER TABLE TABLENAME MOVE TABLESPACE TABLESPACENAME;
  --创建索引
  CREATE INDEX INDEXNAME ON TABLENAME(COLUMNNAME);
  CREATE INDEX INDEXNAME ON TABLENAME(COLUMNNAME) TABLESPACE TABLESPACENAME;
  --重新建立索引
  ALTER INDEX INDEXNAME REBUILD TABLESPACE TABLESPACE;
  --创建表
  CREAE TABLE TABLENAME
  (COLUMN1 COLUTYPE DEFAULT(VALUE) NOT NULL)
  (COLUMN2 COLUTYPE DEFAULT(VALUE) NOT NULL);
  --建表的索引存储分配
  CREATE TABLE summit.employee(id NUMBER(7) CONSTRAINT employee_id_pk PRIMARY KEY DEFERRABLE USING INDEX STORAGE(INITIAL 100K NEXT 100K)
  TABLESPACE indx,
  last_name VARCHAR2(25) CONSTRAINT employee_last_name_nn NOT NULL,
  dept_id NUMBER(7))
  TABLESPACE data;
  --建立主键
  ALTER TABLE TABLENAME
  ADD CONSTRAINT CONSTRAINTNAME PRIMARY KEY(COLUMN1,COLUMN2)
  --使约束无效
  ALTER TABLE TABLENAME ENABLE NOVALIDATE CONSTRAINT CONSTRANAME;
  ALTER TABLE TABLENAME ENABLE VALIDATE CONSTRAINT CONSTRANAME;
  --删除约束
  ALTER TABLE TABLENAME DROP CONSTRAINT constraintname;
  DROP TABLE TABLENAEM CASCADE CONSTRAINTS;(删除表后将所用的外键删除)
  --给表增加列
  ALTER TABLE TABLENAME
  ADD COLUMN COLUTYPE DEFAULT(VALUE) NOT NULL;
  --给列增加缺省值
  ALTER TABLE TABLENAME
  MODIFY COLUMNNAME DEFAULT(VALUE) NOT NULL;
  --给表增加外键
  ALTER TABLE TABLENAME
  ADD CONSTRAINT CONSTRAINTNAME
  FOREIGN KEY(COLUMN) REFERENCES TABLE1NAME(COLUMN1);
  1、分析表
  analyze table mzbs.db_code ESTIMATE STATISTICS SAMPLE 20 PERCENT;
  2、表空间管理和用户管理
  --查看表空间和数据文件
  select file_name,tablespace_name,autoextensible from dba_data_files;
  --数据表空间
  CREATE TABLESPACE USER_DATA
  LOGGING
  DATAFILE 'D:ORACLEORADATAORCLtest.DBF' SIZE 50m REUSE ,
  'c:USERS01112.DBF' SIZE 50m REUSE
  AUTOEXTEND
  ON NEXT 1280K MAXSIZE 16383M EXTENT MANAGEMENT LOCAL
  --修改表空间数据文件的路径
  ALTER TABLESPACE app_data
  RENAME
  DATAFILE '/DISK4/app_data_01.dbf'
  TO '/DISK5/app_data_01.dbf';
  ALTER DATABASE
  RENAME FILE '/DISK1/system_01.dbf'
  TO '/DISK2/system_01.dbf';
  --临时表空间
  CREATE TEMPORARY
  TABLESPACE USER_DATA_TEMP TEMPFILE 'D:TEMP0111.DBF'
  SIZE 50M REUSE AUTOEXTEND
  ON NEXT 1024K MAXSIZE 16383M EXTENT MANAGEMENT LOCAL UNIFORM
  SIZE 1024K
  --增加数据文件
  ALTER TABLESPACE USER_DATA
  ADD DATAFILE 'c:USERS01113.DBF' SIZE 50M;
  ALTER TABLESPACE USER_DATA
  ADD DATAFILE 'c:USERS01114.DBF' SIZE 50M
  AUTOEXTEND ON
  ;
  --删除表空间
  DROP TABLESPACE USER_DATA INCLUDING CONTENTS;
  --修改表空间的存储参数
  ALTER TABLESPACE tablespacename
  MINIMUM EXTENT 2M;
  ALTER TABLESPACE tablespacename
  DEFAULT STORAGE (
  INITIAL 2M
  NEXT 2M
  MAXEXTENTS 999 );
  --表空间联机/脱机/只读
  ALTER TABLESPACE tablespacename OFFLINE/ONLINE/READ ONLY;
  --修改数据文件大小
  ALTER DATABASE
  DATAFILE 'c:USERS01113.DBF' RESIZE 40M;
  --创建用户、赋予权限
  CREATE USER USER_DATA PROFILE DEFAULT IDENTIFIED BY USER_DATA
  DEFAULT
  TABLESPACE USER_DATA TEMPORARY
  TABLESPACE USER_DATA ACCOUNT UNLOCK;
  GRANT CONNECT TO USER_DATA;
  GRANT RESOURCE TO USER_DATA;
  3、表的管理
  --创建表
  CREAE TABLE TABLENAME
  (COLUMN1 COLUTYPE DEFAULT(VALUE) NOT NULL)
  (COLUMN2 COLUTYPE DEFAULT(VALUE) NOT NULL);
  --建表的索引存储分配
  CREATE TABLE summit.employee(id NUMBER(7) CONSTRAINT employee_id_pk PRIMARY KEY DEFERRABLE USING INDEX STORAGE(INITIAL 100K NEXT 100K)
  TABLESPACE indx,
  last_name VARCHAR2(25) CONSTRAINT employee_last_name_nn NOT NULL,
  dept_id NUMBER(7))
  TABLESPACE data;
  --修改表的存储分配
  ALTER TABLE tablename
  PCTFREE 30
  PCTUSED 50
  STORAGE(NEXT 500K
  MINEXTENTS 2
  MAXEXTENTS 100);
  ALTER TABLE tablename
  ALLOCATE EXTENT(SIZE 500K
  DATAFILE '/DISK3/DATA01.DBF');
  --把表移到另一个表空间
  ALTER TABLE TABLENAME MOVE TABLESPACE TABLESPACENAME;
  --回收空闲的空间(回收到High-water mark)
  全部回收需要TRUNCATE TABLE tablename
  ALTER TABLE tablename
  DEALLOCATE UNUSED;
  --删除表(连同所用constraint)
  DROP TABLE tablename
  CASCADE CONSTRAINTS;
  --给表增加列
  ALTER TABLE TABLENAME
  ADD COLUMN COLUTYPE DEFAULT(VALUE) NOT NULL;
  --删除表中的列
  ALTER TABLE tablename
  DROP COLUMN columnname;
  ALTER TABLE tablename
  DROP COLUMN columnname
  CASCADE CONSTRAINTS CHECKPOINT 1000;
  --标记列不可用
  ALTER TABLE tablename
  SET UNUSED COLUMN columnname
  CASCADE CONSTRAINTS;
  --删除标记为不可用的列
  ALTER TABLE tablename
  DROP UNUSED COLUMNS CHECKPOINT 1000;
  --继续删除列选项
  ALTER TABLE tablename
  DROP COLUMNS CONTINUE CHECKPOINT 1000;
  --把表放到BUFFER_POOL中去
  ALTER TABLE tablename
  STORAGE (BUFFER_POOL RECYCLE);
  --避免动态分配EXTENT
  ALTER TABLE tablename ALLOCATE EXTENT;
  --把表放到CACHE中去
  ALTER TABLE tablename ALLOCATE CACHE/NOCACHE;
  4、索引管理
  --创建索引
  CREATE INDEX indexname ON TABLENAME(COLUMNNAME);
  CREATE INDEX indexname ON TABLENAME(COLUMNNAME) TABLESPACE TABLESPACENAME;
  --重新建立索引
  ALTER INDEX indexname REBUILD TABLESPACE TABLESPACE;
  --索引分配参数
  ALTER INDEX indexname
  STORAGE(NEXT 400K
  MAXEXTENTS 100);
  --释放索引空间
  ALTER INDEX indexname
  ALLOCATE EXTENT (SIZE 200K
  DATAFILE '/DISK6/indx01.dbf');
  ALTER INDEX indexname
  DEALLOCATE UNUSED;
  --重新整理索引表空间碎片
  ALTER INDEX indexname COALESCE;
  --删除索引
  DROP INDEX indexname
  --把索引放到BUFFER_POOL中
  ALTER INDEX cust_name_idx
  REBUILD
  STORAGE (BUFFER_POOL KEEP);
  5、约束管理
  --建立主键
  ALTER TABLE TABLENAME
  ADD CONSTRAINT CONSTRAINTNAME PRIMARY KEY(COLUMN1,COLUMN2)
  --使约束无效
  ALTER TABLE TABLENAME ENABLE NOVALIDATE CONSTRAINT constraintname;
  ALTER TABLE TABLENAME ENABLE VALIDATE CONSTRAINT constraintname;
  --删除约束
  ALTER TABLE tablename DROP CONSTRAINT constraintname;
  DROP TABLE tablename CASCADE CONSTRAINTS;(删除表后将所用的外键删除)
  --给列增加缺省值
  ALTER TABLE TABLENAME
  MODIFY columnname DEFAULT(value) NOT NULL;
  --给表增加外键
  ALTER TABLE tablename
  ADD CONSTRAINT constraintname
  FOREIGN KEY(column) REFERENCES table1name(column1);
  6、安全策略
  --加密传输
  把客户端环境变量ora_encrypt_login设为true
  把服务器端参数dblink_encypt_login设为true
  --数据库管理员安全策略
  a、建库后立即修改SYS/SYSTEM的口令(9.2后必须修改其口令)
  b、只有数据库管理员才能以SYSDBA登录系统
  c、建立不同角色的管理员,分配不同的权限
  比如:对象创建于维护
  数据库的调整与维护
  创建用户分配角色
  启动关闭
  恢复备份
  --应用开发者的安全策略
  a、开发者的特权只能在测试开发的数据库中赋予权限
  b、自由开发者、受控开发者
  自由开发者:create tableindexprocedurepackage
  受控开发者:没有以上权限
  7、日志文件管理
  --切换日志文件
  ALTER SYSTEM SWITCH LOGFILE;
  --增加日志文件
  ALTER DATABASE ADD LOGFILE
  ('/DISK3/log3a.rdo',
  '/DISK4/log3b.rdo') size 1M;
  --增加日志成员
  ALTER DATABASE ADD LOGFILE MEMBER
  '/DISK4/log1b.rdo' TO GROUP 1
  '/DISK4/log2b.rdo' TO GROUP 2;
  --删除日志文件
  ALTER DATABASE DROP LOGFILE GROUP 3;
  --删除日志成员
  ALTER DATABASE DROP LOGFILE MEMBER '/DISK4/log2b.dbf';
  --清除日志文件内容
  ALTER DATABASE CLEAR LOGFILE '/DISK3/log2a.rdo';
  -->23 09, 2006exp与imp的具体用法作者 fevair 17:24 |
  
   静态链接网址 |
  
   最新回复 (0) |
  
   引用 (0) | oracle数据库开发[收集]
  exp ]mzbs/mzbs@mzbs_61' target='_blank'>]mzbs/mzbs@mzbs_61' target='_blank'>
  你需要写到一个包中:
  create or replace package pag_cs_power as
  type c_Type is ref cursor;
  FUNCTION FUN_CS_GETDICTLIST(
  v_DictIndex in varchar2) return c_Type;
  end pag_cs_power;
  函数代码:
  FUNCTION FUN_CS_GETDICTLIST(
  v_DictIndex in varchar2) return c_Type
  as
  c_cursor c_Type;
  begin
  open c_cursor for
  select DICTID,DICTNAME FROM SYS_DICT WHERE DICTINDEX = v_DictIndex;
  return c_cursor;
  end FUN_CS_GETDICTLIST;
  -->23 09, 2006不安装Oracle客户连接Oracle 8的方法[转载]作者 fevair 17:18 |
  
   静态链接网址 |
  
   最新回复 (0) |
  
   引用 (0) | oracle数据库开发[收集]
  1、不安装Oracle客户连接Oracle 8的方法
  请将以下文件拷贝到运行文件所在目录
  一、ODBC动态库 :
  ctl3d32.dll msvcrt40.dll odbc16gt.dll odbc32.dll odbc32gt.dll odbccp32.dll odbccr32.dll odbcint.dll
  二、建立EXTRA子目录,将MSVCRT.DLL文件拷贝到该子目录下
  EXTRAMSVCRT.DLL
  三、ORACLE动态库及配置文件
  Tnsnames.ora CORE35O.DLL NASNSNT.DLL NAUNTSNT.DLL NCRNT.DLL Nlnt.dll NLSRTL32.DLL Nnfdnt.dll NNFNNT.DLL NSNT.DLL NTNT.DLL NTTNT.DLL CIW32.DLL Ora73.dll OTRACE73.DLL Sqlnet.ora Sqltnsnt.dll CORE35.DLL
  四、PB动态库
  pbvm70.dll pbdwe70.dll Pbo7370.dll PBO8470.DLL pbodb70.dll libjcc.dll
  Oracle的客户端不安装让pb连上,我记得以前有帖子的,你可以搜索一下。
  具体步骤。
  (1).先在某机器上安装好客户端(最好安装在c盘);
  (2).复制此客户端oracle目录下的所有文件作为独立的oracle安装文件;
  (3).搜索注册表,找到 HKey_Local_machinesoftwareoracle,把此项目及分支全部导出。
  (4).打包好你的pb程序,并独立打包好oracle客户端和注册表导出文件。
  (5).到干净的客户端,解开两个包,导入注册表文件,然后加入路径支持:
  path=%path%;"c:Ora817bin"
  这样处理,应该没有问题,因为我就是这样快速处理了几十个机器。
  若不想搞注册表,你可以在程序中自己写注册表,构成Oracle客户端必要的注册表支持,至于路径,手工添加应该不难。
  至于Oracle客户端那些文件不需要,这个不好说,你可以把那些bin目录下的所有exe删除,Oracle Document删除(7x兆)
  至于定义Oracle服务,找到 Ora817net80adminTnsName.ora,参照格式,程序中生成一个也不麻烦。 src='http://blog.itpub.net//templates/blueish/trackback.gif' height='11' width='0' border='0'/> 引用 (0) | oracle数据库开发[收集]
  你需要写到一个包中:
  create or replace package pag_cs_power as
  type c_Type is ref cursor;
  FUNCTION FUN_CS_GETDICTLIST(
  v_DictIndex in varchar2) return c_Type;
  end pag_cs_power;
  函数代码:
  FUNCTION FUN_CS_GETDICTLIST(
  v_DictIndex in varchar2) return c_Type
  as
  c_cursor c_Type;
  begin
  open c_cursor for
  select DICTID,DICTNAME FROM SYS_DICT WHERE DICTINDEX = v_DictIndex;
  return c_cursor;
  end FUN_CS_GETDICTLIST;
  -->23 09, 2006不安装Oracle客户连接Oracle 8的方法[转载]作者 fevair 17:18 |
  
   静态链接网址 |
  
   最新回复 (0) |
  
   引用 (0) | oracle数据库开发[收集]
  1、不安装Oracle客户连接Oracle 8的方法
  请将以下文件拷贝到运行文件所在目录
  一、ODBC动态库 :
  ctl3d32.dll msvcrt40.dll odbc16gt.dll odbc32.dll odbc32gt.dll odbccp32.dll odbccr32.dll odbcint.dll
  二、建立EXTRA子目录,将MSVCRT.DLL文件拷贝到该子目录下
  EXTRAMSVCRT.DLL
  三、ORACLE动态库及配置文件
  Tnsnames.ora CORE35O.DLL NASNSNT.DLL NAUNTSNT.DLL NCRNT.DLL Nlnt.dll NLSRTL32.DLL Nnfdnt.dll NNFNNT.DLL NSNT.DLL NTNT.DLL NTTNT.DLL CIW32.DLL Ora73.dll OTRACE73.DLL Sqlnet.ora Sqltnsnt.dll CORE35.DLL
  四、PB动态库
  pbvm70.dll pbdwe70.dll Pbo7370.dll PBO8470.DLL pbodb70.dll libjcc.dll
  Oracle的客户端不安装让pb连上,我记得以前有帖子的,你可以搜索一下。
  具体步骤。
  (1).先在某机器上安装好客户端(最好安装在c盘);
  (2).复制此客户端oracle目录下的所有文件作为独立的oracle安装文件;
  (3).搜索注册表,找到 HKey_Local_machinesoftwareoracle,把此项目及分支全部导出。
  (4).打包好你的pb程序,并独立打包好oracle客户端和注册表导出文件。
  (5).到干净的客户端,解开两个包,导入注册表文件,然后加入路径支持:
  path=%path%;"c:Ora817bin"
  这样处理,应该没有问题,因为我就是这样快速处理了几十个机器。
  若不想搞注册表,你可以在程序中自己写注册表,构成Oracle客户端必要的注册表支持,至于路径,手工添加应该不难。
  至于Oracle客户端那些文件不需要,这个不好说,你可以把那些bin目录下的所有exe删除,Oracle Document删除(7x兆)
  至于定义Oracle服务,找到 Ora817net80adminTnsName.ora,参照格式,程序中生成一个也不麻烦。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值