0% encontró este documento útil (0 votos)
23 vistas6 páginas

Guía de Comandos para Oracle DB Admins

Cargado por

Carlos Molano
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
23 vistas6 páginas

Guía de Comandos para Oracle DB Admins

Cargado por

Carlos Molano
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

1 0.

-- Datatabase Control Normalmente Database Control está disponible en:


2 [Link]
3
4 -- Si no se ha arrancado, el comando de arranque es:
5 emctl start dbconsole
6
7 emctl stop dbconsole
8
9 -- INSTANCIAS
10 srvctl start instance -d <nombre_base_de_datos> -i <nombre_instancia>
11
12 -- Iniciar una instancia:
13 srvctl start instance -d <nombre_base_de_datos> -i <nombre_instancia>
14
15 -- Iniciar todas las instancias:
16 srvctl start database -d <nombre_base_de_datos>
17
18
19 -- Solo inicia la instancia sin montar la base de datos
20 STARTUP NOMOUNT;
21
22 -- Inicia la instancia y monta la base de datos, carga el control file pero las
datafiles no están accesibles.
23 STARTUP MOUNT;
24
25 -- start open Inicia la instancia, monta la base de datos, y abre los datafiles y
redo log files.
26 STARTUP;
27
28 -- solo los usuarios con privilegios de administrador pueden conectarse.
29 STARTUP RESTRICT;
30
31 -- Forza el inicio de la BD Si la BD ya está en funcionamiento,primero la cierra y
luego la reinicia.
32 STARTUP FORCE;
33
34 -- shutdown normal
35 -- No se permiten nuevas conexiones, pero las conexiones existentes pueden continuar
hasta que finalicen sus tareas.
36 SHUTDOWN NORMAL;
37
38 -- SHUTDOWN IMMEDIATE
39 -- Cierra inmediatamente las conexiones de los usuarios, cancela las transacciones
activas y cierra la base de datos de manera ordenada.
40 SHUTDOWN IMMEDIATE;
41
42 -- SHUTDOWN TRANSACTIONAL
43 -- Permite que las transacciones actuales se completen, pero no se permiten nuevas
transacciones.
44 SHUTDOWN TRANSACTIONAL;
45
46 -- SHUTDOWN ABORT
47 -- Fuerza el cierre inmediato de la base de datos, sin esperar a que finalicen las
transacciones activas.
48 SHUTDOWN ABORT;
49
50 sqlplus username/password@hostname:port/SID
51 /*
52 • username: Tu nombre de usuario de Oracle.
53 • password: Tu contraseña.
54 • hostname: Dirección IP o nombre del host donde está corriendo Oracle.
55 • port: El puerto, normalmente es 1521.
56 • SID: Identificador del servicio de la base de datos Oracle (nombre de la base de
datos).
57 */
58 CONNECT /@servicioRed AS SYSDBA
59
60 -- Conectarse a la instancia en modo nomount
61 CONNECT / AS SYSDBA
62 STARTUP NOMOUNT;
63
64 -- Crear la base de datos
65 CREATE DATABASE ORCL
66 USER SYS IDENTIFIED BY sys_password
67 USER SYSTEM IDENTIFIED BY system_password
68 LOGFILE GROUP 1 ('/u01/oradata/orcl/[Link]') SIZE 50M,
69 GROUP 2 ('/u01/oradata/orcl/[Link]') SIZE 50M,
70 MAXLOGFILES 5
71 MAXLOGMEMBERS 5
72 MAXLOGHISTORY 100
73 MAXDATAFILES 100
74 CHARACTER SET AL32UTF8
75 NATIONAL CHARACTER SET AL16UTF16
76 DATAFILE '/u01/oradata/orcl/[Link]' SIZE 500M REUSE
77 EXTENT MANAGEMENT LOCAL
78 SYSAUX DATAFILE '/u01/oradata/orcl/[Link]' SIZE 100M REUSE
79 DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '/u01/oradata/orcl/[Link]'
80 SIZE 20M REUSE
81 UNDO TABLESPACE undo DATAFILE '/u01/oradata/orcl/[Link]' SIZE 200M REUSE
82 AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED;
83
84 /*Crear un tablespace llamado RECAUDACION que contendrá los datos relativos a la
aplicación:
85 TABLA Recaudacion
86 Datafile /datos/recaudación/[Link]
87 Tamaño Inicial: 1Mbyte
88 Autoextensible: SI
89 Extension: 200KL
90 Tamaño máx: 1400K
91 Inicial 16K
92 Next: 32K
93 Minextes: 1
94 Maextens 3*/
95
96 CREATE TABLESPACE RECAUDACION
97 DATAFILE '/datos/recaudacion/[Link]'
98 SIZE 1M
99 AUTOEXTEND ON
100 NEXT 200K
101 MAXSIZE 1400K
102 EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16K;
103 -- Opcionalmente, puedes especificar parámetros adicionales para la tabla.
104 -- En Oracle, para ajustar MINEXTENTS y MAXEXTENTS en la tabla:
105
106 CREATE TABLE Recaudacion (
107 -- Definición de las columnas )
108 TABLESPACE RECAUDACION
109 STORAGE (
110 INITIAL 16K
111 NEXT 32K
112 MINEXTENTS 1
113 MAXEXTENTS 3
114 );
115
116 CREATE TABLE empleados (
117 id NUMBER(6) PRIMARY KEY, -- Identificador único del empleado (entero de
hasta 6 dígitos)
118 nombre VARCHAR2(50), -- Nombre del empleado (cadena de caracteres
hasta 50)
119 apellido VARCHAR2(50), -- Apellido del empleado (cadena de caracteres
hasta 50)
120 fecha_contratacion DATE, -- Fecha de contratación (tipo DATE)
121 salario NUMBER(10, 2), -- Salario del empleado (hasta 10 dígitos, 2
decimales)
122 departamento_id NUMBER(4), -- ID del departamento al que pertenece el
empleado
123 CONSTRAINT fk_departamento FOREIGN KEY (departamento_id) REFERENCES departamentos(
departamento_id)
124 );
125
126 -- Agregar al tablespace RECAUDACION un archivo llamado “[Link]” de 200M
127 ALTER TABLESPACE RECAUDACION
128 ADD DATAFILE '/datos/recaudacion/[Link]'
129 SIZE 200M;
130
131 /*
132 Renombra los archivos [Link] y [Link] por [Link] y reca2-dbf
respectivamente
133 (desactivar previamente el tablespace, renombrar los archivos correspondientes
134 del sistemas operativos, renombra los ficheros del tablespace y activar el tablespace.
135 Pasos a seguir:
136 1. Desactivar el tablespace (colocar en modo offline).
137 */
138 ALTER TABLESPACE RECAUDACION OFFLINE;
139 -- 2. Renombrar los archivos en el sistema operativo.
140 mv /datos/recaudacion/[Link] /datos/recaudacion/[Link]
141 mv /datos/recaudacion/[Link] /datos/recaudacion/reca2-dbf
142
143 -- 3. Actualizar Oracle para que conozca los nuevos nombres.
144 ALTER DATABASE RENAME FILE '/datos/recaudacion/[Link]' TO
'/datos/recaudacion/[Link]';
145 ALTER DATABASE RENAME FILE '/datos/recaudacion/[Link]' TO
'/datos/recaudacion/reca2-dbf';
146 -- 4. Reactivar el tablespace.
147 ALTER TABLESPACE RECAUDACION ONLINE;
148
149 /*
150 Consulta la correspondiente vista para visualizar los archivos del “tablespace”.
151 Para consultar los archivos asociados a un tablespace en Oracle, se pueden utilizar
la vista DBA_DATA_FILES o V$DATAFILE.
152 Estas vistas contienen información sobre los archivos de datos de los tablespaces.
153 Consulta usando la vista DBA_DATA_FILES:
154 */
155 SELECT FILE_NAME, TABLESPACE_NAME, BYTES, STATUS
156 FROM DBA_DATA_FILES
157 WHERE TABLESPACE_NAME = 'RECAUDACION';
158 /*
159 Campos importantes:
160 • FILE_NAME: Ruta completa del archivo de datos.
161 • TABLESPACE_NAME: Nombre del tablespace al que pertenece el archivo.
162 • BYTES: Tamaño del archivo en bytes.
163 • STATUS: Estado del archivo (online, offline).
164 */
165
166 -- Otra opción es utilizar la vista dinámica V$DATAFILE:
167 SELECT NAME, FILE#
168 FROM V$DATAFILE
169 WHERE TABLESPACE_NAME = 'RECAUDACION';
170
171 /*Campos importantes:
172 • NAME: Ruta del archivo de datos.
173 • FILE#: Número del archivo en el sistema de Oracle.*/
174
175 /*Borra el “tablespace” RECAUDACION y sus ficheros asociados.
176 DROP TABLESPACE con la opción INCLUDING CONTENTS AND DATAFILES.*/
177 DROP TABLESPACE RECAUDACION INCLUDING CONTENTS AND DATAFILES;
178
179 /*Explicación del comando:
180 • DROP TABLESPACE RECAUDACION: Elimina el tablespace RECAUDACION.
181 • INCLUDING CONTENTS: Indica que se deben eliminar todas las tablas y objetos
almacenados en el tablespace.
182 • AND DATAFILES: Elimina los archivos de datos físicos asociados al tablespace del
S.O.*/
183
184 -- Creación usuario
185 CREATE USER nombre {IDENTIFIED BY contraseña |
186 EXTERNALLY |
187 GLOBALLY AS nombreGlobal}
188 [DEFAULT TABLESPACE tableSpacePorDefecto]
189 [TEMPORARY TABLESPACE tableSpacetTemporal]
190 [QUOTA {cantidad [K|M] | UNLIMITED} ON tablespace
191 [QUOTA {cantidad [K|M] | UNLIMITED} ON tablespace […]]
192 ]
193 [PASSWORD EXPIRE]
194 [ACCOUNT {UNLOCK|LOCK}];
195 [PROFILE {perfil | DEFAULT}]
196 /*
197 La sentencia CREATE USER en SQL se utiliza para crear un nuevo usuario en una base de
datos:
198
199 Sintaxis de CREATE USER
200 nombre: El nombre del usuario que se va a crear.
201 IDENTIFIED BY contraseña: Define una contraseña para el usuario. Se debe especificar
si se utiliza autenticación por contraseña.
202 EXTERNALLY: Indica que el usuario se autentica externamente (por ejemplo, mediante
Kerberos).
203 GLOBALLY AS nombreGlobal: Utiliza un nombre global para la autenticación, como en
entornos de directorio LDAP.
204 Opciones adicionales
205 DEFAULT TABLESPACE tableSpacePorDefecto: Especifica el tablespace por defecto donde
se almacenarán los objetos del usuario.
206 TEMPORARY TABLESPACE tableSpacetTemporal: Especifica el tablespace temporal que se
utilizará para las operaciones temporales.
207 QUOTA {cantidad [K|M] | UNLIMITED} ON tablespace: límite de espacio en disco para el
usuario en un tablespace específico kilobytes (K) o megabytes (M).
208 PASSWORD EXPIRE: Indica que la contraseña del usuario debe ser cambiada en el próximo
inicio de sesión.
209 ACCOUNT {UNLOCK|LOCK}: Establece si la cuenta del usuario está desbloqueada o
bloqueada al momento de la creación.
210 PROFILE {perfil | DEFAULT}: Asigna un perfil de usuario, que define límites y
recursos disponibles para el usuario.
211 */
212 CREATE USER jsanchez IDENTIFIED BY Caracola
213 DEFAULT TABLESPACE Usuarios
214 QUOTA 15M ON Usuarios //Se dan 15MBytes de espacio en el tablespace
215 ACCOUNT LOCK; //La cuenta estará bloqueada
216
217 -- Modificacion Usuario
218 ALTER USER jsanchez QUOTA UNLIMITED ON usuarios
219
220 -- Borrar Usuario
221 DROP USER usuario [CASCADE]
222 La opción CASCADE elimina los objetos del esquema del usuario antes de eliminar al
propio usuario. Es obligatorio si el esquema contiene objetos.
223
224 -- Conceder Privilegio
225 GRANT privilegio1 [,privilegio2[,…]] TO usuario
226 [WITH ADMIN OPTION];
227
228 -- Privilegio de objeto
229 GRANT {privilegio [(listaColumnas)] [,privilegio [(listaColumnas)] [,…]] |
230 ALL [PRIVILEGES]}
231 ON [esquema.]objeto
232 TO {usuario | rol | PUBLIC} [,{usuario | rol | PUBLIC} [,…]]
233 [WITH GRANT OPTION]
234
235 GRANT CREATE SESSION, ALTER SESSION, CREATE TABLE,
236 CREATE VIEW, CREATE SYNONYM, CREATE SEQUENCE,
237 CREATE ANY PROCEDURE -- Crear funciones y procedimientos en cualquier esquema
238 CREATE TRIGGER, CREATE PROCEDURE, CREATE TYPE
239 TO jsanchez;
240
241 -- Revocar Privilegio
242 REVOKE privilegio1 [,privilegio2 [,…]] FROM usuario;
243
244 -- Consultar los privilegios del usuario actual:
245 SELECT *
246 FROM USER_SYS_PRIVS;
247
248 -- Privilegios de sistema concedidos a usuarios y roles
249 SELECT *
250 FROM DBA_SYS_PRIVS;
251
252 SELECT *
253 FROM DBA_SYS_PRIVS
254 WHERE GRANTEE = 'NOMBRE_USUARIO';
255
256 -- Creación de Tabla
257 Creacion de tabla
258 CREATE TABLE ITV_Vehiculo (
259 ID_VEHIC NUMBER,
260 VEH_ID_MARCA NUMBER,
261 VEH_ID_MODELO NUMBER,
262 VEH_ID_COMBUSTIBLE NUMBER,
263 VEH_ANTIGUEDAD NUMBER,
264 VEH_ALMACENBINARIO CLOB,-- Almacena grandes cantidades de datos de texto (hasta 4
GB).
265 VEH_FECHA DATE,
266 VEH_RESULTADO VARCHAR2(10),
267 CONSTRAINT PK_ITV_Vehiculo PRIMARY KEY (ID_VEHIC),
268 CONSTRAINT FK_ITV_Marca FOREIGN KEY (VEH_ID_MARCA) REFERENCES Marca (ld_marca),
269 CONSTRAINT FK_ITV_Modelo FOREIGN KEY (VEH_ID_MODELO) REFERENCES Modelo (ld_modelo),
270 CONSTRAINT FK_ITV_Combustible FOREIGN KEY (VEH_ID_COMBUSTIBLE) REFERENCES
Combustible (ld_comb));
271
272 /*La tabla debe tener un índice secuencial que se obtendrá de una secuencia.
273 Crear la secuencia (VEH_SEQUENCE) mediante PL/SQL. */
274
275 BEGIN
276 EXECUTE IMMEDIATE 'CREATE SEQUENCE
277 VEH_SEQUENCE START WITH 1
278 INCREMENT BY 1
279 NOCACHE NOCYCLE';
280 END;
281
282 -- Crear una tabla en la base de datos de Oracle mediante
283 CREATE TABLE ITV_Vehiculo (
284 ID_VEHIC NUMBER,
285 VEH_ID_MARCA NUMBER,
286 VEH_ID_MODELO NUMBER,
287 VEH_ID_COMBUSTIBLE NUMBER,
288 VEH_ANTIGUEDAD NUMBER,
289 VEH_FECHA DATE,
290 VEH_RESULTADO VARCHAR2(10),
291 CONSTRAINT PK_ITV_Vehiculo PRIMARY KEY (ID_VEHIC),
292 CONSTRAINT FK_ITV_Marca FOREIGN KEY (VEH_ID_MARCA) REFERENCES Marca (ld_marca),
293 CONSTRAINT FK_ITV_Modelo FOREIGN KEY (VEH_ID_MODELO) REFERENCES Modelo (ld_modelo),
294 CONSTRAINT FK_ITV_Combustible FOREIGN KEY (VEH_ID_COMBUSTIBLE) REFERENCES
Combustible (ld_comb)
295 );
296
297 -- La tabla debe tener un índice secuencial que se obtendrá de una secuencia.
298 ---Crear la secuencia (VEH_SEQUENCE)
299 BEGIN
300 EXECUTE IMMEDIATE 'CREATE SEQUENCE
301 VEH_SEQUENCE START WITH 1
302 INCREMENT BY 1
303 NOCACHE NOCYCLE';
304 END
305
306 /*Queremos eliminar de la tabla de marcas (ITV_MARCA), la marca "Aston Martin",
307 ya que en Extremadura no hemos encontrado este tipo de marca.
308 Crear un package completo en Oracle, mediante PL/SQL, PKG_MARCA, que contenga una
función FU_DEL_MARCA.
309 La función FU_DEL_MARCA debe eliminar de la tabla de marcas (ITV:....MARCA), la marca
que se le pase en una variable vMarca.
310 Si, al borrar, existiese un vehículo de dicha marca, daría un error. Para evitarlo,
311 incluir un control de excepción en dicha función que permita mostrar un aviso (es
suficiente poner un mensaje con dbms). */
312
313 -- Especificación del package
314 CREATE OR REPLACE PACKAGE PKG_MARCA AS
315 FUNCTION FU_DEL_MARCA(vMarca IN VARCHAR2) RETURN VARCHAR2;
316 END PKG_MARCA;
317 /
318
319 -- Cuerpo del package
320 CREATE OR REPLACE PACKAGE BODY PKG_MARCA AS
321
322 FUNCTION FU_DEL_MARCA(vMarca IN VARCHAR2) RETURN VARCHAR2 IS
323 BEGIN
324 -- Intentar eliminar la marca de la tabla ITV_MARCA
325 DELETE FROM ITV_MARCA
326 WHERE nombre_marca = vMarca; -- Asegúrate de que 'nombre_marca' es el nombre de
la columna
327
328 -- Confirmar la eliminación
329 IF SQL%ROWCOUNT = 0 THEN
330 RETURN 'No se encontró la marca ' || vMarca || ' para eliminar.';
331 ELSE
332 RETURN 'Marca ' || vMarca || ' eliminada correctamente.';
333 END IF;
334
335 EXCEPTION
336 WHEN OTHERS THEN
337 -- Control de excepción si hay un error, como clave foránea
338 DBMS_OUTPUT.PUT_LINE('Error al eliminar la marca: ' || SQLERRM);
339 RETURN 'Error al eliminar la marca. Puede que existan vehículos asociados.';
340 END FU_DEL_MARCA;
341
342 END PKG_MARCA;
343 /
344
345 -- Paquete
346
347 CREATE OR REPLACE PACKAGE EMPLEADO_PKG AS
348 PROCEDURE ADD_EMPLEADO(p_nombre IN VARCHAR2, p_salario IN NUMBER);
349 PROCEDURE DELETE_EMPLEADO(p_id IN NUMBER);
350 FUNCTION GET_SALARIO(p_id IN NUMBER) RETURN NUMBER;
351 END EMPLEADO_PKG;
352 /
353
354 /*
355 Dar acceso de lectura a la tabla vehículo (ITV_VEHICULO) a dos usuarios, "valenzuela"
y "rbrito" con
356 instrucciones del lenguaje de control de datos (SQL DCL), permitiendo que rbrito
pueda conceder el
357 permiso de lectura a otros usuarios a su vez */
358 -- Conceder acceso de lectura a usuario
359 GRANT SELECT ON ITV_VEHICULO TO usuario;
360
361 -- Conceder acceso de lectura a rbrito con la opción de conceder a otros
362 GRANT SELECT ON ITV_VEHICULO TO rbrito WITH GRANT OPTION;
363
364 -- Conceder permiso de ejecución al usuario "bito" sobre el paquete creado en el
punto
365 GRANT EXECUTE ON PKG_MARCA TO bito;
366
367 -- Retirar el permiso de lectura al usuario "bito" a la tabla vehículo
368 REVOKE SELECT ON ITV_VEHICULO FROM bito;
369
370 /*
371 Crear un disparador TRG_FAIL, que inserte en la tabla ITV_FAIL, el código de vehículo
(ID_VEHIC) y
372 la fecha (VEH_FECHA) tabla ITV_VEHICULO cuando el vehículo no haya pasado la ITV
(VEH_RESULTADO <> "Correcto")*/
373 CREATE OR REPLACE TRIGGER TRG_FAIL
374 AFTER INSERT ON ITV_VEHICULO
375 FOR EACH ROW
376 BEGIN
377 -- Comprobar si el resultado de la ITV no es "Correcto"
378 IF :NEW.VEH_RESULTADO <> 'Correcto' THEN
379 INSERT INTO ITV_FAIL (ID_VEHIC, VEH_FECHA)
380 VALUES (:NEW.ID_VEHIC, :NEW.VEH_FECHA);
381 END IF;
382 END TRG_FAIL;
383 /

También podría gustarte